summaryrefslogtreecommitdiff
path: root/java/base.go
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 /java/base.go
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
Diffstat (limited to 'java/base.go')
-rw-r--r--java/base.go31
1 files changed, 17 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,