Allow duplocated resources in writing
With the new setup for raw xml files that are also passed as keep xml files we get these duplicated.
Change-Id: Ibe9b47caeb6ea5173602f07d146ee14e9840a418
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApp.java b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
index adb0992..9ce000f 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApp.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
@@ -70,6 +70,7 @@
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
@@ -649,14 +650,17 @@
private void dumpAndroidResourcesProvider(
AndroidResourceProvider androidResourceProvider, ZipOutputStream out, String name)
throws IOException, ResourceException {
+ Set<String> seen = new HashSet<>();
try (ByteArrayOutputStream archiveByteStream = new ByteArrayOutputStream()) {
try (ZipOutputStream archiveOutputStream = new ZipOutputStream(archiveByteStream)) {
for (AndroidResourceInput androidResource : androidResourceProvider.getAndroidResources()) {
- writeToZipStream(
- archiveOutputStream,
- androidResource.getPath().location(),
- androidResource.getByteStream().readAllBytes(),
- ZipEntry.DEFLATED);
+ if (seen.add(androidResource.getPath().location())) {
+ writeToZipStream(
+ archiveOutputStream,
+ androidResource.getPath().location(),
+ androidResource.getByteStream().readAllBytes(),
+ ZipEntry.DEFLATED);
+ }
}
}
writeToZipStream(out, name, archiveByteStream.toByteArray(), ZipEntry.DEFLATED);