自从切换到使用Jack编译我们的Android应用程序后,我们的Jacoco Code Coverage已停止工作。起初问题是“覆盖率始终为0%”,我已经看到多个其他人提到过Jacoco Test Coverage report shows 0%,android jacoco shows 0%...)。然而,在返回尝试修复它时,我现在发现我甚至无法构建覆盖任务。经过大量尝试在互联网上提供的大量随机解决方案后,我启动了一个全新的Android Studio项目,并将其切换为使用Jack(没有其他更改),而仍然失败了:
:main_project:createDebugAndroidTestCoverageReport FAILED
File '/path/to/project/build/intermediates/jack/striiv/debug/coverage.em' specified for property 'metadataFile' does not exist.
以下是我的玩具应用程序的gradle文件。
project build.gradle:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
app build.gradle:
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "24.0.0"
defaultConfig {
applicationId "com.tadams.app.jacoco"
minSdkVersion 19
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
jackOptions.enabled = true
jackOptions.jackInProcess = false
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
testCoverageEnabled(true)
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:design:25.3.1'
testCompile 'junit:junit:4.12'
}
感谢您提供任何帮助!特别是,我一直在努力研究如何生成元数据文件,但除了Android应该照顾它的事实,我无法理解。在那之前,我只是在猜测解决方案。
编辑:记住Gradle日志中的一个重要项目:
:main_project:transformJackWithJackForDebugAndroidTest
Unable to find coverage plugin '/Users/tadams/Library/Android/sdk/build-tools/24.0.0/jack-coverage-plugin.jar'. Disabling code coverage.
.jar绝对是在那个目录中,所以不知道为什么它不会看到它或如何解决它。