aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com/google
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/tools/android/java/com/google
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/tools/android/java/com/google')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java2
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java10
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java8
3 files changed, 20 insertions, 0 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
index 9bdd1a098f..5739afa377 100644
--- a/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/Aapt2ResourcePackagingAction.java
@@ -29,6 +29,7 @@ import com.google.devtools.build.android.aapt2.ResourceLinker;
import com.google.devtools.build.android.aapt2.StaticLibrary;
import com.google.devtools.common.options.OptionsParser;
import com.google.devtools.common.options.ShellQuotedParamsFilePreProcessor;
+import com.google.devtools.common.options.TriState;
import java.io.Closeable;
import java.io.IOException;
import java.nio.file.FileSystems;
@@ -186,6 +187,7 @@ public class Aapt2ResourcePackagingAction {
.include(compiledResourceDeps)
.withAssets(assetDirs)
.buildVersion(aaptConfigOptions.buildToolsVersion)
+ .conditionalKeepRules(aaptConfigOptions.conditionalKeepRules == TriState.YES)
.filterToDensity(densitiesToFilter)
.includeOnlyConfigs(aaptConfigOptions.resourceConfigs)
.link(compiled)
diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java
index aa02712957..6d8d614116 100644
--- a/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java
+++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/Aapt2ConfigOptions.java
@@ -90,6 +90,16 @@ public class Aapt2ConfigOptions extends OptionsBase {
public TriState useAaptCruncher;
@Option(
+ name = "conditionalKeepRules",
+ defaultValue = "auto",
+ category = "config",
+ documentationCategory = OptionDocumentationCategory.UNCATEGORIZED,
+ effectTags = {OptionEffectTag.UNKNOWN},
+ help = "Have AAPT2 produce conditional keep rules."
+ )
+ public TriState conditionalKeepRules;
+
+ @Option(
name = "uncompressedExtensions",
defaultValue = "",
converter = CommaSeparatedOptionListConverter.class,
diff --git a/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java b/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java
index 309fa235ab..2787722c36 100644
--- a/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java
+++ b/src/tools/android/java/com/google/devtools/build/android/aapt2/ResourceLinker.java
@@ -63,6 +63,7 @@ public class ResourceLinker {
private Path baseApk;
private List<CompiledResources> include = ImmutableList.of();
private List<Path> assetDirs = ImmutableList.of();
+ private boolean conditionalKeepRules = false;
private ResourceLinker(Path aapt2, Path workingDirectory) {
this.aapt2 = aapt2;
@@ -101,6 +102,11 @@ public class ResourceLinker {
return this;
}
+ public ResourceLinker conditionalKeepRules(boolean conditionalKeepRules) {
+ this.conditionalKeepRules = conditionalKeepRules;
+ return this;
+ }
+
public ResourceLinker baseApkToLinkAgainst(Path baseApk) {
this.baseApk = baseApk;
return this;
@@ -243,6 +249,8 @@ public class ResourceLinker {
.add("--java", javaSourceDirectory)
.add("--proguard", proguardConfig)
.add("--proguard-main-dex", mainDexProguard)
+ .when(conditionalKeepRules)
+ .thenAdd("--proguard-conditional-keep-rules")
.add("-o", outPath)
.execute(String.format("Linking %s", compiled.getManifest())));
profiler.recordEndOf("fulllink");