diff options
author | Googler <noreply@google.com> | 2017-11-21 10:48:16 -0800 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2017-11-21 10:50:20 -0800 |
commit | 59d2ece50d7998e355afff8fd7cabd4215fc070d (patch) | |
tree | 4fb6faa733c951e4a5ad83b11e239feaec52950f /src/tools/android/java/com/google | |
parent | 1c2d2bd3b1c3b5d9929b6cac90c3b73fceca41ef (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')
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"); |