diff --git a/java/dex.go b/java/dex.go index 15b4431db..21a59266e 100644 --- a/java/dex.go +++ b/java/dex.go @@ -38,6 +38,10 @@ type DexProperties struct { // True if the module containing this has it set by default. EnabledByDefault bool `blueprint:"mutated"` + // If true, runs R8 in Proguard compatibility mode (default). + // Otherwise, runs R8 in full mode. + Proguard_compatibility *bool + // If true, optimize for size by removing unused code. Defaults to true for apps, // false for libraries and tests. Shrink *bool @@ -113,7 +117,6 @@ var r8, r8RE = remoteexec.MultiCommandStaticRules(pctx, "r8", `rm -f "$outDict" && rm -rf "${outUsageDir}" && ` + `mkdir -p $$(dirname ${outUsage}) && ` + `$r8Template${config.R8Cmd} ${config.DexFlags} -injars $in --output $outDir ` + - `--force-proguard-compatibility ` + `--no-data-resources ` + `-printmapping ${outDict} ` + `-printusage ${outUsage} ` + @@ -230,6 +233,10 @@ func (d *dexer) r8Flags(ctx android.ModuleContext, flags javaBuilderFlags) (r8Fl r8Flags = append(r8Flags, opt.Proguard_flags...) + if BoolDefault(opt.Proguard_compatibility, true) { + r8Flags = append(r8Flags, "--force-proguard-compatibility") + } + // TODO(ccross): Don't shrink app instrumentation tests by default. if !Bool(opt.Shrink) { r8Flags = append(r8Flags, "-dontshrink")