构建速度优化
老项目常见慢构建原因
老项目构建慢通常卡在这几个地方,按效果从大到小排列:
| 优化项 | 效果 | 操作 |
|---|---|---|
| Gradle 版本升级 | 显著 | 升级到 Gradle 8.x + AGP 8.x |
| 开启并行构建 | 中等 | gradle.properties 加 org.gradle.parallel=true |
| 开启构建缓存 | 显著 | org.gradle.caching=true |
| 增大 Gradle 内存 | 中等 | org.gradle.jvmargs=-Xmx4096m |
| 开启增量编译 | 显著 | Kotlin 和 kapt 默认开启但需确认没被关闭 |
| kapt → KSP | 显著 | Kotlin Symbol Processing 替代 kapt |
| 模块化拆分 | 显著 | 大 module 拆小,只编译改动的 module |
快速检查清单
gradle.properties:
ini
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.jvmargs=-Xmx4096m -XX:+HeapDumpOnOutOfMemoryError
org.gradle.configuration-cache=true
android.useAndroidX=true
android.nonTransitiveRClass=true
kapt 替换为 KSP:
bash
// build.gradle.kts
plugins {
// id("kotlin-kapt") ← 删掉
id("com.google.devtools.ksp") version "1.9.21-1.0.16"
}
dependencies {
// kapt("androidx.room:room-compiler:2.6.1") ← 删掉
ksp("androidx.room:room-compiler:2.6.1")
}
一句话注意
配置缓存(configuration-cache=true)在 Gradle 8.x 中稳定可用,首次构建后后续构建跳过配置阶段,能省 1-3 秒。但要求所有脚本使用 Kotlin DSL 且没有不兼容的插件。
KSP 比 kapt 快 2-3 倍------kapt 是完整的 Java 注解处理器,KSP 是 Kotlin 原生的符号处理器,跳过 Java 编译环节。但要注意所有原来用 kapt 的注解处理器都要看是否支持 KSP 版本。
android.nonTransitiveRClass=true 能让每个 module 生成自己的 R 类而不是全局共享,减少增量编译时的重新编译范围。AGP 8.0 后已默认开启。
Java Android 老项目迁移系列,持续更新中。