依赖管理 → Version Catalog
老写法(Groovy --- 散落各处的版本号)
groovy
// app/build.gradle
implementation 'androidx.core:core-ktx:1.12.0'
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.google.code.gson:gson:2.10.1'
// 或者抽到 ext 里
ext {
retrofitVersion = '2.9.0'
gsonVersion = '2.10.1'
}
// implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
问题在哪里
版本号散落在每个 module 的 build.gradle 里,同一个库两个 module 可能用了不同版本。ext 方式没有 IDE 自动补全,只能手动敲,容易敲错。
新写法(Version Catalog)
gradle/libs.versions.toml:
toml
[versions]
retrofit = "2.9.0"
gson = "2.10.1"
coreKtx = "1.12.0"
[libraries]
retrofit = { module = "com.squareup.retrofit2:retrofit", version.ref = "retrofit" }
gson = { module = "com.google.code.gson:gson", version.ref = "gson" }
coreKtx = { module = "androidx.core:core-ktx", version.ref = "coreKtx" }
使用:
kotlin
dependencies {
implementation(libs.retrofit)
implementation(libs.gson)
implementation(libs.coreKtx)
}
一句话注意
Version Catalog 是 Gradle 7.0+ 的原生特性,不需要额外插件。所有依赖和版本集中在 libs.versions.toml 一个文件里,IDE 对 libs.xxx 有完整的代码补全和跳转。多 module 项目下,一个库的版本升级只需要改 TOML 里一个地方。
libs.versions.toml 里可以用 [bundles] 把常用的一组依赖打包:
toml
[bundles]
network = ["retrofit", "gson", "okhttp"]
使用时就一行:implementation(libs.bundles.network)。
Java Android 老项目迁移系列,持续更新中。