aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java
diff options
context:
space:
mode:
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.java75
1 files changed, 29 insertions, 46 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 1ef2406f50..36ef672877 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
@@ -302,8 +302,7 @@ public final class ApplicationManifest {
ResourceDependencies resourceDeps,
Artifact rTxt,
boolean incremental,
- Artifact proguardCfg)
- throws InterruptedException {
+ Artifact proguardCfg) throws InterruptedException, RuleErrorException {
LocalResourceContainer data = new LocalResourceContainer.Builder(ruleContext)
.withAssets(
AndroidCommon.getAssetDir(ruleContext),
@@ -317,16 +316,12 @@ public final class ApplicationManifest {
ruleContext,
false, /* isLibrary */
resourceDeps,
- ResourceFilter.empty(ruleContext),
ImmutableList.<String>of(), /* uncompressedExtensions */
true, /* crunchPng */
incremental,
ResourceContainer.builderFromRule(ruleContext)
- .setAssetsAndResourcesFrom(data)
- .setManifest(getManifest())
.setRTxt(rTxt)
- .setApk(resourceApk)
- .build(),
+ .setApk(resourceApk),
data,
proguardCfg,
null, /* Artifact mainDexProguardCfg */
@@ -346,15 +341,12 @@ public final class ApplicationManifest {
Artifact symbols,
Artifact manifestOut,
Artifact mergedResources,
- boolean alwaysExportManifest)
- throws InterruptedException {
+ boolean alwaysExportManifest) throws InterruptedException, RuleErrorException {
if (ruleContext.hasErrors()) {
return null;
}
ResourceContainer.Builder resourceContainer =
ResourceContainer.builderFromRule(ruleContext)
- .setAssetsAndResourcesFrom(data)
- .setManifest(getManifest())
.setRTxt(rTxt)
.setSymbols(symbols)
.setJavaPackageFrom(JavaPackageSource.MANIFEST);
@@ -365,11 +357,10 @@ public final class ApplicationManifest {
ruleContext,
true, /* isLibrary */
resourceDeps,
- ResourceFilter.empty(ruleContext),
ImmutableList.<String>of(), /* List<String> uncompressedExtensions */
false, /* crunchPng */
false, /* incremental */
- resourceContainer.build(),
+ resourceContainer,
data,
null, /* Artifact proguardCfg */
null, /* Artifact mainDexProguardCfg */
@@ -385,7 +376,6 @@ public final class ApplicationManifest {
RuleContext ruleContext,
Artifact resourceApk,
ResourceDependencies resourceDeps,
- ResourceFilter resourceFilter,
List<String> uncompressedExtensions,
boolean crunchPng,
Artifact proguardCfg)
@@ -407,15 +397,11 @@ public final class ApplicationManifest {
ruleContext,
false /* isLibrary */,
resourceDeps,
- resourceFilter,
uncompressedExtensions,
crunchPng,
true,
ResourceContainer.builderFromRule(ruleContext)
- .setAssetsAndResourcesFrom(data)
- .setManifest(getManifest())
- .setApk(resourceApk)
- .build(),
+ .setApk(resourceApk),
data,
proguardCfg,
null, /* mainDexProguardCfg */
@@ -433,7 +419,6 @@ public final class ApplicationManifest {
Artifact resourceApk,
ResourceDependencies resourceDeps,
Artifact rTxt,
- ResourceFilter resourceFilter,
List<String> uncompressedExtensions,
boolean crunchPng,
Artifact proguardCfg,
@@ -464,16 +449,12 @@ public final class ApplicationManifest {
ruleContext,
false /* isLibrary */,
resourceDeps,
- resourceFilter,
uncompressedExtensions,
crunchPng,
false /* incremental */,
ResourceContainer.builderFromRule(ruleContext)
- .setAssetsAndResourcesFrom(data)
- .setManifest(getManifest())
.setRTxt(rTxt)
- .setApk(resourceApk)
- .build(),
+ .setApk(resourceApk),
data,
proguardCfg,
mainDexProguardCfg,
@@ -490,7 +471,6 @@ public final class ApplicationManifest {
ResourceDependencies resourceDeps,
Artifact rTxt,
Artifact symbols,
- ResourceFilter resourceFilter,
Artifact manifestOut,
Artifact mergedResources,
Artifact dataBindingInfoZip)
@@ -512,17 +492,13 @@ public final class ApplicationManifest {
ruleContext,
true /* isLibrary */,
resourceDeps,
- resourceFilter,
ImmutableList.<String>of() /* uncompressedExtensions */,
false /* crunchPng */,
false /* incremental */,
ResourceContainer.builderFromRule(ruleContext)
- .setAssetsAndResourcesFrom(data)
- .setManifest(getManifest())
.setRTxt(rTxt)
.setSymbols(symbols)
- .setApk(null)
- .build(),
+ .setApk(null),
data,
null /* proguardCfg */,
null /* mainDexProguardCfg */,
@@ -537,11 +513,10 @@ public final class ApplicationManifest {
RuleContext ruleContext,
boolean isLibrary,
ResourceDependencies resourceDeps,
- ResourceFilter resourceFilter,
List<String> uncompressedExtensions,
boolean crunchPng,
boolean incremental,
- ResourceContainer maybeInlinedResourceContainer,
+ ResourceContainer.Builder maybeInlinedResourceContainerBuilder,
LocalResourceContainer data,
Artifact proguardCfg,
@Nullable Artifact mainDexProguardCfg,
@@ -549,23 +524,31 @@ public final class ApplicationManifest {
Artifact mergedResources,
Artifact dataBindingInfoZip,
@Nullable Artifact featureOf,
- @Nullable Artifact featureAfter) throws InterruptedException {
- ResourceContainer resourceContainer = checkForInlinedResources(
- maybeInlinedResourceContainer,
- resourceDeps.getResources(), // TODO(bazel-team): Figure out if we really need to check
- // the ENTIRE transitive closure, or just the direct dependencies. Given that each rule with
- // resources would check for inline resources, we can rely on the previous rule to have
- // checked its dependencies.
- ruleContext);
- if (ruleContext.hasErrors()) {
- return null;
- }
-
+ @Nullable Artifact featureAfter)
+ throws InterruptedException, RuleErrorException {
// Filter the resources during analysis to prevent processing of and dependencies on unwanted
// resources during execution.
- resourceContainer = resourceContainer.filter(ruleContext, resourceFilter);
+ ResourceFilter resourceFilter = ResourceFilter.fromRuleContext(ruleContext);
+ data = data.filter(ruleContext, resourceFilter);
resourceDeps = resourceDeps.filter(ruleContext, resourceFilter);
+ // Now that the LocalResourceContainer has been filtered, we can build a filtered resource
+ // container from it.
+ ResourceContainer resourceContainer =
+ checkForInlinedResources(
+ maybeInlinedResourceContainerBuilder
+ .setManifest(getManifest())
+ .setAssetsAndResourcesFrom(data)
+ .build(),
+ resourceDeps.getResources(), // TODO(bazel-team): Figure out if we really need to check
+ // the ENTIRE transitive closure, or just the direct dependencies. Given that each rule
+ // with resources would check for inline resources, we can rely on the previous rule to
+ // have checked its dependencies.
+ ruleContext);
+ if (ruleContext.hasErrors()) {
+ return null;
+ }
+
ResourceContainer processed;
if (isLibrary && AndroidCommon.getAndroidConfig(ruleContext).useParallelResourceProcessing()) {
// android_library should only build the APK one way (!incremental).