Update AndroidAppConsumers to avoid "zip file closed" issue for CF
Bug: 124181030
Change-Id: I94d78b3325896f671e1f014cd79384d61aa0788b
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 a855ab7..4b986b8 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidAppConsumers.java
@@ -194,23 +194,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);
+ }
}
};
}