diff options
author | 2024-11-13 11:31:31 -0800 | |
---|---|---|
committer | 2024-11-13 11:42:09 -0800 | |
commit | 4169898d8c9a6522ebf2c830bf677004583a5a31 (patch) | |
tree | 158165f10c28d05896dbcc32fc181aa8a16bbccb | |
parent | 0c19b699d334be976fef9a6d3a393fcf08a80345 (diff) |
Only coverage instrument device modules that are being compiled to dex
There's no reason to instrument device modules that are not being
compiled to dex with jacoco, as they can't be installed on the device
if they only have class files, and modules that depend on it will
get the pre-instrumented jar.
Bug: 372543712
Test: TestCoverage
Change-Id: I10d5fb2eeb1f1acf6393603b5219685bf22f327c
-rw-r--r-- | java/base.go | 31 | ||||
-rw-r--r-- | java/java_test.go | 1 |
2 files changed, 18 insertions, 14 deletions
diff --git a/java/base.go b/java/base.go index 8dad2d9ad..7630ca5d5 100644 --- a/java/base.go +++ b/java/base.go @@ -1735,7 +1735,22 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath completeStaticLibsImplementationJarsToCombine := completeStaticLibsImplementationJars - if j.shouldInstrument(ctx) { + // Enable dex compilation for the APEX variants, unless it is disabled explicitly + compileDex := Bool(j.dexProperties.Compile_dex) + apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider) + if j.DirectlyInAnyApex() && !apexInfo.IsForPlatform() { + if j.dexProperties.Compile_dex == nil { + compileDex = true + } + if j.deviceProperties.Hostdex == nil { + j.deviceProperties.Hostdex = proptools.BoolPtr(true) + } + } + if Bool(j.properties.Installable) { + compileDex = true + } + + if j.shouldInstrument(ctx) && (!ctx.Device() || compileDex) { instrumentedOutputFile := j.instrument(ctx, flags, outputFile, jarName, specs) completeStaticLibsImplementationJarsToCombine = depset.New(depset.PREORDER, android.Paths{instrumentedOutputFile}, nil) outputFile = instrumentedOutputFile @@ -1764,19 +1779,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath j.implementationAndResourcesJar = outputFile - // Enable dex compilation for the APEX variants, unless it is disabled explicitly - compileDex := j.dexProperties.Compile_dex - apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider) - if j.DirectlyInAnyApex() && !apexInfo.IsForPlatform() { - if compileDex == nil { - compileDex = proptools.BoolPtr(true) - } - if j.deviceProperties.Hostdex == nil { - j.deviceProperties.Hostdex = proptools.BoolPtr(true) - } - } - - if ctx.Device() && (Bool(j.properties.Installable) || Bool(compileDex)) { + if ctx.Device() && compileDex { if j.hasCode(ctx) { if j.shouldInstrumentStatic(ctx) { j.dexer.extraProguardFlagsFiles = append(j.dexer.extraProguardFlagsFiles, diff --git a/java/java_test.go b/java/java_test.go index 54eb3e14e..d415679bd 100644 --- a/java/java_test.go +++ b/java/java_test.go @@ -3050,6 +3050,7 @@ func TestCoverage(t *testing.T) { java_library { name: "android.car", srcs: ["android.car.java"], + installable: true, } `) |