summaryrefslogtreecommitdiff
path: root/java/base.go
diff options
context:
space:
mode:
author Colin Cross <ccross@android.com> 2024-11-14 12:26:00 -0800
committer Colin Cross <ccross@android.com> 2024-11-16 02:22:55 +0000
commite4f34886916e5ef36abe8346829dec51020ae0f0 (patch)
tree204e9c0bd002de2e1006696c9077c3d6e25f40fc /java/base.go
parent0510f54388436a734dfe5d4fb2c7e0cff229a641 (diff)
Don't use DirectlyInAnyApex to enable dex and coverage
DirectlyInAnyApex was being used to automatically enable dexing and to enable coverage. There is only one module in an apex that isn't already being dexed, so set compile_dex in that module and remove the automatic dexing. Coverage is only useful on device modules if they are dexed, so convert the shouldInstrumentInApex test to check if it is dexed instead. This reomves the last usages of DirectlyInAnyApex from the java package. Bug: 372543712 Test: No change to build.ninja Change-Id: I1d1738305ed97d85669945def75e9916c2b41f3c
Diffstat (limited to 'java/base.go')
-rw-r--r--java/base.go24
1 files changed, 9 insertions, 15 deletions
diff --git a/java/base.go b/java/base.go
index 7630ca5d5..d4d5f620c 100644
--- a/java/base.go
+++ b/java/base.go
@@ -766,7 +766,8 @@ func (j *Module) shouldInstrumentInApex(ctx android.BaseModuleContext) bool {
apexInfo, _ := android.ModuleProvider(ctx, android.ApexInfoProvider)
isJacocoAgent := ctx.ModuleName() == "jacocoagent"
- if j.DirectlyInAnyApex() && !isJacocoAgent && !apexInfo.IsForPlatform() {
+ compileDex := Bool(j.dexProperties.Compile_dex) || Bool(j.properties.Installable)
+ if compileDex && !isJacocoAgent && !apexInfo.IsForPlatform() {
if !inList(ctx.ModuleName(), config.InstrumentFrameworkModules) {
return true
} else if ctx.Config().IsEnvTrue("EMMA_INSTRUMENT_FRAMEWORK") {
@@ -1735,20 +1736,10 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath
completeStaticLibsImplementationJarsToCombine := completeStaticLibsImplementationJars
- // 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
- }
+
+ // Enable dex compilation for the APEX variants, unless it is disabled explicitly
+ compileDex := Bool(j.dexProperties.Compile_dex) || Bool(j.properties.Installable)
if j.shouldInstrument(ctx) && (!ctx.Device() || compileDex) {
instrumentedOutputFile := j.instrument(ctx, flags, outputFile, jarName, specs)
@@ -2331,7 +2322,10 @@ func (m *Module) getSdkLinkType(ctx android.BaseModuleContext, name string) (ret
"stable.core.platform.api.stubs",
"stub-annotations", "private-stub-annotations-jar",
"core-lambda-stubs",
- "core-generated-annotation-stubs":
+ "core-generated-annotation-stubs",
+ // jacocoagent only uses core APIs, but has to specify a non-core sdk_version so it can use
+ // a prebuilt SDK to avoid circular dependencies when it statically included in the bootclasspath.
+ "jacocoagent":
return javaCore, true
case android.SdkPublic.DefaultJavaLibraryName():
return javaSdk, true