VersionCatalog是Android在Gradle 7.0推出的一种全新办理一致版别的方法,它较以前的Groovy、buildSrc和includeBuild方法仍是有所差异,它能够更好的去协助开发者办理项目的依靠版别。在最新的Android Studio Giraffe | 2022.3.1中新建项目时,会出现下图选项,能够让开发者选择Version Catalog方法,不过后面仍是标注了Experimental(实验性)。

创建VersionCatalog方法的项目

下面咱们新建一个项目来感触下Version Catalog方法。

使用Google推荐的VersionCatalog管理统一版本

项目新建好之后,能够在gradle目录下面看到lib.versions.toml文件,此文件便是界说办理所有的一致版别和依靠目标。

使用Google推荐的VersionCatalog管理统一版本

文件内部只要有四种分类:

  • [versions]:用于声明项目中依靠项引证的版别号
  • [libraries]:用于声明依靠项的详细信息,包含依靠项的组织、称号和版别,此版别可直接引证versions中的值
  • [plugins]:用于声明插件的详细信息,包含插件的id和版别,此版别也可直接引证versions中的值
  • [bundles]:这个比较有趣,它能够声明一组依靠,它能够将多个依靠项组合在一起,便利后续的增加
基本用法

下面咱们来看下详细的玩法,以增加Retrofit为例感觉下VersionCatalog的写法,先在toml文件中将版别和依靠项详细信息界说好

[versions]
retrofit-version = "2.9.0"
[libraries]
retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit-version" }

然后就能够在模块的build.gradle.kts文件中增加对应的依靠引证

dependencies {
	implementation(libs.retrofit)
}

完成上面的操作之后,sync下项目就能够将retrofit增加到项目当中了。

versions部分不需求多加解释,它便是界说好retrofit的版别号罢了,在libraries中需求注意下group和name的信息,这两个对应的时依靠项的组织和称号,也便是咱们最原始方法com.squareup.retrofit2:retrofit:2.9.0中前面的信息,group对应的是第一个冒号前的信息,name对应的是两个冒号之间的信息,然后version.ref直接将versions中界说好的版别号赋值上去即可。对应联系如下图所示:

使用Google推荐的VersionCatalog管理统一版本

bundles用法

学习了单个依靠的增加方法之后,咱们再来看看bundles的用法,结合retrofit的依靠再增加下converter-gson依靠,毕竟这两个基本是绑定在一起运用的(运用Gson处理接口返回数据的前提下)

[versions]
retrofit-version = "2.9.0"
[libraries]
retrofit = { group = "com.squareup.retrofit2", name = "retrofit", version.ref = "retrofit-version" }
retrofit-gson = { group = "com.squareup.retrofit2", name = "converter-gson", version.ref = "retrofit-version" }
[bundles]
retrofit-bundles = ["retrofit", "retrofit-gson"]

因为converter-gson和retrofit版别号是一致的,所以不用再单独的增加versions信息,只需求在libraries中增加converter-gson详细信息即可。

然后在bundles中将retrofit和retrofit-gson装备到单独的数组中,这样就能够在build.gradle经过libs.bundles.retrofit.bundles对其两个同时引证。

dependencies {
	implementation(libs.bundles.retrofit.bundles)
}

这方法在我眼里绝对是个开发者的福利,不仅仅是retrofit需求这样的同组增加依靠,还有room、Compose、lifecycle系列等都能够选用这样的方法进行大批量的依靠增加,这样咱们在新建模块增加依靠时就不至于丢三落四了。

plugins运用

VersionCatalog不仅仅能够办理三方库的依靠项,还能够对plugins进行一致办理,在toml文件中有plugins部门专门对插件的版别依靠进行办理,下面咱们体会下

[versions]
org-jetbrains-kotlin-android = "1.8.10"
[plugins]
org-jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "org-jetbrains-kotlin-android" }

上面代码中咱们先将kotlin的版别1.8.10在versions中界说好,然后在plugins中将kotlin的插件详细信息界说完善,最后就能够直接在根目录的build.gradle.kts中对其引证

plugins {
    alias(libs.plugins.org.jetbrains.kotlin.android) apply false
}

在build.gradle.kts文件的plugins中选用别名alias形式履行toml文件中的org-jetbrains-kotlin-android即可,注意需求将-转成.的形式,这和咱们之前的id 'org.jetbrains.kotlin.android' version '1.8.10' apply false方法仍是有点差异的,从写法上面来看toml的方法变得更为简洁了,而且咱们也能够将各模块下build.gradle.kts中plugins信息履行toml界说好的插件。

// toml形式
plugins {
    alias(libs.plugins.org.jetbrains.kotlin.android)
}
// 未运用toml形式
plugins {
    id 'org.jetbrains.kotlin.android'
}

这样就能够在toml文件中界说一次,后续通用即可,十分棒的规划。

VersionCatalog额定的优势和劣势

在Android Studio Giraffe | 2022.3.1版别中,咱们能够直接在toml文件中观察到依靠项有没有新版别的提示,详细作用看下方图片:

使用Google推荐的VersionCatalog管理统一版本

比如core-ktx库咱们界说的是1.9.0版别,可是最新版别现已为1.10.1,在对应的版别号中会有高亮提示,提醒开发者此库有新的版别,能够进行option+enter一键修改。

可是截止Android Studio Giraffe | 2022.3.1版别,还不支撑从toml一键跳转到对应的引证处,无法查看在哪些地方对其引证了,后续的Android StudioHedgehog或许会将此功能加上,到时候VersionCatalog会更加智能。

到这为止VersionCatalog基本的运用知识现已介绍完了,我们如果感兴趣能够去新建项目体验下,整体的运用进程仍是比较舒服的,而且官方的示例Now In Android项目也选用这种方法办理项目的一致版别,后续Google应该会都选用此方法。感谢我们的阅览!

关于我

我是Taonce,如果觉得本文对你有所协助,帮忙关注、赞或者保藏三连一下,谢谢~

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。