当前位置:   article > 正文

Android版本依赖Version catalog_libs.versions.toml

libs.versions.toml

曾经我们使用config.gradle文件进行版本依赖配置,然后在project的build.gradle.kts中使用如下方式引入:

apply(from = "./config.gradle")

缺点:在project的module中引用无任何提示,无法跳转到指定引用

一、创建version catalog文件

创建catalog文件步骤如上图,名称使用默认名libs(也可以修改名称,在settings中引入的时候使用修改的文件明就行)创建libs.version.toml

此文件生成之后在如下目录,此时文件不用在settings.gradle中进行配置,如果文件名不是libs还是需要自行引入。

建议:文件名仍然使用libs,但是将文件libs.versions.toml移动到Project的根目录,然后在settings.gradle中显示引入。

版本目录TOML文件格式,TOML 文件由 4 个主要部分组成

  1. [versions] 用于声明可以被依赖项引用的版本
  2. [libraries] 用于声明引用的依赖包的别名
  3. [bundles] 用于声明依赖包,可以将步骤2中定义的依赖包统一引入
  4. [plugins] 用于声明插件

举例:

  1. [versions]
  2. groovy = "3.0.5"
  3. ksp = "1.9.21-1.0.16"
  4. [libraries]
  5. groovy-core = { module = "org.codehaus.groovy:groovy", version.ref = "groovy" }
  6. groovy-json = { module = "org.codehaus.groovy:groovy-json", version.ref = "groovy" }
  7. groovy-nio = { module = "org.codehaus.groovy:groovy-nio", version.ref = "groovy" }
  8. [bundles]
  9. groovy = ["groovy-core", "groovy-json", "groovy-nio"]
  10. [plugins]
  11. ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }

例如在app.module中可以单独引入 libraties中的依赖包或者引入bundles中的一组依赖包

  1. dependencies {
  2. implementation(libs.bundles.groovy)
  3. // 或者分开引入
  4. implementation(libs.groovy.core)
  5. implementation(libs.groovy.json)
  6. implementation(libs.groovy.nio)
  7. }

二、Settings.gradle中引入libs.versions.toml

  1. dependencyResolutionManagement {
  2. ......
  3. // 引入Catalogs
  4. versionCatalogs {
  5. create("libs") {
  6. from(files("./libs.versions.toml"))
  7. }
  8. }
  9. }

三、在project build.gradle和module的build.gradle都能开始使用

libs.versions.toml文件

  1. [versions]
  2. compileSdk = "34"
  3. minSdk = "24"
  4. targetSdk = "34"
  5. versionCode = "1"
  6. versionName = "1.0"
  7. # 插件
  8. application = "8.3.2"
  9. kotlin = "1.9.10"
  10. ksp = "1.9.21-1.0.16"
  11. # 三方库
  12. core-ktx = "1.10.1"
  13. appcompat = "1.6.1"
  14. material = "1.10.0"
  15. constraintlayout = "2.1.4"
  16. junit = "4.13.2"
  17. android-junit = "1.1.5"
  18. espresso-core = "3.5.1"
  19. room = "2.5.1"
  20. moshi = "1.15.1"
  21. [libraries]
  22. core-ktx = { module = "androidx.core:core-ktx", version.ref = "core-ktx" }
  23. appcompat = { module = "androidx.appcompat:appcompat", version.ref = "appcompat" }
  24. material = { module = "com.google.android.material:material", version.ref = "material" }
  25. constraintlayout = { module = "androidx.constraintlayout:constraintlayout", version.ref = "constraintlayout" }
  26. junit = { module = "junit:junit", version.ref = "junit" }
  27. android-junit = { module = "androidx.test.ext:junit", version.ref = "android-junit" }
  28. espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso-core" }
  29. room-runtime = { module = "androidx.room:room-runtime", version.ref = "room" }
  30. room-compiler = { module = "androidx.room:room-compiler", version.ref = "room" }
  31. room-ktx = { module = "androidx.room:room-ktx", version.ref = "room" }
  32. room-testing = { module = "androidx.room:room-testing", version.ref = "room" }
  33. moshi = { module = "com.squareup.moshi:moshi-kotlin-codegen", version.ref = "moshi" }
  34. [bundles]
  35. room = ["room-runtime"]
  36. [plugins]
  37. application = { id = "com.android.application", version.ref = "application" }
  38. kotlin = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
  39. ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" }

3.1 引用插件

Project build.gradle

  1. plugins {
  2. alias(libs.plugins.application) apply false
  3. alias(libs.plugins.kotlin) apply false
  4. alias(libs.plugins.ksp) apply false
  5. }

App module build.gradle

  1. plugins {
  2. alias(libs.plugins.application)
  3. alias(libs.plugins.kotlin)
  4. alias(libs.plugins.ksp)
  5. }

3.2 引入版本

  1. android {
  2. compileSdk = libs.versions.compileSdk.get().toInt()
  3. defaultConfig {
  4. applicationId = "xxxxxx"
  5. minSdk = libs.versions.minSdk.get().toInt()
  6. targetSdk = libs.versions.targetSdk.get().toInt()
  7. versionCode = libs.versions.versionCode.get().toInt()
  8. versionName = libs.versions.versionName.get()
  9. }
  10. }

3.3 引入依赖

  1. dependencies {
  2. implementation(libs.core.ktx)
  3. implementation(libs.appcompat)
  4. implementation(libs.material)
  5. implementation(libs.constraintlayout)
  6. testImplementation(libs.junit)
  7. androidTestImplementation(libs.android.junit)
  8. androidTestImplementation(libs.espresso.core)
  9. // Room
  10. implementation(libs.room.runtime)
  11. annotationProcessor(libs.room.compiler)
  12. // To use Kotlin Symbol Processing (KSP)
  13. ksp(libs.room.compiler)
  14. // optional - Kotlin Extensions and Coroutines support for Room
  15. implementation(libs.room.ktx)
  16. // 测试数据库
  17. testImplementation(libs.room.testing)
  18. // moshi
  19. ksp(libs.moshi)
  20. }

代码:PractiseProject

参考

Android中国官网:将 build 迁移到版本目录

android官网:将 build 迁移到版本目录

Sharing dependency versions between projects

Using Plugins

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/918586
推荐阅读
相关标签
  

闽ICP备14008679号