You need to enable JavaScript to run this app. Gradle编译Android单元测试任务:app:compileMainAppDebugUnitTestKotlin卡住
优惠活动
大模型
产品
解决方案
定价
更多

Gradle编译Android单元测试任务:app:compileMainAppDebugUnitTestKotlin卡住

排查与解决方案

  • 确认是否触发Kotlin编译器死锁bug
    你当前使用的Kotlin 1.3.72版本存在已知的编译期死锁问题,合并分支后如果出现跨类的循环引用、inline函数嵌套调用、reified泛型跨模块调用的代码,很容易触发编译器进入死循环。可通过如下操作验证:
    执行任务时添加参数:
    ./gradlew :app:compileMainAppDebugUnitTestKotlin -Dkotlin.compiler.execution.strategy="in-process"
    任务卡住后执行jstack <kotlin编译器进程ID>导出线程栈,检查是否存在2个以上编译器线程互相持有锁的情况,如果确认是死锁,可临时将Kotlin版本升级到1.3.x系列最终版本1.3.81即可修复。
  • 检查测试依赖冲突
    两个分支独立运行正常,合并后可能出现测试依赖版本不匹配的问题,执行以下命令检查测试依赖的版本冲突:
    ./gradlew :app:dependencies --configuration testImplementation
    将冲突的测试依赖(如JUnit、MockK、测试版AndroidX库等)强制对齐到同一版本即可。
  • 彻底清理编译缓存
    先关闭Android Studio,依次删除项目根目录下的.gradle文件夹、项目所有模块的build文件夹、用户根目录下.gradle/caches中对应Gradle 6.5版本的缓存目录,重启后重新执行编译任务,排除缓存损坏导致的卡住问题。
  • 禁用增量编译验证
    执行任务时添加参数禁用增量编译:
    ./gradlew :app:compileMainAppDebugUnitTestKotlin -Pkotlin.compiler.incremental=false
    如果全量编译可以正常完成,可在gradle.properties中添加kotlin.incremental.useClasspathSnapshot=false 临时规避类路径快照的bug。

内容的提问来源于stack exchange,提问作者clever_trevor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 22:30:02