Android Studio中JaCoCo生成代码覆盖率报告失败及版本冲突求助
解决方案:Android Java项目Jacoco覆盖率报告无数据&Gradle版本冲突问题
一、不要降级Gradle,适配Gradle 7.0.2的Jacoco完整配置
你的项目明确要求最低Gradle版本7.0.2,强行降级只会导致版本冲突,Gradle 7.x和Jacoco 0.8.7完全兼容,只需补全缺失的Jacoco配置:
1. 根目录build.gradle(保留已完成部分)
确保Jacoco依赖正确添加:
buildscript { dependencies { classpath "org.jacoco:org.jacoco.core:0.8.7" } }
2. App模块build.gradle补全配置
- 顶部应用Jacoco插件:
apply plugin: 'jacoco'
- 配置Jacoco工具版本:
jacoco { toolVersion = "0.8.7" }
- 完善Android构建配置:
android { buildTypes { debug { testCoverageEnabled true minifyEnabled false // 确保debug关闭混淆,避免覆盖率数据丢失 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } testOptions { // 适配Java 13的类加载问题 unitTests.all { jacoco.includeNoLocationClasses = true jacoco.excludeClassLoaders = ['jdk.internal.loader.ClassLoaders$AppClassLoader'] } animationsDisabled = true // 优化Espresso测试稳定性 } }
- 添加任务确保覆盖率数据生成:
// 确保Android测试任务生成Jacoco数据 tasks.withType(com.android.build.gradle.tasks.Test) { jacoco.includeNoLocationClasses = true jacoco.output = JacocoTaskExtension.Output.FILE }
二、解决「无覆盖率数据」问题
1. 指定模块运行覆盖率任务
不要直接运行根模块的createDebugAndroidTestCoverageReport,明确指定App模块:
gradlew app:createDebugAndroidTestCoverageReport
2. 检查覆盖率数据目录
运行测试后,手动查看路径C:\Git<companyname><companyname>\app\build\outputs\code_coverage\debugAndroidTest\connected(注意是app模块下的目录,不是根目录),确认是否生成.ec格式的覆盖率数据文件:
- 如果没有生成:重启模拟器/测试设备,重新运行测试,排除设备临时故障
- 如果有
.ec文件:清理项目后重新构建(gradlew clean build),再生成报告
3. 排除冲突插件
如果项目中使用了其他测试或代码修改插件(如Robolectric、自定义字节码插件),暂时禁用后重试,排查是否存在插件冲突导致数据无法生成。
三、验证环境兼容性
Gradle 7.0.2支持Java 8-16,你的OpenJDK 13完全符合要求,无需更换Java版本。
内容的提问来源于stack exchange,提问作者Goochem
相关产品推荐
相关产品推荐

