aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar ajmichael <ajmichael@google.com>2017-04-19 05:05:59 +0200
committerGravatar Klaus Aehlig <aehlig@google.com>2017-04-19 10:49:52 +0200
commitcdcd27cb17ff16cca428d5269cbd5dd41fba39bf (patch)
treeafbb53308ffd1b40555623824eab17ac8ef9b4da /src/main/java/com/google/devtools/build/lib/rules
parent57df98e8ac121d7ed1e552ce8cc98a116511655a (diff)
RELNOTES: None
PiperOrigin-RevId: 153545346
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java14
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ApkActionsBuilder.java13
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));
}