summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Colin Cross <ccross@android.com> 2024-11-13 11:31:31 -0800
committer Colin Cross <ccross@android.com> 2024-11-13 11:42:09 -0800
commit4169898d8c9a6522ebf2c830bf677004583a5a31 (patch)
tree158165f10c28d05896dbcc32fc181aa8a16bbccb
parent0c19b699d334be976fef9a6d3a393fcf08a80345 (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.go31
-rw-r--r--java/java_test.go1
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,
}
`)