diff options
author | 2018-02-16 17:09:16 -0800 | |
---|---|---|
committer | 2018-02-16 17:11:17 -0800 | |
commit | 97c4a9e9acfab5796d3f8f1b55bc4306425166a2 (patch) | |
tree | 43f776dea615c18df396c6530a1e05847eca1ab1 /src/main | |
parent | d18d3e2f83f9d582858a3edab7a450c60044028c (diff) |
add flag to use incremental dexing by default for proguarded android binaries
RELNOTES: None.
PiperOrigin-RevId: 186067158
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java | 8 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java | 26 |
2 files changed, 29 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index 1a354ad336..6026c40bb1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -1140,12 +1140,10 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { if (override == TriState.NO) { return false; } - if (isBinaryProguarded) { - // Require explicit opt-in for proguarded binaries, but no need to check dexopts since we'll - // be able to create dexbuilder actions with the appropriate flags as part of this rule. - return override == TriState.YES; - } if (override == TriState.YES || config.useIncrementalDexing()) { + if (isBinaryProguarded) { + return override == TriState.YES || config.incrementalDexingAfterProguardByDefault(); + } Iterable<String> blacklistedDexopts = DexArchiveAspect.blacklistedDexopts(ruleContext, dexopts); if (Iterables.isEmpty(blacklistedDexopts)) { 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 661590a85e..b988dfa566 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 @@ -458,6 +458,17 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { ) public boolean incrementalDexingUseDexSharder; + @Option( + name = "experimental_incremental_dexing_after_proguard_by_default", + defaultValue = "false", + metadataTags = {OptionMetadataTag.EXPERIMENTAL}, + documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, + effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS}, + help = "Whether to use incremental dexing for proguarded Android binaries by default. " + + "Use incremental_dexing attribute to override default for a particular android_binary." + ) + public boolean incrementalDexingAfterProguardByDefault; + // TODO(b/31711689): Remove this flag when this optimization is proven to work globally. @Option( name = "experimental_android_assume_minsdkversion", @@ -788,6 +799,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { host.incrementalDexing = incrementalDexing; host.incrementalDexingShardsAfterProguard = incrementalDexingShardsAfterProguard; host.incrementalDexingUseDexSharder = incrementalDexingUseDexSharder; + host.incrementalDexingAfterProguardByDefault = incrementalDexingAfterProguardByDefault; host.assumeMinSdkVersion = assumeMinSdkVersion; host.nonIncrementalPerTargetDexopts = nonIncrementalPerTargetDexopts; host.dexoptsSupportedInIncrementalDexing = dexoptsSupportedInIncrementalDexing; @@ -831,6 +843,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { private final boolean incrementalDexing; private final int incrementalDexingShardsAfterProguard; private final boolean incrementalDexingUseDexSharder; + private final boolean incrementalDexingAfterProguardByDefault; private final boolean assumeMinSdkVersion; private final ImmutableList<String> dexoptsSupportedInIncrementalDexing; private final ImmutableList<String> targetDexoptsThatPreventIncrementalDexing; @@ -864,6 +877,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { this.incrementalDexing = options.incrementalDexing; this.incrementalDexingShardsAfterProguard = options.incrementalDexingShardsAfterProguard; this.incrementalDexingUseDexSharder = options.incrementalDexingUseDexSharder; + this.incrementalDexingAfterProguardByDefault = options.incrementalDexingAfterProguardByDefault; this.assumeMinSdkVersion = options.assumeMinSdkVersion; this.dexoptsSupportedInIncrementalDexing = ImmutableList.copyOf(options.dexoptsSupportedInIncrementalDexing); @@ -896,6 +910,11 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { throw new InvalidConfigurationException( "--experimental_incremental_dexing_after_proguard must be a positive number"); } + if (incrementalDexingAfterProguardByDefault && incrementalDexingShardsAfterProguard == 0) { + throw new InvalidConfigurationException( + "--experimental_incremental_dexing_after_proguard_by_default requires " + + "--experimental_incremental_dexing_after_proguard to be at least 1"); + } if (desugarJava8Libs && !desugarJava8) { throw new InvalidConfigurationException( "Java 8 library support requires --desugar_java8 to be enabled."); @@ -911,6 +930,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { boolean incrementalDexing, int incrementalDexingShardsAfterProguard, boolean incrementalDexingUseDexSharder, + boolean incrementalDexingAfterProguardByDefault, boolean assumeMinSdkVersion, ImmutableList<String> dexoptsSupportedInIncrementalDexing, ImmutableList<String> targetDexoptsThatPreventIncrementalDexing, @@ -942,6 +962,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { this.incrementalDexing = incrementalDexing; this.incrementalDexingShardsAfterProguard = incrementalDexingShardsAfterProguard; this.incrementalDexingUseDexSharder = incrementalDexingUseDexSharder; + this.incrementalDexingAfterProguardByDefault = incrementalDexingAfterProguardByDefault; this.assumeMinSdkVersion = assumeMinSdkVersion; this.dexoptsSupportedInIncrementalDexing = dexoptsSupportedInIncrementalDexing; this.targetDexoptsThatPreventIncrementalDexing = targetDexoptsThatPreventIncrementalDexing; @@ -1001,6 +1022,11 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { return incrementalDexingUseDexSharder; } + /** Whether to use incremental dexing to build proguarded binaries by default. */ + public boolean incrementalDexingAfterProguardByDefault() { + return incrementalDexingAfterProguardByDefault; + } + /** * Returns true if an -assumevalues should be generated for Proguard based on the minSdkVersion of * the merged AndroidManifest. |