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

图1 gradle版本引入示意图

2、在app同级目录下新建一个toml文件

例如创建文件 project.version.toml

注意,实操时建议使用 libs.version.tmol作为文件名,Gradle 默认在 libs.versions.toml 文件中查找目录,因此建议使用这个默认名称。

图2 创建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)



LAST : 如果有误,请在评论中指出