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

JaCoCo执行测试报initializationError FAILED SDK版本不兼容错误

问题原因

报错核心是当前项目引入的Robolectric测试框架版本最高仅支持到SDK 31(Android 12),但myLibModule模块配置的targetSdkVersion为32(Android 12L)。Robolectric在初始化单元测试运行环境时会校验目标SDK版本是否在支持范围内,检测到目标SDK超过当前版本支持的最大上限后,直接在DefaultSdkPicker层抛出IllegalArgumentException,导致testDebugUnitTest任务执行失败,后续JaCoCo覆盖率统计流程随构建终止。
控制台输出的Configuration on demand is an incubating feature是Gradle按需配置功能的常规孵化提示,和本次报错无关,无需额外处理。当前使用的JaCoCo 0.8.7版本也不是故障诱因,不需要调整。

修复方案

根据项目实际情况选择以下任意一种方案即可:

  • 升级Robolectric版本(推荐)
    将单元测试依赖中的Robolectric版本升级至4.8.1及以上,该版本开始正式支持SDK 32,升级后无需修改现有targetSdkVersion配置,重新执行./gradlew jacocoCoverage命令即可正常完成覆盖率统计。
  • 指定Robolectric测试运行SDK版本
    如果暂时无法升级Robolectric,可以在模块build.gradle中添加配置,强制Robolectric使用SDK 31环境运行单元测试,绕过版本校验,配置代码如下:
    android {
        // 原有compileSdkVersion、buildToolsVersion、defaultConfig配置保持不变
        testOptions {
            unitTests.all {
                systemProperty "robolectric.sdk", "31"
            }
        }
    }
    
    注意:如果测试用例中调用了SDK 32新增的专属API,该配置下运行测试会抛出方法不存在异常。
  • 临时下调targetSdkVersion
    非紧急情况不推荐该方案:将模块defaultConfig中的targetSdkVersion从32下调至31,待后续完成Robolectric版本升级后再改回原配置,该方案会影响正式构建产物的目标SDK配置,侵入性较高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 13:45:31