前言
官方文档
https://developer.android.google.cn/studio/build/migrate-to-kts.html?hl=tr
使用新版的AS创建项目的时候,默认的构建配置已经是KTS,不再是之前的Groovy。
两者配置变化还是不小的,这里汇总一下变化及优缺点。
新建项目的时候
Groovy只需要下载gradle-8.0-bin.zip
而KTS则需要下载gradle-8.0-bin.zip
和gradle-8.0-src.zip
两个下载都很慢
我们可以使用镜像下载
https://mirrors.cloud.tencent.com/
gradle-8.0-bin.zip 放在类似这样的路径下
C:\Users\Administrator.gradle\wrapper\dists\gradle-8.0-bin\ca5e32bp14vu59qr306oxotwh
但是gradle-8.0-src.zip
还不知道存放的位置
我这里是下载了好久才成功。
配置镜像
Groovy
找到项目下的build.gradle
文件
1 | pluginManagement { |
支持Flutter
1 | maven { url 'http://download.flutter.io' } |
KTS
settings.gradle.kts
1 | pluginManagement { |
支持Flutter
1 | maven("http://download.flutter.io") { |
构建速度
大致测试了一下,新建项目进行构建KTS用了12秒,Groovy用了8秒。
整体符合网上别人给出的相对专业的测试。
Groovy整体的性能还是高于KTS的。
再加上现在大多数还是使用Groovy方式,不建议切换到KTS,找资料方便。
如果是喜欢折腾,还是建议进行切换的,毕竟这是官方推荐的,肯定会越来越好。
他人的测试结果
针对Gradle 7.4版本,我们通过以下3个用例来分析KTS性能
- 首次运行(即清除所有build cache)
- buildSrc abi 更改(支持的abi发生变化,可以理解为大多数缓存失效,大部分代码需要重新编译)
- buildSrc 非 abi 更改(即buildSrc中的普通修改)
结论
从这个测试结果来看,是可以迁移到KTS的,比较平常开发的时候大部分都是非ABI change,KTS的提升还是挺明显的。
ABI change
如果模块的外部接口发生了改变,那么所有依赖了该 module 的其他 module 都需要重新编译,这就使得编译时间变长了。
添加依赖
Groovy
1 | implementation 'com.github.judemanutd:katexview:1.0.2' |
KTS
1 | implementation("com.github.judemanutd:katexview:1.0.2") |