Use D8 --release for default-optimized targets
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.
Note: This will have no effect for library targets (e.g., framework.jar)
that use D8 by default
Test: m + presubmit
Bug: 389956793
Flag: EXEMPT low-risk bugfix
Change-Id: I0bb4126685896b63052afbdf4274515e70a95c18
diff --git a/java/dex.go b/java/dex.go
index 00a0537..64465a2 100644
--- a/java/dex.go
+++ b/java/dex.go
@@ -234,21 +234,29 @@
deps = append(deps, f)
}
- var requestReleaseMode bool
+ var requestReleaseMode, requestDebugMode bool
requestReleaseMode, flags = android.RemoveFromList("--release", flags)
+ requestDebugMode, flags = android.RemoveFromList("--debug", flags)
if ctx.Config().Getenv("NO_OPTIMIZE_DX") != "" || ctx.Config().Getenv("GENERATE_DEX_DEBUG") != "" {
- flags = append(flags, "--debug")
+ requestDebugMode = true
requestReleaseMode = false
}
// Don't strip out debug information for eng builds, unless the target
// explicitly provided the `--release` build flag. This allows certain
// test targets to remain optimized as part of eng test_suites builds.
- if requestReleaseMode {
+ if requestDebugMode {
+ flags = append(flags, "--debug")
+ } else if requestReleaseMode {
flags = append(flags, "--release")
} else if ctx.Config().Eng() {
flags = append(flags, "--debug")
+ } else if !d.effectiveOptimizeEnabled() && 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.
+ flags = append(flags, "--release")
}
// Supplying the platform build flag disables various features like API modeling and desugaring.