gpt4 book ai didi

android - 合并 Jacoco 结果,混淆和未混淆运行

转载 作者:行者123 更新时间:2023-11-30 05:05:44 26 4
gpt4 key购买 nike

我们有一个多模块 Android 项目,其中包含应用程序模块、库模块和测试模块(用应用程序测试库模块)。我们面临一个问题,由于类别不匹配,我们无法合并覆盖率结果。

java.lang.IllegalStateException: Different class names com/xxx/xxx/common/model/cblite/ViewCreator and com/xxx/xxx/common/model/cblite/d for id 98bd81913c1da431.

这种不匹配是由混淆引起的。我们想在混淆的应用程序上运行我们的测试来测试混淆。但是当我们直接测试库模块时,它们无法被混淆。

合并任务如下所示:

apply plugin: 'jacoco'

task jacocoRootReport(type: JacocoReport, group: 'Coverage reports') {
project.gradle.taskGraph.whenReady {

def sourceSet = []
def sourceClasses = []

subprojects.each { subproject ->
if (subproject.plugins.hasPlugin('com.android.application') || subproject.plugins.hasPlugin('com.android.library')) {
subproject.android.sourceSets.each { set ->
sourceSet.add(set.java.srcDirs)
}
}

def variants
if (subproject.plugins.hasPlugin('com.android.application')) {
variants = subproject.android.applicationVariants
} else if (subproject.plugins.hasPlugin('com.android.library')) {
variants = subproject.android.libraryVariants
}

if (variants) {
variants.each { variant ->
def compileTask = variant.getJavaCompileProvider().get()
sourceClasses.add(compileTask.destinationDir)
}
}
}

additionalSourceDirs = files(sourceSet)
sourceDirectories = files(sourceSet)
jacocoClasspath = configurations['jacocoAnt']
classDirectories = files(files(sourceClasses).collect {
fileTree(dir: it, exclude: ['**/R.class',
'**/R$*.class',
'**/*__Factory.class',
'**/*__MemberInjector.class',
'**/MemberInjectorRegistry.class',
'**/FactoryRegistry.class',
'**/*Test*.class',
'**/BuildConfig.*'

])
})

executionData = fileTree(project.rootDir.absolutePath).include("**/*.ec", "**/*.exec")

reports {
html.enabled = true
xml.enabled = true
html.destination = file("${buildDir}/reports/jacoco")
xml.destination = file("${buildDir}/reports/jacoco/report.xml")
}
}
}

我们还尝试使用 jenkins jacoco 插件并在那里合并结果。但由于同样的错误,他的效果不佳。

是否有可能合并结果?

最佳答案

在我的例子中,proguard 参数“-adaptclassstrings”导致了这个问题。从配置中删除它后,jacoco 结果再次包含原始名称,因此合并也有效。

关于android - 合并 Jacoco 结果,混淆和未混淆运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54629643/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com