From 8484082fadf858afbadf7919ac60af047dc01145 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Tue, 3 Oct 2023 11:24:06 -0700 Subject: [PATCH] Don't create withres-withoutdex files for R8 The withres-withoutdex files were added in b/195558228 because D8 produced errors when given an input jar that contained both class and dex files: Error: com.android.tools.r8.internal.Cc: Cannot create android app from an archive 'out/soong/.intermediates/libcore/libcore-crypto-tests/android_common/withres/libcore-crypto-tests.jar' containing both DEX and Java-bytecode content It turns out R8 doesn't have this problem, it defaults to ignoring *.dex files unless the com.android.tools.r8.allowDexInputToR8 system property is set. Remove the withres-withoutdex files when using R8, but keep it in place for D8 for now. Bug: 302573555 Bug: 303264288 Bug: 303064127 Test: m checkbuild Test: m Calendar && m Calendar Test: m framework-minus-apex && m framework-minus-apex Change-Id: Ib6410f7fef6faf5913476c6423cdd27215c68c45 --- java/dex.go | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/java/dex.go b/java/dex.go index 1aa4d1c69..348c93921 100644 --- a/java/dex.go +++ b/java/dex.go @@ -140,9 +140,7 @@ var r8, r8RE = pctx.MultiCommandRemoteStaticRules("r8", Command: `rm -rf "$outDir" && mkdir -p "$outDir" && ` + `rm -f "$outDict" && rm -f "$outConfig" && rm -rf "${outUsageDir}" && ` + `mkdir -p $$(dirname ${outUsage}) && ` + - `mkdir -p $$(dirname $tmpJar) && ` + - `${config.Zip2ZipCmd} -i $in -o $tmpJar -x '**/*.dex' && ` + - `$r8Template${config.R8Cmd} ${config.R8Flags} -injars $tmpJar --output $outDir ` + + `$r8Template${config.R8Cmd} ${config.R8Flags} -injars $in --output $outDir ` + `--no-data-resources ` + `-printmapping ${outDict} ` + `-printconfiguration ${outConfig} ` + @@ -187,7 +185,7 @@ var r8, r8RE = pctx.MultiCommandRemoteStaticRules("r8", Platform: map[string]string{remoteexec.PoolKey: "${config.REJavaPool}"}, }, }, []string{"outDir", "outDict", "outConfig", "outUsage", "outUsageZip", "outUsageDir", - "r8Flags", "zipFlags", "tmpJar", "mergeZipsFlags"}, []string{"implicits"}) + "r8Flags", "zipFlags", "mergeZipsFlags"}, []string{"implicits"}) func (d *dexer) dexCommonFlags(ctx android.ModuleContext, dexParams *compileDexParams) (flags []string, deps android.Paths) { @@ -370,7 +368,6 @@ func (d *dexer) compileDex(ctx android.ModuleContext, dexParams *compileDexParam // Compile classes.jar into classes.dex and then javalib.jar javalibJar := android.PathForModuleOut(ctx, "dex", dexParams.jarName).OutputPath outDir := android.PathForModuleOut(ctx, "dex") - tmpJar := android.PathForModuleOut(ctx, "withres-withoutdex", dexParams.jarName) zipFlags := "--ignore_missing_files" if proptools.Bool(d.dexProperties.Uncompress_dex) { @@ -408,7 +405,6 @@ func (d *dexer) compileDex(ctx android.ModuleContext, dexParams *compileDexParam "outUsage": proguardUsage.String(), "outUsageZip": proguardUsageZip.String(), "outDir": outDir.String(), - "tmpJar": tmpJar.String(), "mergeZipsFlags": mergeZipsFlags, } if ctx.Config().UseRBE() && ctx.Config().IsEnvTrue("RBE_R8") { @@ -428,6 +424,7 @@ func (d *dexer) compileDex(ctx android.ModuleContext, dexParams *compileDexParam Args: args, }) } else { + tmpJar := android.PathForModuleOut(ctx, "withres-withoutdex", dexParams.jarName) d8Flags, d8Deps := d8Flags(dexParams.flags) d8Deps = append(d8Deps, commonDeps...) rule := d8