Merge "Remove Closer usage where is not mandatory"
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 0895ed8..ec040a5 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -34,6 +34,7 @@
private Optional<Boolean> treeShaking = Optional.empty();
private Optional<Boolean> minification = Optional.empty();
private boolean ignoreMissingClasses = false;
+ private Path packageDistributionFile = null;
private Builder() {
super(CompilationMode.RELEASE);
@@ -127,7 +128,7 @@
* Set a package distribution file resource.
*/
public Builder setPackageDistributionFile(Path path) {
- getAppBuilder().setPackageDistributionFile(path);
+ packageDistributionFile = path;
return self();
}
@@ -147,6 +148,10 @@
throw new CompilationException(
"Option --main-dex-list-output require --main-dex-rules and/or --main-dex-list");
}
+ if (getMode() == CompilationMode.DEBUG && packageDistributionFile != null) {
+ throw new CompilationException(
+ "Package distribution file is not supported in debug mode");
+ }
}
@Override
@@ -189,6 +194,10 @@
addLibraryFiles(configuration.getLibraryjars());
}
+ if (packageDistributionFile != null) {
+ getAppBuilder().setPackageDistributionFile(packageDistributionFile);
+ }
+
boolean useTreeShaking = treeShaking.orElse(configuration.isShrinking());
boolean useMinification = minification.orElse(configuration.isObfuscating());
diff --git a/src/test/java/com/android/tools/r8/dex/ExtraFileTest.java b/src/test/java/com/android/tools/r8/dex/ExtraFileTest.java
index d1e46f3..6114f61 100644
--- a/src/test/java/com/android/tools/r8/dex/ExtraFileTest.java
+++ b/src/test/java/com/android/tools/r8/dex/ExtraFileTest.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.dex;
import com.android.tools.r8.CompilationException;
+import com.android.tools.r8.CompilationMode;
import com.android.tools.r8.R8Command;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.shaking.ProguardRuleParserException;
@@ -18,6 +19,7 @@
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.ExpectedException;
import org.junit.rules.TemporaryFolder;
public class ExtraFileTest {
@@ -32,8 +34,11 @@
@Rule
public TemporaryFolder temp = ToolHelper.getTemporaryFolderForTest();
+ @Rule
+ public ExpectedException thrown = ExpectedException.none();
+
@Test
- public void splitMemberRebindingTwoFiles()
+ public void splitMemberRebindingTwoFilesRelease()
throws IOException, ProguardRuleParserException, ExecutionException, CompilationException {
if (!ToolHelper.artSupported()) {
return;
@@ -46,6 +51,7 @@
R8Command command =
R8Command.builder()
.addProgramFiles(original)
+ .setMode(CompilationMode.RELEASE)
.setOutputPath(out)
.setMinApiLevel(Constants.ANDROID_L_API) // Allow native multidex.
.setProguardMapFile(proguardMap)
@@ -66,4 +72,24 @@
null,
null);
}
+
+ @Test
+ public void splitMemberRebindingTwoFilesDebug()
+ throws IOException, ProguardRuleParserException, ExecutionException, CompilationException {
+ thrown.expect(CompilationException.class);
+ Path out = temp.getRoot().toPath();
+ Path original = Paths.get(EXAMPLE_DIR, EXAMPLE_DEX);
+ Path packageMap = Paths.get(ToolHelper.EXAMPLES_DIR, EXAMPLE_PACKAGE_MAP);
+ Path proguardMap = Paths.get(ToolHelper.EXAMPLES_DIR, EXAMPLE_PROGUARD_MAP);
+ R8Command command =
+ R8Command.builder()
+ .addProgramFiles(original)
+ .setMode(CompilationMode.DEBUG)
+ .setOutputPath(out)
+ .setMinApiLevel(Constants.ANDROID_L_API) // Allow native multidex.
+ .setProguardMapFile(proguardMap)
+ .setPackageDistributionFile(packageMap)
+ .build();
+ ToolHelper.runR8(command);
+ }
}