Fail compilation if we run non optimized resource shrinking in partial
Change-Id: I397c9676f2301e02e8b977a2384700a791c8a003
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 903a9bd..13ef084 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -782,6 +782,10 @@
if (forceProguardCompatibility) {
reporter.error("Partial shrinking does not support Proguard compatibility mode");
}
+ if (androidResourceProvider != null
+ && !resourceShrinkerConfiguration.isOptimizedShrinking()) {
+ reporter.error("Partial shrinking only supports optimized resource shrinking");
+ }
}
private void validateProguardConfiguration(
diff --git a/src/test/java/com/android/tools/r8/androidresources/SimpleNoCodeReferenceAndroidResourceTest.java b/src/test/java/com/android/tools/r8/androidresources/SimpleNoCodeReferenceAndroidResourceTest.java
index db652c9..8e3a5e9 100644
--- a/src/test/java/com/android/tools/r8/androidresources/SimpleNoCodeReferenceAndroidResourceTest.java
+++ b/src/test/java/com/android/tools/r8/androidresources/SimpleNoCodeReferenceAndroidResourceTest.java
@@ -8,19 +8,22 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeTrue;
+import com.android.tools.r8.R8TestBuilder;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.androidresources.AndroidResourceTestingUtils.AndroidTestResource;
import com.android.tools.r8.androidresources.AndroidResourceTestingUtils.AndroidTestResourceBuilder;
import com.android.tools.r8.androidresources.AndroidResourceTestingUtils.ResourceTableInspector;
+import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.ZipUtils;
import java.io.IOException;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.util.Arrays;
+import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -33,17 +36,24 @@
@Parameter(0)
public TestParameters parameters;
- @Parameters(name = "{0}")
- public static TestParametersCollection parameters() {
- return getTestParameters()
- .withDefaultDexRuntime()
- .withAllApiLevels()
- .withIncludeAllPartialCompilation()
- .build();
+ @Parameter(1)
+ public boolean optimized;
+
+ @Parameters(name = "{0}, elementType: {1}")
+ public static List<Object[]> data() {
+ return buildParameters(
+ getTestParameters()
+ .withDefaultDexRuntime()
+ .withAllApiLevels()
+ .withIncludeAllPartialCompilation()
+ .build(),
+ BooleanUtils.values());
}
@Test
public void testR8() throws Exception {
+ // We don't support running R8Partial with non optimized resource shrinking.
+ assumeTrue(optimized || parameters.getPartialCompilationTestParameters().isNone());
String manifestPath = "AndroidManifest.xml";
String resourcePath = "resources.pb";
String pngPath = "res/drawable/foo.png";
@@ -60,6 +70,7 @@
.addInnerClasses(getClass())
.setMinApi(parameters)
.addAndroidResources(testResource, output)
+ .applyIf(optimized, R8TestBuilder::enableOptimizedShrinking)
.addKeepMainRule(FooBar.class)
.compile()
.inspectShrunkenResources(