更新Gradle和构建工具后缺少Android JAVA字节代码

seb*_*ira 2 android code-coverage gradle jacoco

我正在使用Jacoco创建一份覆盖率报告,并且在更新Gradle和BuildTools版本之前一直工作良好。然后,我还原这些更改并重新工作。

Jacoco在以下位置查找.class文件:

$ {buildDir} /中间体/类/调试

这是app / build / intermediates / classes / debug。但我注意到,升级后该路径丢失了,中间体中间没有目录

我的配置正在工作:

项目级模块

classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'io.fabric.tools:gradle:1.25.1'
Run Code Online (Sandbox Code Playgroud)

应用级模块

compileSdkVersion 27
buildToolsVersion "27.0.3"
Run Code Online (Sandbox Code Playgroud)

当更新时是这样的:

项目级模块

classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'io.fabric.tools:gradle:1.25.4'
Run Code Online (Sandbox Code Playgroud)

应用级模块

compileSdkVersion 28
buildToolsVersion "28.0.3"
Run Code Online (Sandbox Code Playgroud)

我找不到有关该路径正在移动或正在发生的情况的任何参考

编辑

我的问题是,由于Java字节码(生成的.class文件)不存在,因此Jacoco无法创建覆盖率报告

M D*_*D P 7

他们在 intermediates\javac\debug\compileDebugJavaWithJavac\classes

您可以配置 Jacoco 以更改类路径。

我不熟悉 Jacoco,但我认为它有一个名为includes.class 文件的属性。

或者.properties我想应该有一个。


Mar*_*ler 5

可以像更改classDirectories覆盖任务一样使用:

task "${testTaskName}Coverage" (type:JacocoReport, dependsOn: "$testTaskName") {
    ...
    classDirectories = fileTree(
        dir: "${project.buildDir}/intermediates/javac/debug/compileDebugJavaWithJavac/classes/${sourcePath}",
        excludes: [ ... ]
    )
    ...
}
Run Code Online (Sandbox Code Playgroud)

  • @sebasira 另一个答案没有提供如何更改路径的任何解决方案。而您的“问题”甚至不包含任何实际问题-需要说明哪个答案是正确的。更快的答案并不意味着更好的答案。模式`*.class` 的IDE 函数`search` > `in path` 将提供相同的信息。 (2认同)