Deprecate --experimental_android_use_singlejar_for_multidex. Also remove the $zip attribute of android_binary and android_test. RELNOTES: --experimental_android_use_singlejar_for_multidex is now a no-op and will eventually be removed. PiperOrigin-RevId: 154111305
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index 7fbe3a2..1fe14d8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -1621,38 +1621,24 @@ } /** - * Creates an action that copies a .zip file to a specified path, filtering all non-.dex files - * out of the output. + * Creates an action that copies a .zip file to a specified path, filtering all non-.dex files out + * of the output. */ - static void createCleanDexZipAction(RuleContext ruleContext, Artifact inputZip, - Artifact outputZip) { - if (ruleContext.getFragment(AndroidConfiguration.class).useSingleJarForMultidex()) { - ruleContext.registerAction(singleJarSpawnActionBuilder(ruleContext) - .addArgument("--exclude_build_data") - .addArgument("--dont_change_compression") - .addArgument("--sources") - .addInputArgument(inputZip) - .addArgument("--output") - .addOutputArgument(outputZip) - .addArgument("--include_prefixes") - .addArgument("classes") - .setProgressMessage("Trimming " + inputZip.getExecPath().getBaseName()) - .setMnemonic("TrimDexZip") - .build(ruleContext)); - } else { - ruleContext.registerAction(new SpawnAction.Builder() - .setExecutable(ruleContext.getExecutablePrerequisite("$zip", Mode.HOST)) - .addInput(inputZip) - .addOutput(outputZip) - .addArgument(inputZip.getExecPathString()) - .addArgument("--out") - .addArgument(outputZip.getExecPathString()) - .addArgument("--copy") - .addArgument("classes*.dex") - .setProgressMessage("Trimming " + inputZip.getExecPath().getBaseName()) - .setMnemonic("TrimDexZip") - .build(ruleContext)); - } + static void createCleanDexZipAction( + RuleContext ruleContext, Artifact inputZip, Artifact outputZip) { + ruleContext.registerAction( + singleJarSpawnActionBuilder(ruleContext) + .addArgument("--exclude_build_data") + .addArgument("--dont_change_compression") + .addArgument("--sources") + .addInputArgument(inputZip) + .addArgument("--output") + .addOutputArgument(outputZip) + .addArgument("--include_prefixes") + .addArgument("classes") + .setProgressMessage("Trimming " + inputZip.getExecPath().getBaseName()) + .setMnemonic("TrimDexZip") + .build(ruleContext)); } /**
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java index cece137..f0e2a88 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
@@ -460,7 +460,9 @@ name = "experimental_android_use_singlejar_for_multidex", defaultValue = "true", optionUsageRestrictions = OptionUsageRestrictions.UNDOCUMENTED, - help = "Use SingleJar for multidex dex extraction." + deprecationWarning = + "This flag is deprecated and is a no-op. It will be removed in a future release.", + help = "This flag is deprecated and is a no-op. It will be removed in a future release." ) public boolean useSingleJarForMultidex; @@ -602,7 +604,6 @@ private final AndroidManifestMerger manifestMerger; private final ApkSigningMethod apkSigningMethod; private final boolean useSingleJarApkBuilder; - private final boolean useSingleJarForMultidex; private final ResourceFilter resourceFilter; private final boolean useSingleJarForProguardLibraryJars; private final boolean compressJavaResources; @@ -634,7 +635,6 @@ this.manifestMerger = options.manifestMerger; this.apkSigningMethod = options.apkSigningMethod; this.useSingleJarApkBuilder = options.useSingleJarApkBuilder; - this.useSingleJarForMultidex = options.useSingleJarForMultidex; this.useSingleJarForProguardLibraryJars = options.useSingleJarForProguardLibraryJars; this.useRexToCompressDexFiles = options.useRexToCompressDexFiles; this.resourceFilter = options.resourceFilter; @@ -737,10 +737,6 @@ return useSingleJarApkBuilder; } - public boolean useSingleJarForMultidex() { - return useSingleJarForMultidex; - } - public ResourceFilter getResourceFilter() { return resourceFilter; }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java index 6863a92..3715c0c 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
@@ -105,7 +105,6 @@ @Test public void testMainDexProguardSpecs() throws Exception { - useConfiguration("--experimental_android_use_singlejar_for_multidex"); ConfiguredTarget ct = scratchConfiguredTarget("java/a", "a", "android_binary(", " name = 'a',", @@ -972,19 +971,16 @@ @Test public void testDexMainListOpts() throws Exception { - useConfiguration("--experimental_android_use_singlejar_for_multidex"); checkDexMainListOpts("[ '--opt1', '--opt2' ]", "--opt1", "--opt2"); } @Test public void testDexMainListOptsTokenization() throws Exception { - useConfiguration("--experimental_android_use_singlejar_for_multidex"); checkDexMainListOpts("[ '--opt1', '--opt2 tokenized' ]", "--opt1", "--opt2", "tokenized"); } @Test public void testDexMainListOptsMakeVariableSubstitution() throws Exception { - useConfiguration("--experimental_android_use_singlejar_for_multidex"); checkDexMainListOpts("[ '--opt1', '$(COMPILATION_MODE)' ]", "--opt1", "fastbuild"); } @@ -1753,7 +1749,6 @@ @Test public void testNoCrunchWithMultidexNative() throws Exception { - useConfiguration("--experimental_android_use_singlejar_for_multidex"); scratch.file("java/r/android/BUILD", "android_library(name = 'resources',", " manifest = 'AndroidManifest.xml',", @@ -2094,8 +2089,7 @@ " multidex = 'legacy',", " main_dex_list_opts = ['--hello', '--world'])"); - useConfiguration( - "--android_sdk=//sdk:sdk", "--experimental_android_use_singlejar_for_multidex"); + useConfiguration("--android_sdk=//sdk:sdk"); ConfiguredTarget a = getConfiguredTarget("//java/a:a"); Artifact mainDexList = ActionsTestUtil.getFirstArtifactEndingWith( actionsTestUtil().artifactClosureOf(getFilesToBuild(a)), "main_dex_list.txt"); @@ -2131,8 +2125,7 @@ " manifest = 'AndroidManifest.xml',", " multidex = 'legacy')"); - useConfiguration( - "--android_sdk=//sdk:sdk", "--experimental_android_use_singlejar_for_multidex"); + useConfiguration("--android_sdk=//sdk:sdk"); ConfiguredTarget a = getConfiguredTarget("//java/a:a"); Artifact intermediateJar = artifactByPath(ImmutableList.of(getCompressedUnsignedApk(a)), ".apk", ".dex.zip", ".dex.zip", "main_dex_list.txt", "_intermediate.jar"); @@ -2146,7 +2139,6 @@ @Test public void testMainDexGenerationWithoutProguardMap() throws Exception { - useConfiguration("--experimental_android_use_singlejar_for_multidex"); scratchConfiguredTarget("java/foo", "abin", "android_binary(", " name = 'abin',",