使用Android Gradle插件3.1.0不再找到androidJacocoAnt配置

laa*_*lto 8 android code-coverage gradle jacoco android-gradle-plugin

更新到Android Gradle插件3.1.0(从3.0.1)后,我的JaCoCo单元测试覆盖率配置开始在Gradle配置阶段产生错误:

> Configuration with name 'androidJacocoAnt' not found.
Run Code Online (Sandbox Code Playgroud)

项目级build.gradle:

dependencies {
    classpath 'com.android.tools.build:gradle:3.1.0'
    classpath "org.jacoco:org.jacoco.core:0.8.1"
}
Run Code Online (Sandbox Code Playgroud)

模块级build.gradle:

apply plugin: 'jacoco'

...

android {
    buildTypes {
        debug {
            testCoverageEnabled true
        }
    }

    ...
}

task jacocoTestReport(type: JacocoReport) {
    dependsOn 'createDebugCoverageReport'
    dependsOn 'testDebugUnitTest'

    reports {
        xml.enabled = true
        html.enabled = true
        csv.enabled = false
    }

    jacocoClasspath = configurations['androidJacocoAnt']

    def fileFilter = [
            '**/R.class',
            '**/R$*.class',
            '**/BuildConfig.*',
            '**/Manifest*.*',
            '**/*Test*.*',
            'android/**/*.*'
    ]

    def debugTree = fileTree(dir: "${buildDir}/intermediates/classes/debug", excludes: fileFilter)
    def mainSrc = "${project.projectDir}/src/main/java"
    print("${project.projectDir}/src/main/java")

    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = fileTree(dir: "$buildDir", includes: [
            "jacoco/testDebugUnitTest.exec",
            "outputs/code-coverage/connected/*coverage.ec"
    ])
}
Run Code Online (Sandbox Code Playgroud)

laa*_*lto 13

看来,gradle dependencies用不同的插件版本来区分输出

jacocoClasspath = configurations['androidJacocoAnt']
Run Code Online (Sandbox Code Playgroud)

需要改变

jacocoClasspath = configurations['jacocoAnt']
Run Code Online (Sandbox Code Playgroud)