配置缓存通过跳过构建配置阶段(解析脚本、计算依赖图等)并复用序列化结果,显著提速多模块项目;需Gradle 7.4+、确定性脚本、禁用afterEvaluate等,配合构建缓存与守护进程形成加速闭环。

Gradle 的 Configuration 缓存(配置缓存)不是“加速编译”,而是跳过整个构建配置阶段——这个阶段在大型多模块项目中常耗时 20~40 秒。它把解析 build.gradle.kts / build.gradle、计算任务依赖图、应用插件等过程的结果序列化并复用,后续构建直接加载缓存,不再重复执行脚本逻辑。
确认是否兼容并启用配置缓存
配置缓存要求所有构建脚本和插件行为是“确定性”的(不能读取系统时间、随机数、未声明的文件等)。启用前需验证兼容性:
- 在命令行运行 ./gradlew --configuration-cache,观察是否有
Configuration cache is not supported或reason: non-serializable object类型报错 - 若使用 Kotlin DSL,建议先加 org.gradle.configuration-cache-problems=warn 到
gradle.properties,让 Gradle 提示具体不兼容点 - 常见不兼容项:在配置阶段调用
fileTree、new File()、System.getenv();或插件未适配(如某些老旧 Android 插件)
正确启用配置缓存的配置方式
仅在 gradle.properties 中设置开关还不够,必须配合 Gradle 版本与构建脚本规范:
- Gradle 7.4+ 才正式支持稳定版配置缓存,推荐使用 9.4+(2026 年已默认将其设为首选模式)
- 在
gradle.properties中添加:
org.gradle.configuration-cache=true - 避免在
build.gradle中使用afterEvaluate或动态修改 task 依赖;改用tasks.named("xxx")惰性配置 - 插件应优先使用
plugins { id("...") }块声明,而非apply plugin:语句
配合其他缓存形成加速闭环
配置缓存单独启用能省下几十秒,但真正发挥威力需要与其他机制协同:
立即学习“Java免费学习笔记(深入)”;
- 构建缓存(org.gradle.caching=true):复用编译输出、打包产物等任务结果,避免重复执行
- 并行构建(org.gradle.parallel=true):让多个模块同时配置和执行(注意:配置缓存启用后,并行配置本身已无意义,但并行执行仍有效)
- 守护进程(org.gradle.daemon=true):复用 JVM 实例,避免每次构建都启动新进程
- 三者共用时,首次构建仍需完整走完流程,但从第二次开始,配置阶段几乎瞬时完成,任务执行大量命中缓存
验证是否生效及排查典型问题
启用后可通过构建日志或命令行快速确认效果:
- 成功启用时,控制台会显示 Configuration cache entry stored 或 Reusing configuration cache
- 运行 ./gradlew help --scan,打开生成的 Build Scan 链接,在 “Configuration phase” 时间栏查看是否显著下降(理想值应 ≤ 1 秒)
- 若构建失败且提示
Cannot serialize,检查是否在配置阶段访问了project.rootDir以外的路径,或用了未标记@Inject的服务对象 - Android 项目需确保 AGP ≥ 8.1,否则部分 DSL(如
android.testOptions.unitTests.all)可能触发不兼容


















