Internal change
PiperOrigin-RevId: 214773061
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
index 90a55e2..fec7ff6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
@@ -78,9 +78,7 @@
AndroidResourcesProcessorBuilder builder =
builderForNonIncrementalTopLevelTarget(dataContext, manifest, manifestValues, aaptVersion)
- .setUseCompiledResourcesForMerge(
- aaptVersion == AndroidAaptVersion.AAPT2
- && dataContext.getAndroidConfig().skipParsingAction())
+ .setUseCompiledResourcesForMerge(aaptVersion == AndroidAaptVersion.AAPT2)
.setManifestOut(
dataContext.createOutputArtifact(AndroidRuleClasses.ANDROID_PROCESSED_MANIFEST))
.setMergedResourcesOut(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
index a82adce..83e8290 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
@@ -4327,7 +4327,7 @@
ConfiguredTarget b = getDirectPrerequisite(a, "//java/b:b");
List<String> resourceProcessingArgs =
- getGeneratingSpawnActionArgs(getValidatedResources(a).getRTxt());
+ getGeneratingSpawnActionArgs(getValidatedResources(a).getApk());
assertThat(resourceProcessingArgs).contains("AAPT2_PACKAGE");
String directData =
@@ -4344,6 +4344,50 @@
}
@Test
+ public void alwaysSkipParsingActionWithAapt2() throws Exception {
+ mockAndroidSdkWithAapt2();
+ scratch.file(
+ "java/b/BUILD",
+ "android_library(",
+ " name = 'b',",
+ " srcs = ['B.java'],",
+ " manifest = 'AndroidManifest.xml',",
+ " resource_files = [ 'res/values/values.xml' ], ",
+ ")");
+
+ scratch.file(
+ "java/a/BUILD",
+ "android_binary(",
+ " name = 'a',",
+ " srcs = ['A.java'],",
+ " manifest = 'AndroidManifest.xml',",
+ " deps = [ '//java/b:b' ],",
+ " resource_files = [ 'res/values/values.xml' ], ",
+ " aapt_version = 'aapt2'",
+ ")");
+
+ useConfiguration("--android_sdk=//sdk:sdk");
+ ConfiguredTarget a = getConfiguredTarget("//java/a:a");
+ ConfiguredTarget b = getDirectPrerequisite(a, "//java/b:b");
+
+ List<String> resourceProcessingArgs =
+ getGeneratingSpawnActionArgs(getValidatedResources(a).getApk());
+
+ assertThat(resourceProcessingArgs).contains("AAPT2_PACKAGE");
+ String directData =
+ resourceProcessingArgs.get(resourceProcessingArgs.indexOf("--directData") + 1);
+ assertThat(directData).contains("symbols.zip");
+ assertThat(directData).doesNotContain("merged.bin");
+ assertThat(resourceProcessingArgs).contains("--useCompiledResourcesForMerge");
+
+ // Libraries will still need to merge the xml until skip parsing is on by default.
+ List<String> resourceMergingArgs =
+ getGeneratingSpawnActionArgs(getValidatedResources(b).getJavaClassJar());
+
+ assertThat(resourceMergingArgs).contains("MERGE");
+ }
+
+ @Test
public void testAapt1BuildsWithAapt2Sdk() throws Exception {
mockAndroidSdkWithAapt2();
scratch.file(