Kotlin 1.5版本构建速度显著慢于1.4,该如何排查解决?
Kotlin 1.4.x升级到1.5.x后大项目配置阶段耗时暴涨是已知的共性问题,核心由Kotlin Gradle插件(KGP)1.5系列的特性变更、与AGP 7的兼容缺陷导致,以下是具体排查方向和解决方案:
排查方向
- 定位配置阶段耗时点:执行
./gradlew help --profile生成性能分析报告,报告中会明确列出各子模块、各插件在配置阶段的耗时占比,可直接定位触发耗时的具体逻辑 - 检查编译缓存有效性:执行
./gradlew installDebug --info | grep "Caching disabled",排查是否存在Kotlin编译任务被强制禁用缓存的情况,1.5.x修改了缓存key生成规则,部分不兼容的第三方插件会触发缓存强制失效 - 排查废弃插件兼容问题:若项目仍在使用已废弃的
kotlin-android-extensions插件,1.5.x对该插件的兼容处理会额外增加30-50秒的配置阶段耗时
解决方案
- 优化Kotlin Gradle插件配置,在根目录
gradle.properties中添加以下配置,关闭1.5.x默认启用的实验性兼容特性:
kotlin.parallel.tasks.in.project=true kotlin.caching.enabled=true kotlin.incremental.useClasspathSnapshot=false kotlin.gradle.plugin.configuration.cache=false
- 处理废弃插件兼容问题:如果没有强依赖
kotlin-android-extensions,直接移除该插件替换为View Binding;如果需要保留,将Kotlin版本升级到1.5.32及以上的1.5系列子版本,该版本优化了废弃插件的扫描逻辑,可降低40秒左右的配置耗时 - 开启Gradle配置缓存,在根目录
gradle.properties中添加以下配置,复用配置阶段结果:
org.gradle.configuration-cache=true org.gradle.configuration-cache.problems=warn
如果出现第三方插件不兼容的报错,将对应插件升级到支持AGP 7的版本即可
- 最优方案是直接升级Kotlin到1.6.21及以上的稳定版,该版本完全修复了1.5.x系列的配置阶段性能退化问题,升级后无变更构建耗时可恢复到1.4.x的同等水平,且与AGP 7、Gradle 7.1的兼容性更好
内容的提问来源于stack exchange,提问作者Thomas
相关产品推荐
相关产品推荐

