aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-11-21 10:48:16 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-21 10:50:20 -0800
commit59d2ece50d7998e355afff8fd7cabd4215fc070d (patch)
tree4fb6faa733c951e4a5ad83b11e239feaec52950f /src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
parent1c2d2bd3b1c3b5d9929b6cac90c3b73fceca41ef (diff)
Add option to enable resource cycle shrinking.
This will instruct AAPT2 to produce conditional keep rules to allow for more aggressive code and resource shrinking. RELNOTES[NEW]: Add --experimental_android_resource_cycle_shrinking option to allow for more aggressive code and resource shrinking. PiperOrigin-RevId: 176530749
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
index e378f54fba..70ef13b9aa 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
@@ -585,6 +585,7 @@ public final class ApplicationManifest {
boolean crunchPng,
Artifact proguardCfg,
@Nullable Artifact mainDexProguardCfg,
+ boolean conditionalKeepRules,
Artifact manifestOut,
Artifact mergedResources,
@Nullable Artifact dataBindingInfoZip,
@@ -623,6 +624,11 @@ public final class ApplicationManifest {
boolean skipParsingAction =
targetAaptVersion == AndroidAaptVersion.AAPT2 && androidConfiguration.skipParsingAction();
+ if (conditionalKeepRules && targetAaptVersion != AndroidAaptVersion.AAPT2) {
+ throw ruleContext.throwWithRuleError(
+ "resource cycle shrinking can only be enabled for builds with aapt2");
+ }
+
ResourceContainer processed =
new AndroidResourcesProcessorBuilder(ruleContext)
.setLibrary(false)
@@ -638,6 +644,7 @@ public final class ApplicationManifest {
.withDependencies(resourceDeps)
.setProguardOut(proguardCfg)
.setMainDexProguardOut(mainDexProguardCfg)
+ .conditionalKeepRules(conditionalKeepRules)
.setDataBindingInfoZip(dataBindingInfoZip)
.setApplicationId(manifestValues.get("applicationId"))
.setVersionCode(manifestValues.get("versionCode"))