Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 05ca7c87 authored by Colin Cross's avatar Colin Cross
Browse files

Pass jars with resources to R8

R8 will parse proguard files out of resources in injars.  Use the jar
with resources instead of the classes jar so that R8 can see the
proguard files.

R8 fails when an input jar contains dex files, so filter out dex files
from the input jar before passing it to r8.

Bug: 195558228
Test: m checkbuild
Change-Id: Ibb870ee9c70470336f542a3b7542dab86716dbf8
parent 16e0773e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1230,7 +1230,7 @@ func (j *Module) compile(ctx android.ModuleContext, aaptSrcJar android.Path) {
			}
			// Dex compilation
			var dexOutputFile android.OutputPath
			dexOutputFile = j.dexer.compileDex(ctx, flags, j.MinSdkVersion(ctx), outputFile, jarName)
			dexOutputFile = j.dexer.compileDex(ctx, flags, j.MinSdkVersion(ctx), implementationAndResourcesJar, jarName)
			if ctx.Failed() {
				return
			}
+6 −2
Original line number Diff line number Diff line
@@ -92,11 +92,13 @@ func init() {
var d8, d8RE = pctx.MultiCommandRemoteStaticRules("d8",
	blueprint.RuleParams{
		Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` +
			`$d8Template${config.D8Cmd} ${config.DexFlags} --output $outDir $d8Flags $in && ` +
			`${config.Zip2ZipCmd} -i $in -o $outDir/in.jar -x '**/*.dex' &&` +
			`$d8Template${config.D8Cmd} ${config.DexFlags} --output $outDir $d8Flags $outDir/in.jar && ` +
			`$zipTemplate${config.SoongZipCmd} $zipFlags -o $outDir/classes.dex.jar -C $outDir -f "$outDir/classes*.dex" && ` +
			`${config.MergeZipsCmd} -D -stripFile "**/*.class" $out $outDir/classes.dex.jar $in`,
		CommandDeps: []string{
			"${config.D8Cmd}",
			"${config.Zip2ZipCmd}",
			"${config.SoongZipCmd}",
			"${config.MergeZipsCmd}",
		},
@@ -122,10 +124,11 @@ var r8, r8RE = pctx.MultiCommandRemoteStaticRules("r8",
		Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` +
			`rm -f "$outDict" && rm -rf "${outUsageDir}" && ` +
			`mkdir -p $$(dirname ${outUsage}) && ` +
			`${config.Zip2ZipCmd} -i $in -o $outDir/in.jar -x '**/*.dex' &&` +
			// TODO(b/181095653): remove R8 timeout and go back to config.R8Cmd.
			`${runWithTimeoutCmd} -timeout 30m -on_timeout '${jstackCmd} $$PID' -- ` +
			`$r8Template${config.JavaCmd} ${config.DexJavaFlags} -cp ${config.R8Jar} ` +
			`com.android.tools.r8.compatproguard.CompatProguard -injars $in --output $outDir ` +
			`com.android.tools.r8.compatproguard.CompatProguard -injars $outDir/in.jar --output $outDir ` +
			`--no-data-resources ` +
			`-printmapping ${outDict} ` +
			`-printusage ${outUsage} ` +
@@ -137,6 +140,7 @@ var r8, r8RE = pctx.MultiCommandRemoteStaticRules("r8",
			`${config.MergeZipsCmd} -D -stripFile "**/*.class" $out $outDir/classes.dex.jar $in`,
		CommandDeps: []string{
			"${config.R8Jar}",
			"${config.Zip2ZipCmd}",
			"${config.SoongZipCmd}",
			"${config.MergeZipsCmd}",
			"${runWithTimeoutCmd}",