diff options
Diffstat (limited to 'java/dex.go')
-rw-r--r-- | java/dex.go | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/java/dex.go b/java/dex.go index 00a0537e8..64465a2de 100644 --- a/java/dex.go +++ b/java/dex.go @@ -234,21 +234,29 @@ func (d *dexer) dexCommonFlags(ctx android.ModuleContext, 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. |