Don't put feature split data resources into the base module
Bug: 143994616
Change-Id: I53c040f7be29d36ec3b67a60a663f12707fc5f5b
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 6a65f79..8c63d06 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -365,7 +365,22 @@
Function<FeatureSplit.Builder, FeatureSplit> featureSplitGenerator) {
FeatureSplit featureSplit = featureSplitGenerator.apply(FeatureSplit.builder(getReporter()));
featureSplits.add(featureSplit);
- featureSplit.getProgramResourceProviders().forEach(this::addProgramResourceProvider);
+ for (ProgramResourceProvider programResourceProvider : featureSplit
+ .getProgramResourceProviders()) {
+ // Data resources are handled separately and passed directly to the feature split consumer.
+ ProgramResourceProvider providerWithoutDataResources = new ProgramResourceProvider() {
+ @Override
+ public Collection<ProgramResource> getProgramResources() throws ResourceException {
+ return programResourceProvider.getProgramResources();
+ }
+
+ @Override
+ public DataResourceProvider getDataResourceProvider() {
+ return null;
+ }
+ };
+ addProgramResourceProvider(providerWithoutDataResources);
+ }
return self();
}
diff --git a/src/test/java/com/android/tools/r8/dexsplitter/R8FeatureSplitTest.java b/src/test/java/com/android/tools/r8/dexsplitter/R8FeatureSplitTest.java
index 37b03d6..6f609de 100644
--- a/src/test/java/com/android/tools/r8/dexsplitter/R8FeatureSplitTest.java
+++ b/src/test/java/com/android/tools/r8/dexsplitter/R8FeatureSplitTest.java
@@ -7,6 +7,7 @@
import static junit.framework.TestCase.assertNotNull;
import static junit.framework.TestCase.assertTrue;
import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertNull;
import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.DexIndexedConsumer;
@@ -146,6 +147,11 @@
assertEquals(content, nonJavaFile);
}
}
+ ZipFile zipFile = new ZipFile(basePath.toFile());
+ for (String nonJavaFile : nonJavaFiles) {
+ ZipEntry entry = zipFile.getEntry(nonJavaFile);
+ assertNull(entry);
+ }
}
@Test
@@ -182,6 +188,11 @@
assertNotEquals(content, nonJavaFile);
}
}
+ ZipFile zipFile = new ZipFile(basePath.toFile());
+ for (String nonJavaFile : nonJavaFiles) {
+ ZipEntry entry = zipFile.getEntry(nonJavaFile);
+ assertNull(entry);
+ }
}
public static class HelloWorld {