diff options
author | 2017-08-08 23:37:30 +0200 | |
---|---|---|
committer | 2017-08-09 11:35:05 +0200 | |
commit | 1e05dd06e31328f78b015c374275f8e6bb258b6d (patch) | |
tree | 44776edbbe8fcde336e0a5f496c6ddbc27ca48c4 /src/main/java | |
parent | 062fe70189fc622285833311d241021be313680b (diff) |
Add flag to use processed resource apk manifest file
RELNOTES: none
PiperOrigin-RevId: 164646858
Diffstat (limited to 'src/main/java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java | 16 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java | 6 |
2 files changed, 21 insertions, 1 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 b94fbab04c..0ce599e980 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 @@ -687,6 +687,16 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { ) public boolean throwOnResourceConflict; + @Option( + name = "experimental_use_manifest_from_resource_apk", + defaultValue = "false", + documentationCategory = OptionDocumentationCategory.UNCATEGORIZED, + effectTags = {OptionEffectTag.UNKNOWN}, + help = "Android library rule will use the AppManifest from the resource APK" + + " in the AAR file." + ) + public boolean useManifestFromResourceApk; + @Override public FragmentOptions getHost(boolean fallback) { Options host = (Options) super.getHost(fallback); @@ -765,6 +775,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { private final boolean generateRobolectricRClass; private final boolean throwOnResourceConflict; private final boolean useParallelDex2Oat; + private final boolean useManifestFromResourceApk; AndroidConfiguration(Options options) throws InvalidConfigurationException { @@ -801,6 +812,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { this.generateRobolectricRClass = options.generateRobolectricRClass; this.throwOnResourceConflict = options.throwOnResourceConflict; this.useParallelDex2Oat = options.useParallelDex2Oat; + this.useManifestFromResourceApk = options.useManifestFromResourceApk; if (!dexoptsSupportedInIncrementalDexing.contains("--no-locals")) { // TODO(bazel-team): Still needed? See DexArchiveAspect @@ -929,6 +941,10 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment { return throwOnResourceConflict; } + boolean useManifestFromResourceApk() { + return useManifestFromResourceApk; + } + @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/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java index 4e416083cc..b9a1471ac0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java @@ -141,7 +141,11 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { if (definesLocalResources) { primaryResources = resourceApk.getPrimaryResource(); // applicationManifest has already been checked for nullness above in this method - ApplicationManifest applicationManifest = androidSemantics.getManifestForRule(ruleContext); + ApplicationManifest applicationManifest = + ruleContext.getFragment(AndroidConfiguration.class).useManifestFromResourceApk() + ? ApplicationManifest.fromExplicitManifest(ruleContext, resourceApk.getManifest()) + : androidSemantics.getManifestForRule(ruleContext); + aar = Aar.create(aarOut, applicationManifest.getManifest()); addAarToProvider(aar, transitiveAars, transitiveAarArtifacts); } else if (AndroidCommon.getAndroidResources(ruleContext) != null) { |