AGP 7.2 - java.lang.NoClassDefFoundError:解析失败:Lorg/jacoco/agent/rt/internal_3570298/Offline;用于仪器测试

Zac*_*ach 7 android gradle jacoco android-studio

当使用 AGP 7.2 (android studio Chipmunk) 运行 android 仪器测试时,我看到以下错误:

\n
\njava.lang.NoClassDefFoundError: Failed resolution of: Lorg/jacoco/agent/rt/internal_b6258fc/Offline;\n   at androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity.$jacocoInit(Unknown Source:13)\n   at androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity.<clinit>(Unknown Source:0)\n   at java.lang.Class.newInstance(Native Method)\n   at android.app.Instrumentation.newActivity(Instrumentation.java:1174)\n   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)\n   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)\n   at android.app.ActivityThread.-wrap11(Unknown Source:0)\n   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)\n   at android.os.Handler.dispatchMessage(Handler.java:106)\n   at android.os.Looper.loop(Looper.java:164)\n   at android.app.ActivityThread.main(ActivityThread.java:6494)\n   at java.lang.reflect.Method.invoke(Native Method)\n   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)\n   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)\nCaused by: java.lang.ClassNotFoundException: Didn't find class "org.jacoco.agent.rt.internal_b6258fc.Offline" on path: DexPathList[[zip file "/system/framework/android.test.mock.jar", zip file "/system/framework/android.test.runner.jar", zip file "/data/app/com.abc.appname.develop.test-VAV8qDGNBpOvARX_Y9h_SA==/base.apk"],nativeLibraryDirectories=[/data/app/com.abc.appname.develop.test-VAV8qDGNBpOvARX_Y9h_SA==/lib/x86, /system/lib, /vendor/lib]]\n   at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)\n   at java.lang.ClassLoader.loadClass(ClassLoader.java:379)\n   at java.lang.ClassLoader.loadClass(ClassLoader.java:312)\n   at androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity.$jacocoInit(Unknown Source:13)\xc2\xa0\n   at androidx.test.core.app.InstrumentationActivityInvoker$BootstrapActivity.<clinit>(Unknown Source:0)\xc2\xa0\n   at java.lang.Class.newInstance(Native Method)\xc2\xa0\n   at android.app.Instrumentation.newActivity(Instrumentation.java:1174)\xc2\xa0\n   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669)\xc2\xa0\n   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)\xc2\xa0\n   at android.app.ActivityThread.-wrap11(Unknown Source:0)\xc2\xa0\n   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)\xc2\xa0\n   at android.os.Handler.dispatchMessage(Handler.java:106)\xc2\xa0\n   at android.os.Looper.loop(Looper.java:164)\xc2\xa0\n   at android.app.ActivityThread.main(ActivityThread.java:6494)\xc2\xa0\n
Run Code Online (Sandbox Code Playgroud)\n

我也有 jacoco 0.8.8 设置,但是当我打开时debug.testCoverageEnabledfalse 时,仪器测试成功通过。

\n

使用 jacoco 0.8.7 也有同样的问题,但 0.8.7 和 0.8.8 在 AGP 7.1.3 (bumblebee) 上都能正常工作。

\n