1、首先将Gradle切换为Gradle8.0
在gradle-wrapper.properties中设置引用gradle-8.0-all.zip,请注意不要引入gradle-8.0-bin.zip,这样会导致在编辑gradle时没有代码提示,问题详见 点我查看详情
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-all.zip
2、在app同级目录下新建一个toml文件
例如创建文件 project.version.toml
注意,实操时建议使用 libs.version.tmol
作为文件名,Gradle 默认在 libs.versions.toml 文件中查找目录,因此建议使用这个默认名称。
将以下内容复制到文件project.version.toml中
compileSdk = "33"
minSdk = "24"
targetSdk = "33"
versionCode = "1"
versionName = "1.0"
coreKtx = "1.10.1"
lifecycleRuntimeKtx = "2.6.1"
appcompat = "1.6.1"
material = "1.9.0"
constraintlayout = "2.1.4"
[libraries]
coreKtx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
lifecycleRuntimeKtx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycleRuntimeKtx" }
appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
material = { module = "com.google.android.material:material", version.ref = "material"}
constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
[bundles]
andorid_base = ["coreKtx","lifecycleRuntimeKtx","appcompat","material","constraintlayout"]
[plugins]
application = { id = "com.android.application"}
注意: bundles中的内容和libraries中的条目有关联,
比如你将 coreKtx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
改为 coreKtx2222 = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
就要在bundles中将 coreKtx 改为 coreKtx2222
3、引入文件
来到settings.gradle.kts文件中
在dependencyResolutionManagement标签内加入
versionCatalogs {
create("libs") {
from(files("./project.version.toml"))
}
}
整体文件如下:
pluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
versionCatalogs {
create("libs") {
from(files("./project.version.toml"))
}
}
}
rootProject.name = "test"
include(":app")
4、使用方法
接着来到build.gradle.kts(app下的)
注意:如果出现敲完libs后点不出来后面的内容,没有任何提示的情况,则参考 我 进行解决
Example ↧
1)以 core-ktx 依赖为例:
implementation("androidx.core:core-ktx:1.10.1")
改为
implementation(libs.coreKtx)
即可完成替代
2)以 compileSdk 版本号为例:
compileSdk = 33
改为
compileSdk = libs.versions.compileSdk.get().toInt()
即可完成替代
3)你可能注意到了,toml文件里有个bundles,其中有一个andorid_base
andorid_base中包含的内容可以直接一次性引入,如下
implementation(libs.bundles.andorid.base)
与project.version.toml中的内容比较一下
andorid_base = ["coreKtx","lifecycleRuntimeKtx","appcompat","material","constraintlayout"]
implementation(libs.bundles.andorid.base)
相当于↧implementation(libs.coreKtx)
implementation(libs.lifecycleRuntimeKtx)
implementation(libs.appcompat)
implementation(libs.material)
implementation(libs.constraintlayout)
4)请注意,如果你在toml文件中的名称使用了下划线'_'或者分隔符'-',就要在使用时以点来代替,例如:
将toml文件中的 coreKtx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
改为 androidx_core_ktx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
那么使用时就要如此调用 implementation(libs.androidx.core.ktx)