diff options
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/ApplicationManifest.java | 65 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java | 77 |
2 files changed, 56 insertions, 86 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 441b0c4b12..8a28a16a6e 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 @@ -460,43 +460,38 @@ public final class ApplicationManifest { if (isLibrary && AndroidCommon.getAndroidConfig(ruleContext).useParallelResourceProcessing()) { // android_library should only build the APK one way (!incremental). Preconditions.checkArgument(!incremental); - Artifact rJavaClassJar = - ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_CLASS_JAR); - - ResourceContainer parsed = - new AndroidResourceParsingActionBuilder(ruleContext) - .setParse(data) - .withPrimary(resourceContainer) - .setOutput(resourceContainer.getSymbols()) - .build(ruleContext); - - ResourceContainer generated = - new LibraryRGeneratorActionBuilder() - .setJavaPackage(resourceContainer.getJavaPackage()) - .withPrimary(parsed) - .withDependencies(resourceDeps) - .setClassJarOut(rJavaClassJar) - .build(ruleContext); + Artifact rJavaClassJar = ruleContext.getImplicitOutputArtifact( + AndroidRuleClasses.ANDROID_RESOURCES_CLASS_JAR); + + if (resourceContainer.getSymbols() != null) { + new AndroidResourceParsingActionBuilder(ruleContext) + .withPrimary(resourceContainer) + .setParse(data) + .setOutput(resourceContainer.getSymbols()) + .build(ruleContext); + } - ResourceContainer merged = + AndroidResourceMergingActionBuilder resourcesMergerBuilder = new AndroidResourceMergingActionBuilder(ruleContext) - .setJavaPackage(generated.getJavaPackage()) - .withPrimary(generated) + .setJavaPackage(resourceContainer.getJavaPackage()) + .withPrimary(resourceContainer) .withDependencies(resourceDeps) .setMergedResourcesOut(mergedResources) .setManifestOut(manifestOut) - .setDataBindingInfoZip(dataBindingInfoZip) - .build(ruleContext); + .setClassJarOut(rJavaClassJar) + .setDataBindingInfoZip(dataBindingInfoZip); + ResourceContainer merged = resourcesMergerBuilder.build(ruleContext); - processed = + AndroidResourceValidatorActionBuilder validatorBuilder = new AndroidResourceValidatorActionBuilder(ruleContext) .setJavaPackage(merged.getJavaPackage()) - .setDebug(ruleContext.getConfiguration().getCompilationMode() != CompilationMode.OPT) + .setDebug( + ruleContext.getConfiguration().getCompilationMode() != CompilationMode.OPT) .setMergedResources(mergedResources) .withPrimary(merged) .setSourceJarOut(merged.getJavaSourceJar()) - .setRTxtOut(merged.getRTxt()) - .build(ruleContext); + .setRTxtOut(merged.getRTxt()); + processed = validatorBuilder.build(ruleContext); } else { AndroidResourcesProcessorBuilder builder = new AndroidResourcesProcessorBuilder(ruleContext) @@ -646,16 +641,14 @@ public final class ApplicationManifest { additionalAaptOpts.build(), resourceFilter.getDensities()); - ResourceContainer updatedResources = - resourceContainer - .toBuilder() - .setLabel(ruleContext.getLabel()) - .setApk(resourceApk) - .setManifest(getManifest()) - .setJavaSourceJar(javaSourcesJar) - .setJavaClassJar(null) - .setSymbols(null) - .build(); + ResourceContainer updatedResources = resourceContainer.toBuilder() + .setLabel(ruleContext.getLabel()) + .setApk(resourceApk) + .setManifest(getManifest()) + .setJavaSourceJar(javaSourcesJar) + .setJavaClassJar(null) + .setSymbols(null) + .build(); aaptActionHelper.createGenerateProguardAction(proguardCfg, mainDexProguardCfg); diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java index 8bba37d7d1..52cd935e2e 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidLibraryTest.java @@ -718,10 +718,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { "<resources><string name = 'hello'>Hello Android!</string></resources>"); ConfiguredTarget resource = getConfiguredTarget("//c/b/m/a:r"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs(resource, ImmutableList.of("c/b/m/a/b_/res"), args); } @@ -736,10 +734,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { "<resources><string name = 'hello'>Hello Android!</string></resources>"); ConfiguredTarget resource = getConfiguredTarget("//java/android:r"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs(resource, ImmutableList.of("java/android/res"), args); } @@ -756,10 +752,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { "<resources><string name = 'hello'>Hello Android!</string></resources>"); ConfiguredTarget resource = getConfiguredTarget("//java/android:r"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs(resource, ImmutableList.of("java/android/res"), args); } @@ -774,10 +768,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { "exports_files(['res/values/strings.xml'])"); ConfiguredTarget resource = getConfiguredTarget("//java/android:r"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs(resource, ImmutableList.of("java/other/res"), args); assertNoEvents(); } @@ -795,10 +787,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { ")"); ConfiguredTarget resource = getConfiguredTarget("//java/android:r"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs(resource, ImmutableList.of("java/other/res"), args); assertNoEvents(); } @@ -817,10 +807,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { "exports_files(['res/values/strings.xml'])"); ConfiguredTarget resource = getConfiguredTarget("//java/android:r"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs(resource, ImmutableList.of("java/other/res"), args); assertNoEvents(); } @@ -841,10 +829,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { ")"); ConfiguredTarget resource = getConfiguredTarget("//java/android:r"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs(resource, ImmutableList.of("java/other/res"), args); assertNoEvents(); } @@ -1086,27 +1072,22 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { target.getProvider(AndroidResourcesProvider.class).getDirectAndroidResources()); SpawnAction resourceParserAction = - getGeneratingSpawnAction( - getImplicitOutputArtifact(target, AndroidRuleClasses.ANDROID_MERGED_SYMBOLS)); - - SpawnAction mergeAction = - getGeneratingSpawnAction( - getImplicitOutputArtifact(target, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)); - + (SpawnAction) + actionsTestUtil() + .getActionForArtifactEndingWith(artifacts, + "/" + resources.getSymbols().getFilename()); SpawnAction resourceClassJarAction = (SpawnAction) actionsTestUtil() - .getActionForArtifactEndingWith( - artifacts, "/" + resources.getJavaClassJar().getFilename()); - + .getActionForArtifactEndingWith(artifacts, + "/" + resources.getJavaClassJar().getFilename()); SpawnAction resourceSrcJarAction = (SpawnAction) actionsTestUtil() - .getActionForArtifactEndingWith( - artifacts, "/" + resources.getJavaSourceJar().getFilename()); + .getActionForArtifactEndingWith(artifacts, + "/" + resources.getJavaSourceJar().getFilename()); assertThat(resourceParserAction.getMnemonic()).isEqualTo("AndroidResourceParser"); - assertThat(mergeAction.getMnemonic()).isEqualTo("AndroidResourceMerger"); - assertThat(resourceClassJarAction.getMnemonic()).isEqualTo("LibraryRClassGenerator"); + assertThat(resourceClassJarAction.getMnemonic()).isEqualTo("AndroidResourceMerger"); assertThat(resourceSrcJarAction.getMnemonic()).isEqualTo("AndroidResourceValidator"); // Validator also generates an R.txt. assertThat(resourceSrcJarAction.getOutputs()).contains(resources.getRTxt()); @@ -1376,10 +1357,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { " resource_files = ['d2-res/values/strings.xml'],", " )"); ConfiguredTarget resource = getConfiguredTarget("//java/android/resources/d1:d1"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs(resource, ImmutableList.of("java/android/resources/d1/d1-res"), args); Truth.assertThat(getDirectDependentResourceDirs(resource, args)) .contains("java/android/resources/d2/d2-res"); @@ -1416,10 +1395,8 @@ public class AndroidLibraryTest extends AndroidBuildViewTestCase { " )"); ConfiguredTarget resource = getConfiguredTarget("//java/android/resources/d1:d1"); - List<String> args = - getGeneratingSpawnAction( - getImplicitOutputArtifact(resource, AndroidRuleClasses.ANDROID_RESOURCES_ZIP)) - .getArguments(); + List<String> args = ((SpawnAction) getGeneratingAction(getResourceArtifact(resource))) + .getArguments(); assertPrimaryResourceDirs( resource, ImmutableList.of("java/android/resources/d1/d1-res"), args); Truth.assertThat(getDirectDependentResourceDirs(resource, args)) |