Merge "Add android jar for SDK versions 22 and 23."
diff --git a/src/main/java/com/android/tools/r8/dexfilemerger/DexFileMerger.java b/src/main/java/com/android/tools/r8/dexfilemerger/DexFileMerger.java
index 9311078..7bcb4fc 100644
--- a/src/main/java/com/android/tools/r8/dexfilemerger/DexFileMerger.java
+++ b/src/main/java/com/android/tools/r8/dexfilemerger/DexFileMerger.java
@@ -16,6 +16,7 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
@@ -159,13 +160,37 @@
return null;
}
- private static Options parseArguments(String[] args) {
+ private static Options parseArguments(String[] args) throws IOException {
+ // We may have a single argument which is a parameter file path, prefixed with '@'.
+ if (args.length == 1 && args[0].startsWith("@")) {
+ // TODO(tamaskenez) Implement more sophisticated processing
+ // which is aligned with Blaze's
+ // com.google.devtools.common.options.ShellQuotedParamsFilePreProcessor
+ Path paramsFile = Paths.get(args[0].substring(1));
+ List<String> argsList = new ArrayList<>();
+ for (String s : Files.readAllLines(paramsFile)) {
+ s = s.trim();
+ if (s.isEmpty()) {
+ continue;
+ }
+ // Trim optional enclosing single quotes. Unescaping omitted for now.
+ if (s.length() >= 2 && s.startsWith("'") && s.endsWith("'")) {
+ s = s.substring(1, s.length() - 1);
+ }
+ argsList.add(s);
+ }
+ args = argsList.toArray(new String[argsList.size()]);
+ }
+
Options options = new Options();
ParseContext context = new ParseContext(args);
List<String> strings;
String string;
Boolean b;
while (context.head() != null) {
+ if (context.head().startsWith("@")) {
+ throw new RuntimeException("A params file must be the only argument: " + context.head());
+ }
strings = tryParseMulti(context, "--input");
if (strings != null) {
options.inputArchives.addAll(strings);
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 6517e89..ef0221d 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -480,9 +480,12 @@
// TODO(mikaelpeltier) Android P does not yet have his android.jar use the O version
minSdkVersion = AndroidApiLevel.O.getLevel();
}
- return String.format(
+ String jar = String.format(
ANDROID_JAR_PATTERN,
minSdkVersion == AndroidApiLevel.getDefault().getLevel() ? DEFAULT_MIN_SDK : minSdkVersion);
+ assert Files.exists(Paths.get(jar))
+ : "Expected android jar to exist for API level " + minSdkVersion;
+ return jar;
}
public static Path getJdwpTestsCfJarPath(int minSdk) {
@@ -561,7 +564,7 @@
public static DexVm getDexVm() {
String artVersion = System.getProperty("dex_vm");
if (artVersion == null) {
- return DexVm.ART_4_0_4_HOST; //DexVm.ART_DEFAULT;
+ return DexVm.ART_DEFAULT;
} else {
DexVm artVersionEnum = DexVm.fromShortName(artVersion);
if (artVersionEnum == null) {