Update AndroidAppConsumers to avoid "zip file closed" issue

Bug: 124181030
Change-Id: Ieb898944485cc1aa21790caa2d54444085d778a7
diff --git a/src/main/java/com/android/tools/r8/DexIndexedConsumer.java b/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
index 8731d2a..f174960 100644
--- a/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
+++ b/src/main/java/com/android/tools/r8/DexIndexedConsumer.java
@@ -180,11 +180,6 @@
       outputBuilder.close(handler);
     }
 
-    public static void writeResources(Path archive, List<ProgramResource> resources)
-        throws IOException, ResourceException {
-      writeResources(archive, resources, ImmutableList.of());
-    }
-
     public static void writeResources(
         Path archive, List<ProgramResource> resources, List<DataEntryResource> dataResources)
         throws IOException, ResourceException {
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java b/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
index c7078ec..71ebb23 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
@@ -14,10 +14,13 @@
 import com.android.tools.r8.DexIndexedConsumer.ForwardingConsumer;
 import com.android.tools.r8.DiagnosticsHandler;
 import com.android.tools.r8.ProgramConsumer;
+import com.android.tools.r8.ResourceException;
 import com.android.tools.r8.StringConsumer;
 import com.android.tools.r8.origin.Origin;
+import com.google.common.io.ByteStreams;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceAVLTreeMap;
 import it.unimi.dsi.fastutil.ints.Int2ReferenceSortedMap;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -110,23 +113,37 @@
 
           @Override
           public DataResourceConsumer getDataResourceConsumer() {
-            assert consumer.getDataResourceConsumer() == null;
+            DataResourceConsumer dataResourceConsumer = consumer.getDataResourceConsumer();
             return new DataResourceConsumer() {
 
               @Override
               public void accept(
                   DataDirectoryResource directory, DiagnosticsHandler diagnosticsHandler) {
-                // Ignore.
+                if (dataResourceConsumer != null) {
+                  dataResourceConsumer.accept(directory, diagnosticsHandler);
+                }
               }
 
               @Override
               public void accept(DataEntryResource file, DiagnosticsHandler diagnosticsHandler) {
-                builder.addDataResource(file);
+                try {
+                  byte[] bytes = ByteStreams.toByteArray(file.getByteStream());
+                  DataEntryResource copy =
+                      DataEntryResource.fromBytes(bytes, file.getName(), file.getOrigin());
+                  builder.addDataResource(copy);
+                  if (dataResourceConsumer != null) {
+                    dataResourceConsumer.accept(copy, diagnosticsHandler);
+                  }
+                } catch (IOException | ResourceException e) {
+                  throw new RuntimeException(e);
+                }
               }
 
               @Override
               public void finished(DiagnosticsHandler handler) {
-                // Ignore.
+                if (dataResourceConsumer != null) {
+                  dataResourceConsumer.finished(handler);
+                }
               }
             };
           }