配置缓存需显式启用且默认为孵化特性,首次启用易失败;推荐先通过./gradlew build --configuration-cache --no-daemon临时验证,再在gradle.properties中设org.gradle.configuration-cache=true和org.gradle.configuration-cache-problems=warn以稳定生效并定位兼容性问题。

直接加 --configuration-cache 参数就行,但要注意它默认是孵化特性,首次启用大概率报错。
命令行临时启用配置缓存(不改文件)
在项目根目录下执行:
./gradlew build --configuration-cache
这个参数会强制本次构建启用配置缓存,跳过 build.gradle 的重复解析。但它不会持久化,下次还得加。
- Gradle 8.4+ 默认允许该参数,但依然标记为
[incubating](孵化中),所以错误提示会更严格 - 如果构建失败,错误信息里通常带
Configuration cache problems和具体 task 名,比如task ':app:compileDebugKotlin' cannot be cached - 不推荐在 CI 脚本里裸用这个参数——没配兼容性处理时,一次失败就中断整个流水线
为什么光加参数经常失败?
配置缓存要求所有构建逻辑“纯函数化”:不能读写外部状态、不能依赖未声明的输入、不能动态修改 project 属性。很多老插件或自定义 task 直接调用 project.fileTree 或 System.getenv() 就会触发失败。
- 常见踩坑点:
buildSrc里用了println、logger.warn,或者在afterEvaluate里改了 task 的inputs - 第三方插件如旧版
com.getkeepsafe.dexcount、某些字节码插桩工具(如早期版本的aspectj)不兼容 - Android Studio 的 Build Analyzer 会主动扫描并提示哪些地方阻断了配置缓存,比盲试高效得多
真正想稳住配置缓存,得配 gradle.properties
只靠命令行参数治标不治本。必须配合项目级配置才能让缓存稳定生效:
org.gradle.configuration-cache=true<br>org.gradle.configuration-cache-problems=warn
第二行把默认的 fail 改成 warn,能让构建继续跑完,同时输出哪些地方不兼容——这是定位问题的关键开关。
-
org.gradle.configuration-cache-problems=warn不会跳过报错,但允许构建完成,方便你扫日志 - 如果项目用了 Kotlin DSL 的
build.gradle.kts,还要检查有没有用providers.systemProperty替代裸System.getProperty - Gradle 9+ 已将配置缓存设为默认推荐,但 Android Gradle Plugin 8.5+ 才开始全面适配,低于此版本建议先测再推
配置缓存不是开个开关就提速,它是对构建脚本的一次“纯度审查”。真正卡住的往往不是 Gradle 本身,而是那些年久失修的自定义逻辑和插件调用——别急着删报错,先看它在警告什么。











