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); + } } }; }