Move databinding processing out of resource merging
This unblocks the removal of the now-unused AndroidResourceMerger action.
PiperOrigin-RevId: 283654177
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java
index 7969986..fa53809 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java
@@ -199,10 +199,6 @@
parsedMergeBuilder.addOutput("--resourcesOutput", mergedResourcesOut);
- // TODO(corysmith): Move the data binding parsing out of the merging pass to enable faster
- // aapt2 builds.
- parsedMergeBuilder.maybeAddOutput("--dataBindingInfoOut", dataBindingInfoZip);
-
(useCompiledMerge ? compiledMergeBuilder : parsedMergeBuilder)
.addOutput("--classJarOutput", classJarOut)
.addLabelFlag("--targetLabel")
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 eac81c6..d18c845 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
@@ -15,6 +15,7 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.MoreObjects;
+import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.cmdline.Label;
@@ -43,19 +44,12 @@
throws InterruptedException {
boolean isAapt2 = aaptVersion == AndroidAaptVersion.AAPT2;
+ Preconditions.checkState(isAapt2);
AndroidResourceParsingActionBuilder builder = new AndroidResourceParsingActionBuilder();
- if (isAapt2) {
- // TODO(corysmith): Centralize the data binding processing and zipping into a single
- // action. Data binding processing needs to be triggered here as well as the merger to
- // avoid aapt2 from throwing an error during compilation.
- dataBindingContext.supplyLayoutInfo(
- layoutInfo ->
- builder.setDataBindingInfoZip(
- getDummyDataBindingArtifact(dataContext.getActionConstructionContext())));
- }
-
+ // TODO(b/120093531): This is only used in Databinding v1.
+ dataBindingContext.supplyLayoutInfo(builder::setDataBindingInfoZip);
// In databinding v2, this strips out the databinding and generates the layout info file.
AndroidResources databindingProcessedResources =
dataBindingContext.processResources(dataContext, resources, manifest.getPackage());
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/databinding/DataBinding.java b/src/main/java/com/google/devtools/build/lib/rules/android/databinding/DataBinding.java
index 3bf37d8..05c0584 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/databinding/DataBinding.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/databinding/DataBinding.java
@@ -135,7 +135,8 @@
.getRelative(ruleContext.getUniqueDirectory("databinding"));
}
- static Artifact getLayoutInfoFile(ActionConstructionContext actionConstructionContext) {
+ @VisibleForTesting
+ public static Artifact getLayoutInfoFile(ActionConstructionContext actionConstructionContext) {
return actionConstructionContext.getUniqueDirectoryArtifact("databinding", "layout-info.zip");
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
index 03a2f05..a2a20cc 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidResourcesTest.java
@@ -265,7 +265,7 @@
/* outputs = */ ImmutableList.of(parsed.getSymbols()));
// The compile action should take in resources and manifest in and output compiled symbols and
- // an unused data binding zip.
+ // a databinding zip.
assertActionArtifacts(
ruleContext,
/* inputs = */ ImmutableList.<Artifact>builder()
@@ -273,8 +273,7 @@
.add(parsed.getManifest())
.build(),
/* outputs = */ ImmutableList.of(
- parsed.getCompiledSymbols(),
- ParsedAndroidResources.getDummyDataBindingArtifact(ruleContext)));
+ parsed.getCompiledSymbols(), DataBinding.getLayoutInfoFile(ruleContext)));
}
@Test