关于 gradle-build-performance
面向 Android 与 Gradle 开发者的构建性能参考,介绍如何测量并改善构建耗时。重点包括定位慢速阶段、配置缓存实践、依赖解析及 AGP 9 对 kapt 迁移到 KSP 的要求。
主要功能
- 01基线测量与 Build Scan 流程
- 02配置缓存使用指引
- 03延迟注册任务
- 04使用约定插件的建议
- 05依赖解析实践
- 06AGP 9 下 kapt 转 KSP 指引
适用场景
- 01定位 Gradle 构建中的耗时阶段
- 02减少重复的配置工作
- 03为 AGP 9 更新注解处理方式
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ rcosteira79/ android-skills --skill gradle-build-performance安装后在 Claude Code 中输入/gradle-build-performance确认已加载。
详细介绍
Gradle 构建性能
本文介绍工作流规范,以及影响显著且容易出错的模式;不涵盖常见配置项(org.gradle.caching、org.gradle.parallel、org.gradle.jvmargs、android.nonTransitiveRClass、kapt → ksp)。
工作流:测量基线(干净构建 + 增量构建)→ ./gradlew assembleDebug --scan(或使用 --profile 生成不上传的报告)→ 在 Build Scan 时间线上找出耗时阶段(配置/执行/依赖解析)→ 每次只应用一项优化 → 再次测量。批量修改会让你无法判断哪些改动起了作用。
配置阶段——成本最低的优化
- 配置缓存(
org.gradle.configuration-cache=true,AGP 8+)会在输入未变化时跳过整个配置阶段。先设置org.gradle.configuration-cache.problems=warn,没有问题后再改为fail。 - 配置期间不要进行 I/O。 在配置时调用
file("version.txt").readText()、进行网络调用或使用exec {},都会破坏配置缓存并拖慢每次构建;应将其推迟到执行阶段:providers.fileContents(layout.projectDirectory.file("version.txt")).asText。 - 延迟注册任务——使用
tasks.register("x") { … }(仅当任务位于执行图中时才配置),不要使用tasks.create("x") { … }(会立即配置)。 - 使用约定插件,而不是
subprojects {}/allprojects {}——这些根构建块会立即评估每个子项目。将共享配置移至约定插件中(参见android-skills:android-gradle-logic)。
kapt → KSP(AGP 9 上必须迁移)
KSP 的速度约为 kapt 的 2 倍,且 AGP 9 要求必须完成迁移——它内置了 Kotlin 支持,并且与 org.jetbrains.kotlin.kapt 不兼容。请迁移到 KSP(AGP 9 上需要 KSP 2.3.1+;Hilt / Room / Moshi 均支持),或者对于没有对应 KSP 实现的注解处理器,改用 com.android.legacy-kapt(版本与 AGP 相同)。有关 AGP 9 的更多机制,请参阅 JetBrains 的 kotlin-tooling-agp9-migration 技能。
依赖解析
- 固定版本——动态版本
1.0.+或-SNAPSHOT会在每次构建时触发网络解析检查。请固定为1.2.3。 - 仓库顺序——Gradle 按声明顺序检查仓库;将使用最多的仓库放在前面(
google(),然后是mavenCentral(),第三方仓库放在最后)。
一个合理的 gradle.properties 基线
org.gradle.configuration-cache=true
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC
android.nonTransitiveRClass=true
评论
支持 Markdown