升级Android Gradle Plugin到4.2.1后出现DaemonDisappearedException如何解决
异常产生核心原因
DaemonDisappearedException本质是Gradle守护进程运行时被强制终止或自身崩溃,结合AGP 4.2.1、Gradle 7.1.1、Kotlin 1.5.31的环境,常见触发原因如下:
- JVM堆内存分配不足:AGP 4.2+版本相比旧版本构建时内存占用明显提升,默认的守护进程堆内存配置不够,导致进程被系统OOM机制杀掉
- 第三方插件兼容性冲突:旧版字节码插桩、资源优化类Gradle插件未适配AGP 4.2.1,运行时异常导致守护进程崩溃
- 环境资源限制:Android Studio本地环境或CI/CD节点的内存/CPU配额不足,构建过程中资源耗尽触发进程回收
- Gradle缓存损坏:升级后旧版本守护进程缓存与新版本不兼容,导致进程异常退出
排查步骤
- 执行构建时添加
--stacktrace --info -Dorg.gradle.daemon.debug=true参数,获取守护进程退出前的详细日志,定位是OOM还是插件执行异常 - 查看系统日志:Linux/macOS环境查看
/var/log/syslog或dmesg输出,确认是否存在系统OOM机制杀掉Gradle进程的记录 - 临时注释所有自定义第三方Gradle插件后重新构建,排查是否为插件兼容性问题
- 分别在本地和CI环境复现问题,排除单环境资源限制问题
解决方案
1. 调整Gradle守护进程内存配置
在项目根目录的gradle.properties文件中修改JVM参数,提升内存上限:
org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
如果是大型项目可以将-Xmx调整到6G~8G,CI环境根据节点内存配额对应调整即可。
2. 修复版本兼容性问题
- 将所有第三方Gradle插件升级到适配AGP 4.2.1的版本,重点检查字节码插桩、资源压缩、构建加速类插件
- Kotlin 1.5.31与AGP 4.2.1、Gradle 7.1.1的官方兼容矩阵匹配,无需降级Kotlin版本,存在Kotlin相关报错可升级Kotlin插件到对应最新小版本
3. 清理损坏的Gradle缓存
执行以下命令清理旧缓存,重启守护进程:
./gradlew --stop rm -rf ~/.gradle/caches/
CI环境可以配置构建前自动清理Gradle缓存目录,或使用干净的构建节点。
4. CI/CD环境特殊适配
- 关闭不必要的构建特性,并行构建、增量构建不稳定时可临时关闭
- 提高CI节点的内存配额,确保可用内存不低于配置的守护进程堆内存的1.5倍
- 单次构建的CI场景可添加
--no-daemon参数运行构建,避免守护进程残留占用资源
内容的提问来源于stack exchange,提问作者Deepak Garg
相关产品推荐
相关产品推荐

