前言
官方文档
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还不知道存放的位置
我这里是下载了好久才成功。
配置镜像
Gradle自身镜像
gradle/wrapper/gradle-wrapper.properties
1 2 3 4 5 6
| distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-8.13-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists
|
依赖镜像
Groovy
找到项目下的build.gradle文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| pluginManagement { repositories { maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/apache-snapshots' } google() mavenCentral() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/apache-snapshots' } maven { url 'http://download.flutter.io' } google() mavenCentral() } }
|
支持Flutter
1
| maven { url 'http://download.flutter.io' }
|
KTS
settings.gradle.kts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| pluginManagement { repositories { maven("https://maven.aliyun.com/repository/central") maven("https://maven.aliyun.com/repository/public") maven ("https://maven.aliyun.com/repository/gradle-plugin") maven ("https://maven.aliyun.com/repository/apache-snapshots") google() gradlePluginPortal() } } dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { maven("https://maven.aliyun.com/repository/central") maven("https://maven.aliyun.com/repository/public") maven("https://maven.aliyun.com/repository/gradle-plugin") maven("https://maven.aliyun.com/repository/apache-snapshots") maven("http://download.flutter.io") { // 信任http协议 isAllowInsecureProtocol = true } google() } }
|
支持Flutter
1 2 3 4
| maven("http://download.flutter.io") { // 信任http协议 isAllowInsecureProtocol = true }
|
构建速度
大致测试了一下,新建项目进行构建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")
|