赞
踩
version catalogs是AGP7.0之后推出的一种依赖版本管理的方式;
环境工具 | 最低版本 |
---|---|
Android-gradle-plugin | 7.0 |
SDK Build TOOL | 30.0.0 |
NDK | 23.1.XXX |
JDK | 11 |
Gradle Wrapper | 7.0 |
版本管理类型 | 类型描述 | 举例 | 用法举例app/build.gradle |
---|---|---|---|
library | aar、jar版本管理 | library(‘appcompat’, ‘androidx.appcompat’, ‘appcompat’).version(‘1.4.1’) | api libs.appcompat |
bundle | 依赖聚合管理 | bundle(“androidx”, [“'appcompat”," fragment"]) | api libs.bundles.androidx |
version | 版本号常量管理 | version('compilesdk", ‘33’) | compilesdk:libs.versions.compilesdk.toInt() |
plugin | gradle插件版本管理 | plugin(" agp", " com.android.tools.build:gradle").version(“1.7.0”) | id : libs.plugins.agp |
enableFeaturePreview('VERSION_CATALOGS')
这一步,在gradle8.0以后不需要,7.0的时候还需要设置一下;
1、在setting.gradle中做如下操作
enableFeaturePreview('VERSION_CATALOGS')//8.0的不需要这个 dependencyResolutionManagement { // 配置项目下载的maven源 repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } //引入versionCatalogs versionCatalogs { //创建分组 create('androidxLibs') { //library的参数分别对应 别名、group、artifact、version library('core-ktx', 'androidx.core', 'core-ktx').version('1.8.0') library('appcompat', 'androidx.appcompat', 'appcompat').version('1.4.1') library('constraintlayout', 'androidx.constraintlayout', 'constraintlayout').version('2.1.3') } } }
2,比如在app模块中引入library依赖
dependencies {
implementation androidxLibs.core.ktx
implementation androidxLibs.appcompat
implementation androidxLibs.constraintlayout
}
1、在setting.gradle中做如下操作
enableFeaturePreview('VERSION_CATALOGS')//8.0的不需要这个 dependencyResolutionManagement { // 配置项目下载的maven源 repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } //引入versionCatalogs versionCatalogs { //创建分组 create('androidxLibs') { //library的参数分别对应 别名、group、artifact、version library('core-ktx', 'androidx.core', 'core-ktx').version('1.8.0') library('appcompat', 'androidx.appcompat', 'appcompat').version('1.4.1') library('constraintlayout', 'androidx.constraintlayout', 'constraintlayout').version('2.1.3') // androidX通用依赖 bundle('androidx', ["core-ktx", 'appcompat', 'constraintlayout']) } } }
2,比如在app模块中引入bundle依赖
dependencies {
implementation androidxLibs.bundles.androidx
}
1、在setting.gradle中做如下操作
enableFeaturePreview('VERSION_CATALOGS')//8.0的不需要这个 dependencyResolutionManagement { // 配置项目下载的maven源 repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } //引入versionCatalogs versionCatalogs { //创建分组 /** * 在app/build.gradle中 * compileSdk:buildsdk.versions.compilesdk.get().toInteger() */ create('buildsdk') { version('compileSdk', '33') version('minSdk', '24') version('targetSdk', '33') } } }
2,比如在app模块中引入version依赖
android {
namespace 'com.version.catalogs'
compileSdk buildsdk.versions.compileSdk.get().toInteger()//引入
defaultConfig {
applicationId "com.version.catalogs"
minSdk buildsdk.versions.minSdk.get().toInteger()//引入
targetSdk buildsdk.versions.targetSdk.get().toInteger()//引入
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
versionCatalogs下载插件是从gradlePluginPotal仓库中下载的;
1、在setting.gradle中做如下操作
enableFeaturePreview('VERSION_CATALOGS')//8.0的不需要这个 dependencyResolutionManagement { // 配置项目下载的maven源 repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() } //引入versionCatalogs versionCatalogs { //1、只需在app/build.gradle中alias(pluginLibs.plugins.hilt.android)即可 create('pluginLibs') { plugin('hilt-android', 'com.google.dagger.hilt.android').version('2.41') } } }
2,比如在app模块中引入plugin依赖[app.gradle]
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
alias(pluginLibs.plugins.hilt.android)
}
1、在项目的build.gradle模块中加入老的依赖
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
dependencies {
// 对于没有发布到gradlePluginPortal的插件,暂时沿用老的模式,即buildScript { dependencies{ classpath 'xxx.xxx.xxx:1.0.0'}}
classpath 'com.alibaba:arouter-register:1.0.2'
}
}
plugins {
id 'com.android.application' version '8.0.1' apply false
id 'com.android.library' version '8.0.1' apply false
id 'org.jetbrains.kotlin.android' version '1.8.20' apply false
}
2、在app模块引入
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
alias(pluginLibs.plugins.hilt.android)
id 'com.alibaba.arouter'
}
以上是一种依赖版本管理的方式,还有一种以为文件的形式进行管理;
如下图
代码如下:
[versions] compileSdk = '33' minSdk = '24' targetSdk = '33' [plugins] android-application = { id = "com.android.application", version = "7.4.1" } android-library = { id = "com.android.library", version = "7.4.1" } [libraries] appcompat = { module = "androidx.appcompat:appcompat", version = "1.4.1" } material = { module = "com.google.android.material:material", version = "1.5.0" } core-ktx = { module = "androidx.core:core-ktx", version = "1.7.0" } [bundles] androidx = ['appcompat', 'material', 'core-ktx']
//开启version-catalogs,新版本8.0不需要這句話 enableFeaturePreview('VERSION_CATALOGS') dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { mavenLocal() google() mavenCentral() } //使用versionCatalogs标签 versionCatalogs { //把libs.version.toml文件加加载进来來 create('libs') { from(files("libs.version.toml")) } } }
使用依赖
dependencies {
//以library方式引入依赖
implementation libs.appcompat
implementation libs.material
implementation libs.core.ktx
//以bundle方式引入依赖
implementation libs.bundles.androidx
}
使用插件
plugins { //id 'com.android.application' id 'org.jetbrains.kotlin.android' alias libs.plugins.android.application } android { namespace 'xxxxxx' compileSdk libs.versions.compileSdk.get().toInteger() defaultConfig { applicationId "xxxxxxx" minSdk libs.versions.minSdk.get().toInteger() targetSdk libs.versions.targetSdk.get().toInteger() versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。