You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android build.gradle添加jacocoagent.jar解决JaCoCo Offline类找不到错误

问题根因

该报错是JaCoCo离线插桩后的代码在Android instrumentation测试运行时,找不到对应版本的JaCoCo agent runtime类导致的。你之前的操作存在两个问题:

  • testImplementation 仅作用于本地JVM单元测试的类路径,不会打包到AndroidTest的运行APK中
  • 未指定runtime分类器的org.jacoco.agent包是用于JVM代理挂载的,不能直接作为运行时依赖引入

修复配置步骤

1. 修正JaCoCo Agent依赖

在模块级build.gradle的依赖块中添加AndroidTest专属的agent依赖,指定runtime分类器:

dependencies {
    androidTestImplementation "org.jacoco:org.jacoco.agent:0.8.7:runtime"
}

2. 全局锁定JaCoCo版本避免冲突

AGP 7.x内置了默认的JaCoCo版本,和你指定的0.8.7版本不一致会出现类哈希不匹配问题,在根目录build.gradle中添加版本强制锁定配置:

allprojects {
    configurations.all {
        resolutionStrategy {
            force "org.jacoco:org.jacoco.core:0.8.7"
            force "org.jacoco:org.jacoco.report:0.8.7"
            force "org.jacoco:org.jacoco.agent:0.8.7"
        }
    }
}

3. 校验模块级插桩配置

确认模块级build.gradle的android配置块中开启了覆盖率开关、指定了Jacoco版本:

android {
    jacoco {
        version = "0.8.7"
    }
    buildTypes {
        debug {
            // 开启测试覆盖率统计
            testCoverageEnabled true
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

4. 清理缓存后重新生成报告

执行以下命令清理旧构建产物,重新运行覆盖率任务:

./gradlew clean
./gradlew createDebugCoverageReport

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 05:39:03