Android Jacoco凭借Gradle 3.1.0在跑步中崩溃
我最近将我的Android Studio更新为3.1.0,我使用的是Gradle 4.4.0,自从我更新了IDE之后,我一直与Jacoco有问题。我得到一个运行时崩溃,它看起来像:Android Jacoco凭借Gradle 3.1.0在跑步中崩溃,android,android-studio,gradle,android-gradle-plugin,jacoco,Android,Android Studio,Gradle,Android Gradle Plugin,Jacoco,我最近将我的Android Studio更新为3.1.0,我使用的是Gradle 4.4.0,自从我更新了IDE之后,我一直与Jacoco有问题。我得到一个运行时崩溃,它看起来像: 03-29 15:41:19.944 6629-6629/com.MyApp.pr.redesign.app E/AndroidRuntime: FATAL EXCEPTION: main Process: com.MyApp.pr.MyApp.app, PID: 6629 java.lang.NoC
03-29 15:41:19.944 6629-6629/com.MyApp.pr.redesign.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.MyApp.pr.MyApp.app, PID: 6629
java.lang.NoClassDefFoundError: Failed resolution of: Lorg/jacoco/agent/rt/internal_773e439/Offline;
at com.MyApp.pr.eventcollector.utils.MyApp.$jacocoInit(Unknown Source:13)
at com.MyApp.pr.eventcollector.utils.MyApp.<clinit>(Unknown Source:0)
at com.MyApp.pr.eventcollector.utils.MyApp.setLevel(Unknown Source:0)
at com.MyApp.pr.MyApp.MyApp.setupLogging(MyApp.java:175)
at com.MyApp.pr.MyApp.MyApp.onCreate(MyApp.java:77)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5740)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.ClassNotFoundException: Didn't find class "org.jacoco.agent.rt.internal_773e439.Offline" on path: DexPathList[[zip file "/data/app/com.MyApp.pr.redesign.app-EGnUUyKeM4P-cZrCGsyoUQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.MyApp.pr.redesign.app-EGnUUyKeM4P-cZrCGsyoUQ==/lib/arm64, /data/app/com.MyApp.pr.redesign.app-EGnUUyKeM4P-cZrCGsyoUQ==/base.apk!/lib/arm64-v8a, /system/lib64]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:125)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at com.MyApp.pr.eventcollector.utils.MyApp.$jacocoInit(Unknown Source:13)
at com.MyApp.pr.eventcollector.utils.MyApp.<clinit>(Unknown Source:0)
at com.MyApp.pr.eventcollector.utils.MyApp.setLevel(Unknown Source:0)
at com.MyApp.pr.MyApp.MyApp.setupLogging(MyApp.java:175)
at com.MyApp.pr.MyApp.MyApp.onCreate(MyApp.java:77)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5740)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
下面是app build.gradle文件:
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply from: "$project.rootDir/gradle/findbugs.gradle"
apply plugin: 'jacoco'
jacoco {
toolVersion = '0.8.0'
}
...
buildTypes {
release {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
minifyEnabled false
}
debug {
versionNameSuffix="-debug"
debuggable true
/**
* Code below is commented out because it causes build issue
* when using newer version of gradle (3.1.0)
*/
testCoverageEnabled true
minifyEnabled false
}
}
}
...
dependencies {
...
}
我不知道是什么问题。我尝试将
.jar
文件直接添加到项目中,结果相同。如果有人能帮忙,我将永远感激 我不能说我的答案是决定性的问题,因为我在app build.gradle中看不到您的依赖关系,但在这个最新版本的gradle中,不再支持“compile”。这可能是您的build.gradle或Jacoco的build.gradle的根本原因。从android studio/idea启动build时,我对gradle 4.6和android plugin 3.1.0也有同样的问题。然而,当我使用gradle构建apk并将其与adb一起部署时,它运行良好
因此,问题似乎与IDE本身有关。
它没有将正确的jacoco版本打包到apk
编辑:
我已经禁用了instant run,它现在可以正常工作。只能说明,如果没有
testCoverageEnabled=false
本地变量在调试模式下是未知的。。。这使得调试变得困难。0.8.2
仍然存在同样的问题。谢谢你,救了我一天。
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply from: "$project.rootDir/gradle/findbugs.gradle"
apply plugin: 'jacoco'
jacoco {
toolVersion = '0.8.0'
}
...
buildTypes {
release {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
minifyEnabled false
}
debug {
versionNameSuffix="-debug"
debuggable true
/**
* Code below is commented out because it causes build issue
* when using newer version of gradle (3.1.0)
*/
testCoverageEnabled true
minifyEnabled false
}
}
}
...
dependencies {
...