Stop AndroidResourceProcessingAction from creating a "_resources" folder in the source tree when invoked from ApplicationManifest and AndroidLibrary.

--
MOS_MIGRATED_REVID=103648946
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 1c69f38..bbbe3df 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
@@ -170,7 +170,6 @@
               .withDependencies(transitiveResources)
               .setDebug(
                   ruleContext.getConfiguration().getCompilationMode() != CompilationMode.OPT)
-              .setWorkingDirectory(ruleContext.getUniqueDirectory("_resources"))
               .build(ruleContext);
     }
 
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
index e313a87..1da4f5b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
@@ -27,7 +27,6 @@
 import com.google.devtools.build.lib.analysis.actions.SpawnAction;
 import com.google.devtools.build.lib.rules.android.AndroidResourcesProvider.ResourceContainer;
 import com.google.devtools.build.lib.rules.android.AndroidResourcesProvider.ResourceType;
-import com.google.devtools.build.lib.vfs.PathFragment;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -50,7 +49,6 @@
   private final AndroidSdkProvider sdk;
   private List<String> assetsToIgnore = Collections.emptyList();
   private SpawnAction.Builder spawnActionBuilder;
-  private PathFragment workingDirectory;
   private List<String> densities = Collections.emptyList();
   private String customJavaPackage;
   private final RuleContext ruleContext;
@@ -133,11 +131,6 @@
     return this;
   }
 
-  public AndroidResourcesProcessorBuilder setWorkingDirectory(PathFragment workingDirectory) {
-    this.workingDirectory = workingDirectory;
-    return this;
-  }
-
   private void addResourceContainer(List<Artifact> inputs, List<String> args,
       ResourceContainer container) {
     Iterables.addAll(inputs, container.getArtifacts());
@@ -204,11 +197,6 @@
       args.add(Joiner.on(",").join(data));
     }
 
-    if (rTxtOut != null || sourceJarOut != null) {
-      args.add("--generatedSourcePath");
-      args.add(workingDirectory.toString());
-    }
-
     if (rTxtOut != null) {
       args.add("--rOutput");
       args.add(rTxtOut.getExecPathString());
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 7fade53..7be804a 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
@@ -324,7 +324,6 @@
             .setDebug(ruleContext.getConfiguration().getCompilationMode() != CompilationMode.OPT)
             .withPrimary(resourceContainer)
             .withDependencies(resourceContainers)
-            .setWorkingDirectory(ruleContext.getUniqueDirectory("_resources"))
             .setDensities(densities)
             .setProguardOut(proguardCfg)
             .setApplicationId(applicationId)
diff --git a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java
index 8107f11..c29142a 100644
--- a/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/AndroidResourceProcessingAction.java
@@ -292,7 +292,14 @@
       expandedOut.toFile().deleteOnExit();
       Path deduplicatedOut = Files.createTempDirectory("tmp-deduplicated");
       deduplicatedOut.toFile().deleteOnExit();
-      
+
+      Path generatedSources = null;
+      if (options.srcJarOutput != null || options.rOutput != null
+          || options.symbolsTxtOut != null) {
+        generatedSources = Files.createTempDirectory("generated_resources");
+        generatedSources.toFile().deleteOnExit();
+      }
+
       LOGGER.fine(String.format("Setup finished at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
 
       final ImmutableList<DirectoryModifier> modifiers = ImmutableList.of(
@@ -332,18 +339,18 @@
           filteredData,
           options.data,
           working.resolve("manifest"),
-          options.generatedSourcePath,
+          generatedSources,
           options.packagePath,
           options.proguardOutput);
       LOGGER.fine(String.format("appt finished at %sms", timer.elapsed(TimeUnit.MILLISECONDS)));
       if (options.srcJarOutput != null) {
-        resourceProcessor.createSrcJar(options.generatedSourcePath, options.srcJarOutput);
+        resourceProcessor.createSrcJar(generatedSources, options.srcJarOutput);
       }
       if (options.rOutput != null) {
-        resourceProcessor.copyRToOutput(options.generatedSourcePath, options.rOutput);
+        resourceProcessor.copyRToOutput(generatedSources, options.rOutput);
       }
       if (options.symbolsTxtOut != null) {
-        resourceProcessor.copyRToOutput(options.generatedSourcePath, options.symbolsTxtOut);
+        resourceProcessor.copyRToOutput(generatedSources, options.symbolsTxtOut);
       }
       LOGGER.fine(String.format("Packaging finished at %sms",
           timer.elapsed(TimeUnit.MILLISECONDS)));