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

使用Gradle在Android模拟器运行测试时MockK抛出ExceptionInInitializerError

解决Windows x86模拟器上MockK插桩测试的架构不兼容问题

你遇到的问题是MockK的agent库在x86模拟器上加载了错误架构的SO文件,结合你的场景,可通过以下步骤解决:

1. 修正MockK依赖配置

移除mockk-agent-jvm依赖,因为mockk-android已经包含了适配Android平台的agent组件,同时引入jvm版本的agent会导致架构冲突。修改后的依赖块如下:

dependencies {
    androidTestImplementation "io.mockk:mockk-android:1.13.7"
    androidTestImplementation 'androidx.test:runner:1.5.2'
    androidTestUtil "androidx.test:orchestrator:1.4.2"
}

2. 限制JNI库的打包架构

在packagingOptions中明确指定只保留x86架构的MockK agent SO文件,避免错误加载ARM架构的文件:

android {
    ...
    packagingOptions {
        jniLibs {
            useLegacyPackaging = true
            pickFirsts += ['lib/x86/libmockkjvmtiagent.so']
            exclude 'lib/armeabi-v7a/libmockkjvmtiagent.so'
            exclude 'lib/arm64-v8a/libmockkjvmtiagent.so'
            exclude 'lib/x86_64/libmockkjvmtiagent.so' // 若使用x86_64模拟器则删除此行
        }
    }
    ...
}

3. 确认模拟器ABI设置

打开AVD管理器,编辑你的x86模拟器,确保CPU/ABI选择的是x86或x86_64,不要启用ARM兼容翻译模式(部分高版本Android模拟器默认开启,可能导致SO加载异常)。

4. 清理并重新构建

执行以下命令清理缓存并重新构建测试包,确保配置生效:

./gradlew clean assembleAndroidTest

完成以上步骤后,再通过Gradle CLI运行插桩测试,应该就能解决架构不兼容的问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 13:48:26