diff options
author | 2025-03-18 15:18:58 -0700 | |
---|---|---|
committer | 2025-03-19 11:48:52 -0700 | |
commit | b97f1d1b6b790619514395126527f3639e16fe6f (patch) | |
tree | a7df4e422f35afe1278657183d1fc395be1d8ed9 | |
parent | 92d29690f16cdbba244b523c9110cb9af999d22e (diff) |
Use d8 when on eng builds
This is consistent with all of the other ways that eng builds are
faster, but do not match the expected performance of user or userdebug
builds.
We still use r8 if a module has `optimize: { enabled: true,}`.
Bug: b/374975543
Test: manual, TH
Change-Id: I28c6de4472f4df1f791758294d45b67acc0a7b7c
-rw-r--r-- | java/app.go | 2 | ||||
-rw-r--r-- | java/base.go | 2 | ||||
-rw-r--r-- | java/dex.go | 12 | ||||
-rw-r--r-- | java/dex_test.go | 2 | ||||
-rw-r--r-- | java/java.go | 4 |
5 files changed, 12 insertions, 10 deletions
diff --git a/java/app.go b/java/app.go index 553c65894..5c0a9a6ba 100644 --- a/java/app.go +++ b/java/app.go @@ -691,7 +691,7 @@ func (a *AndroidApp) aaptBuildActions(ctx android.ModuleContext) { } // Use non final ids if we are doing optimized shrinking and are using R8. - nonFinalIds := a.dexProperties.optimizedResourceShrinkingEnabled(ctx) && a.dexer.effectiveOptimizeEnabled() + nonFinalIds := a.dexProperties.optimizedResourceShrinkingEnabled(ctx) && a.dexer.effectiveOptimizeEnabled(ctx) aconfigTextFilePaths := getAconfigFilePaths(ctx) diff --git a/java/base.go b/java/base.go index 1a12075bc..8aa0109d0 100644 --- a/java/base.go +++ b/java/base.go @@ -1816,7 +1816,7 @@ func (j *Module) compile(ctx android.ModuleContext, extraSrcJars, extraClasspath classesJar: outputFile, jarName: jarName, } - if j.GetProfileGuided(ctx) && j.optimizeOrObfuscateEnabled() && !j.EnableProfileRewriting(ctx) { + if j.GetProfileGuided(ctx) && j.optimizeOrObfuscateEnabled(ctx) && !j.EnableProfileRewriting(ctx) { ctx.PropertyErrorf("enable_profile_rewriting", "Enable_profile_rewriting must be true when profile_guided dexpreopt and R8 optimization/obfuscation is turned on. The attached profile should be sourced from an unoptimized/unobfuscated APK.", ) diff --git a/java/dex.go b/java/dex.go index ed9c82ba2..dd6467546 100644 --- a/java/dex.go +++ b/java/dex.go @@ -161,8 +161,8 @@ type dexer struct { providesTransitiveHeaderJarsForR8 } -func (d *dexer) effectiveOptimizeEnabled() bool { - return BoolDefault(d.dexProperties.Optimize.Enabled, d.dexProperties.Optimize.EnabledByDefault) +func (d *dexer) effectiveOptimizeEnabled(ctx android.EarlyModuleContext) bool { + return BoolDefault(d.dexProperties.Optimize.Enabled, d.dexProperties.Optimize.EnabledByDefault && !ctx.Config().Eng()) } func (d *DexProperties) resourceShrinkingEnabled(ctx android.ModuleContext) bool { @@ -173,8 +173,8 @@ func (d *DexProperties) optimizedResourceShrinkingEnabled(ctx android.ModuleCont return d.resourceShrinkingEnabled(ctx) && BoolDefault(d.Optimize.Optimized_shrink_resources, ctx.Config().UseOptimizedResourceShrinkingByDefault()) } -func (d *dexer) optimizeOrObfuscateEnabled() bool { - return d.effectiveOptimizeEnabled() && (proptools.Bool(d.dexProperties.Optimize.Optimize) || proptools.Bool(d.dexProperties.Optimize.Obfuscate)) +func (d *dexer) optimizeOrObfuscateEnabled(ctx android.EarlyModuleContext) bool { + return d.effectiveOptimizeEnabled(ctx) && (proptools.Bool(d.dexProperties.Optimize.Optimize) || proptools.Bool(d.dexProperties.Optimize.Obfuscate)) } var d8, d8RE = pctx.MultiCommandRemoteStaticRules("d8", @@ -353,7 +353,7 @@ func (d *dexer) dexCommonFlags(ctx android.ModuleContext, flags = append(flags, "--release") } else if ctx.Config().Eng() { flags = append(flags, "--debug") - } else if !d.effectiveOptimizeEnabled() && d.dexProperties.Optimize.EnabledByDefault { + } else if !d.effectiveOptimizeEnabled(ctx) && d.dexProperties.Optimize.EnabledByDefault { // D8 uses --debug by default, whereas R8 uses --release by default. // For targets that default to R8 usage (e.g., apps), but override this default, we still // want D8 to run in release mode, preserving semantics as much as possible between the two. @@ -627,7 +627,7 @@ func (d *dexer) compileDex(ctx android.ModuleContext, dexParams *compileDexParam mergeZipsFlags = "-stripFile META-INF/*.kotlin_module -stripFile **/*.kotlin_builtins" } - useR8 := d.effectiveOptimizeEnabled() + useR8 := d.effectiveOptimizeEnabled(ctx) useD8 := !useR8 || ctx.Config().PartialCompileFlags().Use_d8 rbeR8 := ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_R8") rbeD8 := ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_D8") diff --git a/java/dex_test.go b/java/dex_test.go index e94864bbc..8c1e5f7df 100644 --- a/java/dex_test.go +++ b/java/dex_test.go @@ -797,12 +797,14 @@ func TestDebugReleaseFlags(t *testing.T) { }, { name: "app_eng", + useD8: true, isEng: true, expectedFlags: "--debug", }, { name: "app_release_eng", isEng: true, + useD8: true, dxFlags: "--release", // Eng mode does *not* override explicit dxflags. expectedFlags: "--release", diff --git a/java/java.go b/java/java.go index dd9f852f0..07e38a17e 100644 --- a/java/java.go +++ b/java/java.go @@ -670,12 +670,12 @@ func sdkDeps(ctx android.BottomUpMutatorContext, sdkContext android.SdkContext, ctx.AddVariationDependencies(nil, bootClasspathTag, sdkDep.bootclasspath...) ctx.AddVariationDependencies(nil, java9LibTag, sdkDep.java9Classpath...) ctx.AddVariationDependencies(nil, sdkLibTag, sdkDep.classpath...) - if d.effectiveOptimizeEnabled() && sdkDep.hasStandardLibs() { + if d.effectiveOptimizeEnabled(ctx) && sdkDep.hasStandardLibs() { ctx.AddVariationDependencies(nil, proguardRaiseTag, config.LegacyCorePlatformBootclasspathLibraries..., ) } - if d.effectiveOptimizeEnabled() && sdkDep.hasFrameworkLibs() { + if d.effectiveOptimizeEnabled(ctx) && sdkDep.hasFrameworkLibs() { ctx.AddVariationDependencies(nil, proguardRaiseTag, config.FrameworkLibraries...) } } |