diff options
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java | 14 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java | 13 |
2 files changed, 27 insertions, 0 deletions
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 3cfa842f9f..cece1373ad 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 @@ -514,6 +514,14 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { ) public boolean includeLibraryResourceJars; + @Option(name = "experimental_android_use_nocompress_extensions_on_apk", + defaultValue = "false", + optionUsageRestrictions = OptionUsageRestrictions.UNDOCUMENTED, + implicitRequirements = "--use_singlejar_apkbuilder", + help = "Use the value of nocompress_extensions attribute with the SingleJar " + + "--nocompress_suffixes flag when building the APK.") + public boolean useNocompressExtensionsOnApk; + @Override public void addAllLabels(Multimap<String, Label> labelMap) { if (androidCrosstoolTop != null) { @@ -599,6 +607,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { private final boolean useSingleJarForProguardLibraryJars; private final boolean compressJavaResources; private final boolean includeLibraryResourceJars; + private final boolean useNocompressExtensionsOnApk; AndroidConfiguration(Options options, Label androidSdk) throws InvalidConfigurationException { this.sdk = androidSdk; @@ -631,6 +640,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { this.resourceFilter = options.resourceFilter; this.compressJavaResources = options.compressJavaResources; this.includeLibraryResourceJars = options.includeLibraryResourceJars; + this.useNocompressExtensionsOnApk = options.useNocompressExtensionsOnApk; if (!dexoptsSupportedInIncrementalDexing.contains("--no-locals")) { // TODO(bazel-team): Still needed? See DexArchiveAspect @@ -747,6 +757,10 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { return includeLibraryResourceJars; } + boolean useNocompressExtensionsOnApk() { + return useNocompressExtensionsOnApk; + } + @Override public void addGlobalMakeVariables(ImmutableMap.Builder<String, String> globalMakeEnvBuilder) { globalMakeEnvBuilder.put("ANDROID_CPU", cpu); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java index 5ce97b1dfc..96ed11b2d6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java @@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.rules.android; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; @@ -358,6 +359,18 @@ public class ApkActionsBuilder { } } + ImmutableList<String> noCompressExtensions = + ruleContext.getTokenizedStringListAttr("nocompress_extensions"); + if (ruleContext.getFragment(AndroidConfiguration.class).useNocompressExtensionsOnApk() + && !noCompressExtensions.isEmpty()) { + compressedApkActionBuilder + .addArgument("--nocompress_suffixes") + .addArguments(noCompressExtensions); + singleJarActionBuilder + .addArgument("--nocompress_suffixes") + .addArguments(noCompressExtensions); + } + ruleContext.registerAction(compressedApkActionBuilder.build(ruleContext)); ruleContext.registerAction(singleJarActionBuilder.build(ruleContext)); } |