aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/tools/android/java/com
diff options
context:
space:
mode:
authorGravatar Andrew Pellegrini <apell@google.com>2016-07-08 20:40:19 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-07-11 09:39:37 +0000
commite49f3f6a4d9c99195480d2ed892039860d11b7f8 (patch)
tree87510f549a2dea32a98104c68891c01bc6c5d5db /src/tools/android/java/com
parent59bd0f1854a19c9849c701ca88b21c6601a89dc0 (diff)
Fix android manifest merger from using only one mergee manifest.
Mergee manifests are pre-processed and written to a temp directory, based on their original path, before the final merge. Previously only the filename was used, resulting in each mergee overwriting the previous, all of which were <temp_dir>/AndroidManifest.xml. Using the full path of each manifest ensures this overwriting cannot occur. -- MOS_MIGRATED_REVID=126942789
Diffstat (limited to 'src/tools/android/java/com')
-rw-r--r--src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java b/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java
index ce1884d6a4..3df7900d61 100644
--- a/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java
+++ b/src/tools/android/java/com/google/devtools/build/android/ManifestMergerAction.java
@@ -139,7 +139,9 @@ public class ManifestMergerAction {
}
}
}
- Path output = outputDir.resolve(manifest.getFileName());
+ // Write resulting manifest to the output directory, maintaining full path to prevent collisions
+ Path output = outputDir.resolve(manifest.toString().replaceFirst("^/", ""));
+ Files.createDirectories(output.getParent());
TransformerFactory.newInstance().newTransformer().transform(
new DOMSource(doc),
new StreamResult(output.toFile()));