Gradle编译慢的核心原因是默认串行执行、配置重复解析和缓存未启用;必须协同开启并行构建(org.gradle.parallel=true)、构建缓存(org.gradle.caching=true)、守护进程(org.gradle.daemon=true)及配置缓存(org.gradle.configuration-cache=true)才能显著提速。

Gradle 编译慢,核心原因之一是默认串行执行、配置重复解析、缓存未启用。优化编译速度不是堆参数,而是找准瓶颈、分层施策——并行构建只是其中一环,必须配合其他关键配置才能真正见效。
一、开启并行构建(基础但关键)
多模块项目中,各模块若无强依赖关系,完全可以同时编译。开启后可显著缩短总耗时,实测提升 30%~50%。
- 在项目根目录 gradle.properties 中添加:
org.gradle.parallel=true
- 如需进一步控制并发线程数(尤其在 CI 环境或高核机器上),可补充:
org.gradle.workers.max=8(建议设为 CPU 核心数,可用 nproc 或 Runtime.getRuntime().availableProcessors() 查看)
- ⚠️ 注意:并行生效前提是模块间依赖清晰、无隐式耦合。若模块 A 通过反射或 classpath 强引用模块 B 的未声明依赖,可能引发构建失败或结果不一致。
二、必须配套的三项核心配置
单开 parallel 效果有限,需与以下配置协同使用:
- 启用构建缓存:复用任务输出,避免重复编译、资源处理等
org.gradle.caching=true
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 启用守护进程:复用 JVM 实例,省去每次启动 Gradle 的开销
org.gradle.daemon=true
- 启用配置缓存(Gradle 7.4+ 推荐):跳过重复的脚本解析与配置阶段,大型项目可节省 20~40 秒
org.gradle.configuration-cache=true
(若使用 Kotlin DSL,建议搭配 org.gradle.configuration-cache-problems=warn 便于排查不兼容插件)
三、定位真实瓶颈,避免盲目优化
不是所有“慢”都靠并行解决。比如 kapt 处理注解、资源合并、AAPT2 链接,常比编译本身更耗时。
- 运行
./gradlew assembleDebug --profile,生成 HTML 报告查看各阶段耗时 - 或使用官方 Build Scan(更直观):
在 settings.gradle.kts 添加:
plugins { id("com.gradle.enterprise") version "3.16" }
gradleEnterprise { buildScan { termsOfServiceUrl = "https://gradle.com/terms-of-service"
termsOfServiceAgree = "yes"
publishAlways() } }
- 执行
./gradlew assembleDebug --scan,打开终端输出的链接,重点看 Timeline 和 Task Execution 视图
四、针对性提速建议(按优先级排序)
- 将
kapt迁移至KSP(Room/Dagger/Hilt 项目收益最大,提速 2 倍以上) - 限制资源语言与密度(
android { defaultConfig { resourceConfigurations += ["en", "zh"] } }) - 禁用开发阶段非必要任务(如
minifyEnabled false、shrinkResources false) - 升级到最新稳定版 Gradle 和 AGP(Gradle 8.5+、AGP 8.5+ 对增量编译与缓存有实质性改进)

















