aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/com/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/android')
-rw-r--r--src/main/java/com/android/tools/r8/BaseCommand.java4
-rw-r--r--src/main/java/com/android/tools/r8/PrintClassList.java2
-rw-r--r--src/main/java/com/android/tools/r8/R8Command.java2
-rw-r--r--src/main/java/com/android/tools/r8/compatdx/CompatDx.java5
-rw-r--r--src/main/java/com/android/tools/r8/utils/AndroidApp.java24
5 files changed, 19 insertions, 18 deletions
diff --git a/src/main/java/com/android/tools/r8/BaseCommand.java b/src/main/java/com/android/tools/r8/BaseCommand.java
index 3141dfef1..76650c0db 100644
--- a/src/main/java/com/android/tools/r8/BaseCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCommand.java
@@ -126,8 +126,8 @@ abstract class BaseCommand {
}
/** Add program file resources. */
- public B addProgramFiles(Collection<Path> files) throws IOException {
- app.addProgramFiles(files);
+ public B addProgramFiles(Collection<Path> files, boolean skipDex) throws IOException {
+ app.addProgramFiles(files, skipDex);
return self();
}
diff --git a/src/main/java/com/android/tools/r8/PrintClassList.java b/src/main/java/com/android/tools/r8/PrintClassList.java
index 6c4976998..f75765419 100644
--- a/src/main/java/com/android/tools/r8/PrintClassList.java
+++ b/src/main/java/com/android/tools/r8/PrintClassList.java
@@ -36,7 +36,7 @@ public class PrintClassList {
builder.setProguardMapFile(Paths.get(args[0]));
dexFiles = dexFiles.subList(1, dexFiles.size());
}
- builder.addProgramFiles(ListUtils.map(dexFiles, Paths::get));
+ builder.addProgramFiles(ListUtils.map(dexFiles, Paths::get), false);
ExecutorService executorService = Executors.newCachedThreadPool();
DexApplication application =
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index ebf1983dd..a71091252 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -161,7 +161,7 @@ public class R8Command extends BaseCommand {
throw new CompilationException(e.getMessage(), e.getCause());
}
configuration = parser.getConfig();
- addProgramFiles(configuration.getInjars());
+ addProgramFiles(configuration.getInjars(), false);
addLibraryFiles(configuration.getLibraryjars());
}
diff --git a/src/main/java/com/android/tools/r8/compatdx/CompatDx.java b/src/main/java/com/android/tools/r8/compatdx/CompatDx.java
index c174a31ae..a547d126e 100644
--- a/src/main/java/com/android/tools/r8/compatdx/CompatDx.java
+++ b/src/main/java/com/android/tools/r8/compatdx/CompatDx.java
@@ -449,9 +449,10 @@ public class CompatDx {
try {
result = D8.run(
D8Command.builder()
- .addProgramFiles(inputs)
+ .addProgramFiles(inputs, true)
.setMode(mode)
- .setMinApiLevel(dexArgs.minApiLevel)
+ .setMinApiLevel(
+ dexArgs.multiDex && dexArgs.minApiLevel < 21 ? 21 : dexArgs.minApiLevel)
.setMainDexListFile(mainDexList)
.build());
} finally {
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApp.java b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
index 434545f55..7b9d45d45 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApp.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
@@ -108,7 +108,7 @@ public class AndroidApp {
* Create an app from program files @code{files}. See also Builder::addProgramFiles.
*/
public static AndroidApp fromProgramFiles(List<Path> files) throws IOException {
- return builder().addProgramFiles(files).build();
+ return builder().addProgramFiles(files, false).build();
}
/**
@@ -408,7 +408,7 @@ public class AndroidApp {
public Builder addProgramDirectory(Path directory) throws IOException {
File[] resources = directory.toFile().listFiles(file -> isDexFile(file.toPath()));
for (File source : resources) {
- addFile(source.toPath(), ClassKind.PROGRAM);
+ addFile(source.toPath(), ClassKind.PROGRAM, false);
}
File mapFile = new File(directory.toFile(), DEFAULT_PROGUARD_MAP_FILE);
if (mapFile.exists()) {
@@ -421,15 +421,15 @@ public class AndroidApp {
* Add program file resources.
*/
public Builder addProgramFiles(Path... files) throws IOException {
- return addProgramFiles(Arrays.asList(files));
+ return addProgramFiles(Arrays.asList(files), false);
}
/**
* Add program file resources.
*/
- public Builder addProgramFiles(Collection<Path> files) throws IOException {
+ public Builder addProgramFiles(Collection<Path> files, boolean skipDex) throws IOException {
for (Path file : files) {
- addFile(file, ClassKind.PROGRAM);
+ addFile(file, ClassKind.PROGRAM, skipDex);
}
return this;
}
@@ -446,7 +446,7 @@ public class AndroidApp {
*/
public Builder addClasspathFiles(Collection<Path> files) throws IOException {
for (Path file : files) {
- addFile(file, ClassKind.CLASSPATH);
+ addFile(file, ClassKind.CLASSPATH, false);
}
return this;
}
@@ -471,7 +471,7 @@ public class AndroidApp {
*/
public Builder addLibraryFiles(Collection<Path> files) throws IOException {
for (Path file : files) {
- addFile(file, ClassKind.LIBRARY);
+ addFile(file, ClassKind.LIBRARY, false);
}
return this;
}
@@ -610,22 +610,22 @@ public class AndroidApp {
throw new Unreachable();
}
- private void addFile(Path file, ClassKind classKind) throws IOException {
+ private void addFile(Path file, ClassKind classKind, boolean skipDex) throws IOException {
if (!Files.exists(file)) {
throw new FileNotFoundException("Non-existent input file: " + file);
}
- if (isDexFile(file)) {
+ if (isDexFile(file) && !skipDex) {
resources(classKind).add(Resource.fromFile(Resource.Kind.DEX, file));
} else if (isClassFile(file)) {
resources(classKind).add(Resource.fromFile(Resource.Kind.CLASSFILE, file));
} else if (isArchive(file)) {
- addArchive(file, classKind);
+ addArchive(file, classKind, skipDex);
} else {
throw new CompilationError("Unsupported source file type for file: " + file);
}
}
- private void addArchive(Path archive, ClassKind classKind) throws IOException {
+ private void addArchive(Path archive, ClassKind classKind, boolean skipDex) throws IOException {
assert isArchive(archive);
boolean containsDexData = false;
boolean containsClassData = false;
@@ -633,7 +633,7 @@ public class AndroidApp {
ZipEntry entry;
while ((entry = stream.getNextEntry()) != null) {
Path name = Paths.get(entry.getName());
- if (isDexFile(name)) {
+ if (isDexFile(name) && !skipDex) {
containsDexData = true;
resources(classKind).add(Resource.fromBytes(
Resource.Kind.DEX, ByteStreams.toByteArray(stream)));