aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-08-07 11:47:49 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-07 11:49:40 -0700
commitdb8a2e8a652b8900dce127b30d3d20bfa97a2052 (patch)
tree91746806d3fdd841178a10227d2ac25d2a7e848e
parentf12d58509f3e41b253205533b211ee226e99ad65 (diff)
Remove analysis code for old resource processing pipeline
This code should all be unused now. Some code it calls into will be removed in the next changes. RELNOTES: none PiperOrigin-RevId: 207753966
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java63
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java120
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java93
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java65
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java88
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java2
10 files changed, 135 insertions, 310 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
index 46f391878e..ab257ac612 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java
@@ -96,47 +96,28 @@ public class AarImport implements RuleConfiguredTargetFactory {
ruleContext.registerAction(
createAarResourcesExtractorActions(ruleContext, aar, resources, assets));
- final AndroidDataContext dataContext = androidSemantics.makeContextForNative(ruleContext);
- final ResourceApk resourceApk;
- if (AndroidResources.decoupleDataProcessing(dataContext)) {
- StampedAndroidManifest manifest = AndroidManifest.forAarImport(androidManifestArtifact);
-
- boolean neverlink = JavaCommon.isNeverLink(ruleContext);
- ValidatedAndroidResources validatedResources =
- AndroidResources.forAarImport(resources)
- .process(
- ruleContext,
- dataContext,
- manifest,
- DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()),
- neverlink);
- MergedAndroidAssets mergedAssets =
- AndroidAssets.forAarImport(assets)
- .process(
- dataContext,
- AssetDependencies.fromRuleDeps(ruleContext, neverlink),
- AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
-
- resourceApk = ResourceApk.of(validatedResources, mergedAssets, null, null);
- } else {
- ApplicationManifest androidManifest =
- ApplicationManifest.fromExplicitManifest(ruleContext, androidManifestArtifact);
-
- Artifact resourcesZip =
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_ZIP);
-
- resourceApk =
- androidManifest.packAarWithDataAndResources(
- ruleContext,
- dataContext,
- AndroidAssets.forAarImport(assets),
- AndroidResources.forAarImport(resources),
- ResourceDependencies.fromRuleDeps(ruleContext, JavaCommon.isNeverLink(ruleContext)),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_LOCAL_SYMBOLS),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_PROCESSED_MANIFEST),
- resourcesZip);
- }
+ AndroidDataContext dataContext = androidSemantics.makeContextForNative(ruleContext);
+ StampedAndroidManifest manifest = AndroidManifest.forAarImport(androidManifestArtifact);
+
+ boolean neverlink = JavaCommon.isNeverLink(ruleContext);
+
+ ValidatedAndroidResources validatedResources =
+ AndroidResources.forAarImport(resources)
+ .process(
+ ruleContext,
+ dataContext,
+ manifest,
+ DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()),
+ neverlink);
+
+ MergedAndroidAssets mergedAssets =
+ AndroidAssets.forAarImport(assets)
+ .process(
+ dataContext,
+ AssetDependencies.fromRuleDeps(ruleContext, neverlink),
+ AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
+
+ ResourceApk resourceApk = ResourceApk.of(validatedResources, mergedAssets, null, null);
// There isn't really any use case for building an aar_import target on its own, so the files to
// build could be empty. The resources zip and merged jars are added here as a sanity check for
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 90c9c6f303..e66fca7247 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
@@ -183,85 +183,47 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
AndroidResources.validateRuleContext(ruleContext);
final AndroidDataContext dataContext = androidSemantics.makeContextForNative(ruleContext);
- final ApplicationManifest applicationManifest;
- final ResourceApk resourceApk;
-
- if (AndroidResources.decoupleDataProcessing(dataContext)) {
- StampedAndroidManifest manifest =
- AndroidManifest.fromAttributes(ruleContext, dataContext, androidSemantics)
- .mergeWithDeps(
- dataContext,
- androidSemantics,
- resourceDeps,
- ApplicationManifest.getManifestValues(ruleContext),
- ApplicationManifest.useLegacyMerging(ruleContext));
- applicationManifest =
- ApplicationManifest.fromExplicitManifest(ruleContext, manifest.getManifest());
-
- AndroidAaptVersion aaptVersion = AndroidAaptVersion.chooseTargetAaptVersion(ruleContext);
- resourceApk =
- ProcessedAndroidData.processBinaryDataFrom(
- dataContext,
- ruleContext,
- manifest,
- /* conditionalKeepRules = */ shouldShrinkResourceCycles(
- dataContext.getAndroidConfig(), ruleContext, shrinkResources),
- applicationManifest.getManifestValues(),
- aaptVersion,
- AndroidResources.from(ruleContext, "resource_files"),
- AndroidAssets.from(ruleContext),
- resourceDeps,
- AssetDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false),
- ResourceFilterFactory.fromRuleContextAndAttrs(ruleContext),
- ruleContext.getExpander().withDataLocations().tokenized("nocompress_extensions"),
- ruleContext.attributes().get("crunch_png", Type.BOOLEAN),
- ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_of")
- ? ruleContext
- .getPrerequisite("feature_of", Mode.TARGET, ApkInfo.PROVIDER)
- .getApk()
- : null,
- ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_after")
- ? ruleContext
- .getPrerequisite("feature_after", Mode.TARGET, ApkInfo.PROVIDER)
- .getApk()
- : null,
- DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()))
- .generateRClass(dataContext, aaptVersion);
- } else {
- applicationManifest =
- androidSemantics
- .getManifestForRule(ruleContext)
- .mergeWith(ruleContext, dataContext, androidSemantics, resourceDeps);
-
- Artifact featureOfArtifact =
- ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_of")
- ? ruleContext.getPrerequisite("feature_of", Mode.TARGET, ApkInfo.PROVIDER).getApk()
- : null;
- Artifact featureAfterArtifact =
- ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_after")
- ? ruleContext.getPrerequisite("feature_after", Mode.TARGET, ApkInfo.PROVIDER).getApk()
- : null;
- resourceApk =
- applicationManifest.packBinaryWithDataAndResources(
- ruleContext,
- dataContext,
- DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_APK),
- resourceDeps,
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT),
- ResourceFilterFactory.fromRuleContextAndAttrs(ruleContext),
- ruleContext.getExpander().withDataLocations().tokenized("nocompress_extensions"),
- ruleContext.attributes().get("crunch_png", Type.BOOLEAN),
- ProguardHelper.getProguardConfigArtifact(ruleContext, ""),
- createMainDexProguardSpec(ruleContext.getLabel(), ruleContext),
- shouldShrinkResourceCycles(
- dataContext.getAndroidConfig(), ruleContext, shrinkResources),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_PROCESSED_MANIFEST),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_ZIP),
- featureOfArtifact,
- featureAfterArtifact);
- }
+ StampedAndroidManifest manifest =
+ AndroidManifest.fromAttributes(ruleContext, dataContext, androidSemantics)
+ .mergeWithDeps(
+ dataContext,
+ androidSemantics,
+ resourceDeps,
+ ApplicationManifest.getManifestValues(ruleContext),
+ ApplicationManifest.useLegacyMerging(ruleContext));
+ final ApplicationManifest applicationManifest =
+ ApplicationManifest.fromExplicitManifest(ruleContext, manifest.getManifest());
+
+ AndroidAaptVersion aaptVersion = AndroidAaptVersion.chooseTargetAaptVersion(ruleContext);
+ final ResourceApk resourceApk =
+ ProcessedAndroidData.processBinaryDataFrom(
+ dataContext,
+ ruleContext,
+ manifest,
+ /* conditionalKeepRules = */ shouldShrinkResourceCycles(
+ dataContext.getAndroidConfig(), ruleContext, shrinkResources),
+ applicationManifest.getManifestValues(),
+ aaptVersion,
+ AndroidResources.from(ruleContext, "resource_files"),
+ AndroidAssets.from(ruleContext),
+ resourceDeps,
+ AssetDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false),
+ ResourceFilterFactory.fromRuleContextAndAttrs(ruleContext),
+ ruleContext.getExpander().withDataLocations().tokenized("nocompress_extensions"),
+ ruleContext.attributes().get("crunch_png", Type.BOOLEAN),
+ ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_of")
+ ? ruleContext
+ .getPrerequisite("feature_of", Mode.TARGET, ApkInfo.PROVIDER)
+ .getApk()
+ : null,
+ ruleContext.attributes().isAttributeValueExplicitlySpecified("feature_after")
+ ? ruleContext
+ .getPrerequisite("feature_after", Mode.TARGET, ApkInfo.PROVIDER)
+ .getApk()
+ : null,
+ DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()))
+ .generateRClass(dataContext, aaptVersion);
ruleContext.assertNoErrors();
@@ -339,7 +301,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
MobileInstallResourceApks mobileInstallResourceApks =
AndroidBinaryMobileInstall.createMobileInstallResourceApks(
- ruleContext, dataContext, applicationManifest, resourceDeps);
+ ruleContext, dataContext, applicationManifest);
return createAndroidBinary(
ruleContext,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java
index 88877f93ec..348698f062 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java
@@ -38,8 +38,6 @@ import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
import com.google.devtools.build.lib.rules.java.JavaInfo;
import com.google.devtools.build.lib.rules.java.JavaSemantics;
import com.google.devtools.build.lib.rules.java.JavaTargetAttributes;
-import com.google.devtools.build.lib.rules.java.ProguardHelper;
-import com.google.devtools.build.lib.syntax.Type;
import java.util.Map;
/** Encapsulates the logic for creating actions for mobile-install. */
@@ -60,70 +58,41 @@ public final class AndroidBinaryMobileInstall {
static MobileInstallResourceApks createMobileInstallResourceApks(
RuleContext ruleContext,
AndroidDataContext dataContext,
- ApplicationManifest applicationManifest,
- ResourceDependencies resourceDeps)
+ ApplicationManifest applicationManifest)
throws RuleErrorException, InterruptedException {
final ResourceApk incrementalResourceApk;
final ResourceApk splitResourceApk;
- if (AndroidResources.decoupleDataProcessing(dataContext)) {
- StampedAndroidManifest manifest =
- new StampedAndroidManifest(
- applicationManifest.getManifest(), /* pkg = */ null, /* exported = */ true);
-
- incrementalResourceApk =
- ProcessedAndroidData.processIncrementalBinaryDataFrom(
- ruleContext,
- dataContext,
- manifest.addMobileInstallStubApplication(ruleContext),
- ruleContext.getImplicitOutputArtifact(
- AndroidRuleClasses.ANDROID_INCREMENTAL_RESOURCES_APK),
- getMobileInstallArtifact(ruleContext, "merged_incremental_resources.bin"),
- "incremental",
- applicationManifest.getManifestValues())
- // Intentionally skip building an R class JAR - incremental binaries handle this
- // separately.
- .withValidatedResources(null);
-
- splitResourceApk =
- ProcessedAndroidData.processIncrementalBinaryDataFrom(
- ruleContext,
- dataContext,
- manifest.createSplitManifest(ruleContext, "android_resources", false),
- getMobileInstallArtifact(ruleContext, "android_resources.ap_"),
- getMobileInstallArtifact(ruleContext, "merged_split_resources.bin"),
- "incremental_split",
- applicationManifest.getManifestValues())
- // Intentionally skip building an R class JAR - incremental binaries handle this
- // separately.
- .withValidatedResources(null);
- } else {
- incrementalResourceApk =
- applicationManifest
- .addMobileInstallStubApplication(ruleContext)
- .packIncrementalBinaryWithDataAndResources(
- ruleContext,
- dataContext,
- ruleContext.getImplicitOutputArtifact(
- AndroidRuleClasses.ANDROID_INCREMENTAL_RESOURCES_APK),
- resourceDeps,
- ruleContext.getExpander().withDataLocations().tokenized("nocompress_extensions"),
- ruleContext.attributes().get("crunch_png", Type.BOOLEAN),
- ProguardHelper.getProguardConfigArtifact(ruleContext, "incremental"));
- ruleContext.assertNoErrors();
-
- splitResourceApk =
- applicationManifest
- .createSplitManifest(ruleContext, "android_resources", false)
- .packIncrementalBinaryWithDataAndResources(
- ruleContext,
- dataContext,
- getMobileInstallArtifact(ruleContext, "android_resources.ap_"),
- resourceDeps,
- ruleContext.getExpander().withDataLocations().tokenized("nocompress_extensions"),
- ruleContext.attributes().get("crunch_png", Type.BOOLEAN),
- ProguardHelper.getProguardConfigArtifact(ruleContext, "incremental_split"));
- }
+ StampedAndroidManifest manifest =
+ new StampedAndroidManifest(
+ applicationManifest.getManifest(), /* pkg = */ null, /* exported = */ true);
+
+ incrementalResourceApk =
+ ProcessedAndroidData.processIncrementalBinaryDataFrom(
+ ruleContext,
+ dataContext,
+ manifest.addMobileInstallStubApplication(ruleContext),
+ ruleContext.getImplicitOutputArtifact(
+ AndroidRuleClasses.ANDROID_INCREMENTAL_RESOURCES_APK),
+ getMobileInstallArtifact(ruleContext, "merged_incremental_resources.bin"),
+ "incremental",
+ applicationManifest.getManifestValues())
+ // Intentionally skip building an R class JAR - incremental binaries handle this
+ // separately.
+ .withValidatedResources(null);
+
+ splitResourceApk =
+ ProcessedAndroidData.processIncrementalBinaryDataFrom(
+ ruleContext,
+ dataContext,
+ manifest.createSplitManifest(ruleContext, "android_resources", false),
+ getMobileInstallArtifact(ruleContext, "android_resources.ap_"),
+ getMobileInstallArtifact(ruleContext, "merged_split_resources.bin"),
+ "incremental_split",
+ applicationManifest.getManifestValues())
+ // Intentionally skip building an R class JAR - incremental binaries handle this
+ // separately.
+ .withValidatedResources(null);
ruleContext.assertNoErrors();
return new MobileInstallResourceApks(incrementalResourceApk, splitResourceApk);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java
index f0eaf20299..ffa414f9e1 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java
@@ -13,6 +13,7 @@
// limitations under the License.
package com.google.devtools.build.lib.rules.android;
+import com.google.common.annotations.VisibleForTesting;
import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.CommandLineItem.ParametrizedMapFn;
@@ -169,7 +170,8 @@ public class AndroidDataConverter<T> extends ParametrizedMapFn<T> {
}
}
- static String rootsToString(ImmutableList<PathFragment> roots) {
+ @VisibleForTesting
+ public static String rootsToString(ImmutableList<PathFragment> roots) {
return roots.stream().map(PathFragment::toString).collect(Collectors.joining("#"));
}
}
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 963ac63576..71cfb3b258 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
@@ -156,53 +156,32 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory {
// other artifacts.
final ResourceApk resourceApk;
if (definesLocalResources) {
- // By decoupling processing of manifest, resources and assets, we get a higher degree of
- // action parallelism.
- if (androidConfig.decoupleDataProcessing()) {
- StampedAndroidManifest manifest =
- AndroidManifest.fromAttributes(ruleContext, dataContext, androidSemantics)
- .stamp(dataContext);
-
- ValidatedAndroidResources resources =
- AndroidResources.from(ruleContext, "resource_files")
- .process(
- ruleContext,
- dataContext,
- manifest,
- DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()),
- isNeverLink);
-
- MergedAndroidAssets assets =
- AndroidAssets.from(ruleContext)
- .process(
- dataContext,
- assetDeps,
- AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
-
- resourceApk = ResourceApk.of(resources, assets, null, null);
- } else {
- // Monolithically process all Android data in the same pipeline.
- ApplicationManifest applicationManifest =
- androidSemantics
- .getManifestForRule(ruleContext)
- .renamePackage(dataContext, AndroidCommon.getJavaPackage(ruleContext));
- resourceApk =
- applicationManifest.packLibraryWithDataAndResources(
- ruleContext,
- dataContext,
- resourceDeps,
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_MERGED_SYMBOLS),
- ruleContext.getImplicitOutputArtifact(
- AndroidRuleClasses.ANDROID_PROCESSED_MANIFEST),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_ZIP),
- DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()));
- }
+ StampedAndroidManifest manifest =
+ AndroidManifest.fromAttributes(ruleContext, dataContext, androidSemantics)
+ .stamp(dataContext);
+
+ ValidatedAndroidResources resources =
+ AndroidResources.from(ruleContext, "resource_files")
+ .process(
+ ruleContext,
+ dataContext,
+ manifest,
+ DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()),
+ isNeverLink);
+
+ MergedAndroidAssets assets =
+ AndroidAssets.from(ruleContext)
+ .process(
+ dataContext, assetDeps, AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
+
+ resourceApk = ResourceApk.of(resources, assets, null, null);
+
if (ruleContext.hasErrors()) {
return null;
}
} else {
- // No local resources, but we still need to process transitive resources.
+ // No local resources, but we still need to process transitive resources in order to export an
+ // aar.
resourceApk =
ResourceApk.processFromTransitiveLibraryData(
dataContext,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
index 6e6743ce0e..5700cf35d0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java
@@ -60,7 +60,6 @@ import com.google.devtools.build.lib.rules.java.JavaSourceJarsProvider;
import com.google.devtools.build.lib.rules.java.JavaTargetAttributes;
import com.google.devtools.build.lib.rules.java.JavaToolchainProvider;
import com.google.devtools.build.lib.rules.java.OneVersionCheckActionBuilder;
-import com.google.devtools.build.lib.rules.java.ProguardHelper;
import com.google.devtools.build.lib.rules.java.proto.GeneratedExtensionRegistryProvider;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.OS;
@@ -94,49 +93,18 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
JavaTargetAttributes.Builder attributesBuilder = javaCommon.initCommon();
final AndroidDataContext dataContext = androidSemantics.makeContextForNative(ruleContext);
- final ResourceApk resourceApk;
-
- if (AndroidResources.decoupleDataProcessing(dataContext)) {
- resourceApk =
- buildResourceApk(
- dataContext,
- androidSemantics,
- DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()),
- AndroidManifest.fromAttributes(ruleContext, dataContext),
- AndroidResources.from(ruleContext, "resource_files"),
- AndroidAssets.from(ruleContext),
- ResourceDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false),
- AssetDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false),
- ApplicationManifest.getManifestValues(ruleContext),
- AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
- } else {
- // Create the final merged manifest
- ResourceDependencies resourceDependencies =
- ResourceDependencies.fromRuleDeps(ruleContext, /* neverlink= */ false);
-
- ApplicationManifest applicationManifest =
- getApplicationManifest(ruleContext, dataContext, resourceDependencies);
-
- // Create the final merged R class
- resourceApk =
- applicationManifest.packBinaryWithDataAndResources(
- ruleContext,
- dataContext,
- DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_APK),
- resourceDependencies,
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_R_TXT),
- ResourceFilterFactory.fromRuleContextAndAttrs(ruleContext),
- ImmutableList.of(), /* list of uncompressed extensions */
- false, /* crunch png */
- ProguardHelper.getProguardConfigArtifact(ruleContext, ""),
- /* mainDexProguardCfg= */ null,
- /* conditionalKeepRules= */ false,
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_PROCESSED_MANIFEST),
- ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_ZIP),
- null, /* featureOfArtifact */
- null /* featureAfterArtifact */);
- }
+ final ResourceApk resourceApk =
+ buildResourceApk(
+ dataContext,
+ androidSemantics,
+ DataBinding.contextFrom(ruleContext, dataContext.getAndroidConfig()),
+ AndroidManifest.fromAttributes(ruleContext, dataContext),
+ AndroidResources.from(ruleContext, "resource_files"),
+ AndroidAssets.from(ruleContext),
+ ResourceDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false),
+ AssetDependencies.fromRuleDeps(ruleContext, /* neverlink = */ false),
+ ApplicationManifest.getManifestValues(ruleContext),
+ AndroidAaptVersion.chooseTargetAaptVersion(ruleContext));
attributesBuilder.addRuntimeClassPathEntry(resourceApk.getResourceJavaClassJar());
@@ -408,38 +376,6 @@ public abstract class AndroidLocalTestBase implements RuleConfiguredTargetFactor
.build();
}
- /**
- * Returns a merged {@link ApplicationManifest} for the rule. The final merged manifest will be
- * merged into the manifest provided on the rule, or into a placeholder manifest if one is not
- * provided
- *
- * @throws InterruptedException
- * @throws RuleErrorException
- */
- private ApplicationManifest getApplicationManifest(
- RuleContext ruleContext,
- AndroidDataContext dataContext,
- ResourceDependencies resourceDependencies)
- throws InterruptedException, RuleErrorException {
- ApplicationManifest applicationManifest;
-
- if (AndroidResources.definesAndroidResources(ruleContext.attributes())) {
- AndroidResources.validateRuleContext(ruleContext);
- ApplicationManifest ruleManifest =
- ApplicationManifest.renamedFromRule(ruleContext, dataContext);
- applicationManifest =
- ruleManifest.mergeWith(
- ruleContext, dataContext, createAndroidSemantics(), resourceDependencies);
- } else {
- // we don't have a manifest, merge like android_library with a stub manifest
- ApplicationManifest dummyManifest = ApplicationManifest.generatedManifest(ruleContext);
- applicationManifest =
- dummyManifest.mergeWith(
- ruleContext, dataContext, createAndroidSemantics(), resourceDependencies);
- }
- return applicationManifest;
- }
-
private static void setUpJavaCommon(
JavaCommon common,
JavaCompilationHelper helper,
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
index c78533eb43..654397b4bf 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResources.java
@@ -102,10 +102,6 @@ public class AndroidResources {
validateManifest(ruleContext);
}
- public static boolean decoupleDataProcessing(AndroidDataContext dataContext) {
- return dataContext.getAndroidConfig().decoupleDataProcessing();
- }
-
/**
* Validates that there are no targets with resources in the srcs, as they should not be used with
* the Android data logic.
@@ -445,7 +441,7 @@ public class AndroidResources {
@Override
public boolean equals(Object object) {
- if (object == null || getClass() != object.getClass()) {
+ if (!(object instanceof AndroidResources)) {
return false;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
index f139a2b457..3ebefa4383 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
@@ -168,7 +168,7 @@ public class MergedAndroidResources extends ParsedAndroidResources {
@Override
public boolean equals(Object object) {
- if (!super.equals(object)) {
+ if (!super.equals(object) || !(object instanceof MergedAndroidResources)) {
return false;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
index bfb293577d..501079c72d 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
@@ -172,7 +172,7 @@ public class ParsedAndroidResources extends AndroidResources
@Override
public boolean equals(Object object) {
- if (!super.equals(object)) {
+ if (!super.equals(object) || !(object instanceof ParsedAndroidResources)) {
return false;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
index 172dcee898..4c151328e9 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ValidatedAndroidResources.java
@@ -170,7 +170,7 @@ public class ValidatedAndroidResources extends MergedAndroidResources
@Override
public boolean equals(Object object) {
- if (!super.equals(object)) {
+ if (!super.equals(object) || !(object instanceof ValidatedAndroidResources)) {
return false;
}