Merge "Use AndroidApiLevel rather than others constants"
diff --git a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
index 7645242..e659231 100644
--- a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
@@ -4,6 +4,7 @@
package com.android.tools.r8;
import com.android.tools.r8.dex.Constants;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.OutputMode;
@@ -67,7 +68,7 @@
private Path outputPath = null;
private OutputMode outputMode = OutputMode.Indexed;
private CompilationMode mode;
- private int minApiLevel = Constants.DEFAULT_ANDROID_API;
+ private int minApiLevel = AndroidApiLevel.getDefault().getLevel();
protected Builder(CompilationMode mode) {
this(AndroidApp.builder(), mode, false);
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 fdd5964..c0d4bbb 100644
--- a/src/main/java/com/android/tools/r8/compatdx/CompatDx.java
+++ b/src/main/java/com/android/tools/r8/compatdx/CompatDx.java
@@ -22,6 +22,7 @@
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.errors.Unimplemented;
import com.android.tools.r8.logging.Log;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.ThreadUtils;
import com.google.common.collect.ImmutableList;
@@ -298,7 +299,7 @@
List<Integer> allMinApiLevels = options.valuesOf(spec.minApiLevel);
minApiLevel = allMinApiLevels.get(allMinApiLevels.size() - 1);
} else {
- minApiLevel = Constants.DEFAULT_ANDROID_API;
+ minApiLevel = AndroidApiLevel.getDefault().getLevel();
}
inputList = options.valueOf(spec.inputList);
inputs = ImmutableList.copyOf(options.valuesOf(spec.inputs));
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationReader.java b/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
index 9aa712a..6169178 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
@@ -3,11 +3,8 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.dex;
-import static com.android.tools.r8.dex.Constants.ANDROID_N_API;
import static com.android.tools.r8.dex.Constants.ANDROID_N_DEX_VERSION;
-import static com.android.tools.r8.dex.Constants.ANDROID_O_API;
import static com.android.tools.r8.dex.Constants.ANDROID_O_DEX_VERSION;
-import static com.android.tools.r8.dex.Constants.DEFAULT_ANDROID_API;
import static com.android.tools.r8.graph.ClassKind.CLASSPATH;
import static com.android.tools.r8.graph.ClassKind.LIBRARY;
import static com.android.tools.r8.graph.ClassKind.PROGRAM;
@@ -27,6 +24,7 @@
import com.android.tools.r8.graph.JarClassFileReader;
import com.android.tools.r8.graph.LazyLoadedDexApplication;
import com.android.tools.r8.naming.ProguardMapReader;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.ClassProvider;
import com.android.tools.r8.utils.ClasspathClassCollection;
@@ -98,7 +96,7 @@
private int verifyOrComputeMinApiLevel(int computedMinApiLevel, DexFile file) {
int version = file.getDexVersion();
- if (options.minApiLevel == DEFAULT_ANDROID_API) {
+ if (options.minApiLevel == AndroidApiLevel.getDefault().getLevel()) {
computedMinApiLevel = Math.max(computedMinApiLevel, dexVersionToMinSdk(version));
} else if (!minApiMatchesDexVersion(version)) {
throw new CompilationError("Dex file with version '" + version +
@@ -110,9 +108,9 @@
private boolean minApiMatchesDexVersion(int version) {
switch (version) {
case ANDROID_O_DEX_VERSION:
- return options.minApiLevel >= ANDROID_O_API;
+ return options.minApiLevel >= AndroidApiLevel.O.getLevel();
case ANDROID_N_DEX_VERSION:
- return options.minApiLevel >= ANDROID_N_API;
+ return options.minApiLevel >= AndroidApiLevel.N.getLevel();
default:
return true;
}
@@ -121,11 +119,11 @@
private int dexVersionToMinSdk(int version) {
switch (version) {
case ANDROID_O_DEX_VERSION:
- return ANDROID_O_API;
+ return AndroidApiLevel.O.getLevel();
case ANDROID_N_DEX_VERSION:
- return ANDROID_N_API;
+ return AndroidApiLevel.N.getLevel();
default:
- return DEFAULT_ANDROID_API;
+ return AndroidApiLevel.getDefault().getLevel();
}
}
diff --git a/src/main/java/com/android/tools/r8/dex/Constants.java b/src/main/java/com/android/tools/r8/dex/Constants.java
index d2e457b..58ff5d7 100644
--- a/src/main/java/com/android/tools/r8/dex/Constants.java
+++ b/src/main/java/com/android/tools/r8/dex/Constants.java
@@ -11,13 +11,6 @@
public static final byte[] VDEX_FILE_MAGIC_PREFIX = {'v', 'd', 'e', 'x'};
public static final byte[] VDEX_FILE_VERSION = {'0', '1', '0', '\0'};
- public static final int ANDROID_O_API = 26;
- public static final int ANDROID_N_API = 24;
- public static final int ANDROID_L_API = 21;
- public static final int ANDROID_K_API = 19;
- public static final int ANDROID_I_API = 14;
- public static final int DEFAULT_ANDROID_API = 1;
-
/** dex file version number for Android O (API level 26) */
public static final int ANDROID_O_DEX_VERSION = 38;
public static final byte[] ANDROID_O_DEX_VERSION_BYTES = {'0', '3', '8'};
diff --git a/src/main/java/com/android/tools/r8/dex/FileWriter.java b/src/main/java/com/android/tools/r8/dex/FileWriter.java
index 826aaba..afa7105 100644
--- a/src/main/java/com/android/tools/r8/dex/FileWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/FileWriter.java
@@ -734,10 +734,10 @@
}
private static byte[] convertApiLevelToDexVersion(int apiLevel) {
- if (apiLevel >= Constants.ANDROID_O_API) {
+ if (apiLevel >= AndroidApiLevel.O.getLevel()) {
return Constants.ANDROID_O_DEX_VERSION_BYTES;
}
- if (apiLevel >= Constants.ANDROID_N_API) {
+ if (apiLevel >= AndroidApiLevel.N.getLevel()) {
return Constants.ANDROID_N_DEX_VERSION_BYTES;
}
return Constants.ANDROID_PRE_N_DEX_VERSION_BYTES;
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
index d72fb2b..04ab202 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
@@ -47,4 +47,8 @@
public String getName() {
return "Android " + name();
}
+
+ public static AndroidApiLevel getDefault() {
+ return AndroidApiLevel.B;
+ }
}
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 90597ca..f497ce5 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -81,7 +81,7 @@
}
public List<String> methodsFilter = ImmutableList.of();
- public int minApiLevel = Constants.DEFAULT_ANDROID_API;
+ public int minApiLevel = AndroidApiLevel.getDefault().getLevel();
// Skipping min_api check and compiling an intermediate result intended for later merging.
public boolean intermediate = false;
public List<String> logArgumentsFilter = ImmutableList.of();
diff --git a/src/test/java/com/android/tools/r8/D8LazyRunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/D8LazyRunExamplesAndroidOTest.java
index c39dc31..94fadf1 100644
--- a/src/test/java/com/android/tools/r8/D8LazyRunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/D8LazyRunExamplesAndroidOTest.java
@@ -4,12 +4,12 @@
package com.android.tools.r8;
-import static com.android.tools.r8.dex.Constants.ANDROID_K_API;
import static com.android.tools.r8.utils.FileUtils.JAR_EXTENSION;
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.D8Command.Builder;
import com.android.tools.r8.shaking.FilteredClassPath;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.DirectoryClassFileProvider;
import com.android.tools.r8.utils.FileUtils;
@@ -70,7 +70,7 @@
@Test
public void dexPerClassFileWithDesugaringAndFolderClasspath() throws Throwable {
- int minAPILevel = ANDROID_K_API;
+ int minAPILevel = AndroidApiLevel.K.getLevel();
Path inputFile =
Paths.get(ToolHelper.EXAMPLES_ANDROID_N_BUILD_DIR, "interfacemethods" + JAR_EXTENSION);
Path tmpClassesDir = temp.newFolder().toPath();
diff --git a/src/test/java/com/android/tools/r8/D8RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/D8RunExamplesAndroidOTest.java
index a2e64e1..fa8fd25 100644
--- a/src/test/java/com/android/tools/r8/D8RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/D8RunExamplesAndroidOTest.java
@@ -4,14 +4,13 @@
package com.android.tools.r8;
-import static com.android.tools.r8.dex.Constants.ANDROID_K_API;
-import static com.android.tools.r8.dex.Constants.ANDROID_O_API;
import static com.android.tools.r8.utils.FileUtils.JAR_EXTENSION;
import static com.android.tools.r8.utils.FileUtils.ZIP_EXTENSION;
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.errors.InternalCompilerError;
import com.android.tools.r8.errors.Unimplemented;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.DexInspector;
import com.android.tools.r8.utils.OffOrAuto;
import com.android.tools.r8.utils.OutputMode;
@@ -88,7 +87,7 @@
D8TestRunner lib1 =
test("testDefaultInInterfaceWithoutDesugaring", "desugaringwithmissingclasslib1", "N/A")
.withInterfaceMethodDesugaring(OffOrAuto.Off)
- .withMinApiLevel(ANDROID_K_API);
+ .withMinApiLevel(AndroidApiLevel.K.getLevel());
try {
lib1.build();
@@ -105,7 +104,7 @@
D8TestRunner lib1 =
test("desugaringwithmissingclasslib1", "desugaringwithmissingclasslib1", "N/A")
.withInterfaceMethodDesugaring(OffOrAuto.Auto)
- .withMinApiLevel(ANDROID_K_API);
+ .withMinApiLevel(AndroidApiLevel.K.getLevel());
lib1.build();
// lib2: interface B extends A { default String foo() { return "B"; } }
@@ -114,7 +113,7 @@
test("desugaringwithmissingclasslib2", "desugaringwithmissingclasslib2", "N/A")
.withInterfaceMethodDesugaring(OffOrAuto.Auto)
.withClasspath(lib1.getInputJar())
- .withMinApiLevel(ANDROID_K_API);
+ .withMinApiLevel(AndroidApiLevel.K.getLevel());
lib2.build();
// test: class ImplementMethodsWithDefault implements A, B {} should get its foo implementation
@@ -125,7 +124,7 @@
test("desugaringwithmissingclasstest1", "desugaringwithmissingclasstest1", "N/A")
.withInterfaceMethodDesugaring(OffOrAuto.Auto)
.withClasspath(lib1.getInputJar())
- .withMinApiLevel(ANDROID_K_API);
+ .withMinApiLevel(AndroidApiLevel.K.getLevel());
test.build();
// TODO check compilation warnings are correctly reported
@@ -134,7 +133,7 @@
@Test
public void testMissingInterfaceDesugared2AndroidK() throws Throwable {
- int minApi = ANDROID_K_API;
+ int minApi = AndroidApiLevel.K.getLevel();
// lib1: interface A { default String foo() { return "A"; } }
D8TestRunner lib1 =
@@ -188,7 +187,7 @@
@Test
public void testMissingInterfaceDesugared2AndroidO() throws Throwable {
- int minApi = ANDROID_O_API;
+ int minApi = AndroidApiLevel.O.getLevel();
// lib1: interface A { default String foo() { return "A"; } }
D8TestRunner lib1 =
test("desugaringwithmissingclasslib1", "desugaringwithmissingclasslib1", "N/A")
@@ -236,7 +235,7 @@
@Test
public void testCallToMissingSuperInterfaceDesugaredAndroidK() throws Throwable {
- int minApi = ANDROID_K_API;
+ int minApi = AndroidApiLevel.K.getLevel();
// lib1: interface A { default String foo() { return "A"; } }
D8TestRunner lib1 =
test("desugaringwithmissingclasslib1", "desugaringwithmissingclasslib1", "N/A")
@@ -289,7 +288,7 @@
@Test
public void testCallToMissingSuperInterfaceDesugaredAndroidO() throws Throwable {
- int minApi = ANDROID_O_API;
+ int minApi = AndroidApiLevel.O.getLevel();
// lib1: interface A { default String foo() { return "A"; } }
D8TestRunner lib1 =
test("desugaringwithmissingclasslib1", "desugaringwithmissingclasslib1", "N/A")
@@ -336,7 +335,7 @@
@Test
public void testMissingSuperDesugaredAndroidK() throws Throwable {
- int minApi = ANDROID_K_API;
+ int minApi = AndroidApiLevel.K.getLevel();
// lib1: interface A { default String foo() { return "A"; } }
D8TestRunner lib1 =
@@ -384,7 +383,7 @@
@Test
public void testMissingSuperDesugaredAndroidO() throws Throwable {
- int minApi = ANDROID_O_API;
+ int minApi = AndroidApiLevel.O.getLevel();
// lib1: interface A { default String foo() { return "A"; } }
D8TestRunner lib1 =
@@ -434,7 +433,7 @@
@Test
public void testMissingSuperDesugaredWithProgramCrossImplementationAndroidK() throws Throwable {
- int minApi = ANDROID_K_API;
+ int minApi = AndroidApiLevel.K.getLevel();
// lib1: interface A { default String foo() { return "A"; } }
// interface A2 { default String foo2() { return "A2"; } }
@@ -479,7 +478,7 @@
@Test
public void testMissingSuperDesugaredWithClasspathCrossImplementationAndroidK() throws Throwable {
- int minApi = ANDROID_K_API;
+ int minApi = AndroidApiLevel.K.getLevel();
// lib1: interface A { default String foo() { return "A"; } }
// interface A2 { default String foo2() { return "A2"; } }
@@ -586,7 +585,7 @@
int expectedMainDexListSize,
String... mainDexClasses)
throws Throwable {
- int minApi = ANDROID_K_API;
+ int minApi = AndroidApiLevel.K.getLevel();
// Full build, will be used as reference.
TestRunner<?> full =
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 0b6e3c3..c379193 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -14,6 +14,7 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.ArtErrorParser;
import com.android.tools.r8.utils.ArtErrorParser.ArtErrorInfo;
import com.android.tools.r8.utils.DexInspector;
@@ -103,42 +104,42 @@
private static Map<String, Integer> needMinSdkVersion =
new ImmutableMap.Builder<String, Integer>()
// Android O
- .put("952-invoke-custom", Constants.ANDROID_O_API)
- .put("952-invoke-custom-kinds", Constants.ANDROID_O_API)
- .put("953-invoke-polymorphic-compiler", Constants.ANDROID_O_API)
- .put("957-methodhandle-transforms", Constants.ANDROID_O_API)
- .put("958-methodhandle-stackframe", Constants.ANDROID_O_API)
- .put("959-invoke-polymorphic-accessors", Constants.ANDROID_O_API)
- .put("990-method-handle-and-mr", Constants.ANDROID_O_API)
+ .put("952-invoke-custom", AndroidApiLevel.O.getLevel())
+ .put("952-invoke-custom-kinds", AndroidApiLevel.O.getLevel())
+ .put("953-invoke-polymorphic-compiler", AndroidApiLevel.O.getLevel())
+ .put("957-methodhandle-transforms", AndroidApiLevel.O.getLevel())
+ .put("958-methodhandle-stackframe", AndroidApiLevel.O.getLevel())
+ .put("959-invoke-polymorphic-accessors", AndroidApiLevel.O.getLevel())
+ .put("990-method-handle-and-mr", AndroidApiLevel.O.getLevel())
// Test intentionally asserts presence of bridge default methods desugar removes.
- .put("044-proxy", Constants.ANDROID_N_API)
+ .put("044-proxy", AndroidApiLevel.N.getLevel())
// Test intentionally asserts absence of default interface method in a class.
- .put("048-reflect-v8", Constants.ANDROID_N_API)
+ .put("048-reflect-v8", AndroidApiLevel.N.getLevel())
// Uses default interface methods.
- .put("162-method-resolution", Constants.ANDROID_N_API)
- .put("616-cha-interface-default", Constants.ANDROID_N_API)
- .put("1910-transform-with-default", Constants.ANDROID_N_API)
+ .put("162-method-resolution", AndroidApiLevel.N.getLevel())
+ .put("616-cha-interface-default", AndroidApiLevel.N.getLevel())
+ .put("1910-transform-with-default", AndroidApiLevel.N.getLevel())
// Interface initializer is not triggered after desugaring.
- .put("962-iface-static", Constants.ANDROID_N_API)
+ .put("962-iface-static", AndroidApiLevel.N.getLevel())
// Interface initializer is not triggered after desugaring.
- .put("964-default-iface-init-gen", Constants.ANDROID_N_API)
+ .put("964-default-iface-init-gen",AndroidApiLevel.N.getLevel())
// AbstractMethodError (for method not implemented in class) instead of
// IncompatibleClassChangeError (for conflict of default interface methods).
- .put("968-default-partial-compile-gen", Constants.ANDROID_N_API)
+ .put("968-default-partial-compile-gen",AndroidApiLevel.N.getLevel())
// NoClassDefFoundError (for companion class) instead of NoSuchMethodError.
- .put("970-iface-super-resolution-gen", Constants.ANDROID_N_API)
+ .put("970-iface-super-resolution-gen", AndroidApiLevel.N.getLevel())
// NoClassDefFoundError (for companion class) instead of AbstractMethodError.
- .put("971-iface-super", Constants.ANDROID_N_API)
+ .put("971-iface-super", AndroidApiLevel.N.getLevel())
// Test for miranda methods is not relevant for desugaring scenario.
- .put("972-default-imt-collision", Constants.ANDROID_N_API)
+ .put("972-default-imt-collision", AndroidApiLevel.N.getLevel())
// Uses default interface methods.
- .put("972-iface-super-multidex", Constants.ANDROID_N_API)
+ .put("972-iface-super-multidex", AndroidApiLevel.N.getLevel())
// java.util.Objects is missing and test has default methods.
- .put("973-default-multidex", Constants.ANDROID_N_API)
+ .put("973-default-multidex", AndroidApiLevel.N.getLevel())
// a.klass.that.does.not.Exist is missing and test has default methods.
- .put("974-verify-interface-super", Constants.ANDROID_N_API)
+ .put("974-verify-interface-super", AndroidApiLevel.N.getLevel())
// Desugaring of interface private methods is not yet supported.
- .put("975-iface-private", Constants.ANDROID_N_API)
+ .put("975-iface-private", AndroidApiLevel.N.getLevel())
.build();
// Tests that timeout when run with Art.
@@ -1227,7 +1228,7 @@
builder.addLibraryFiles(Paths.get(ToolHelper.getAndroidJar(minSdkVersion)));
} else {
builder.addLibraryFiles(Paths.get(
- ToolHelper.getAndroidJar(Constants.DEFAULT_ANDROID_API)));
+ ToolHelper.getAndroidJar(AndroidApiLevel.getDefault().getLevel())));
}
D8Output output = D8.run(builder.build());
diff --git a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
index e63b155..b43b041 100644
--- a/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunExamplesAndroidOTest.java
@@ -6,6 +6,7 @@
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.dex.Constants;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import java.nio.file.Path;
@@ -39,7 +40,7 @@
@Test
public void invokeCustomWithShrinking() throws Throwable {
test("invokecustom-with-shrinking", "invokecustom", "InvokeCustom")
- .withMinApiLevel(Constants.ANDROID_O_API)
+ .withMinApiLevel(AndroidApiLevel.O.getLevel())
.withBuilderTransformation(builder ->
builder.addProguardConfigurationFiles(
Paths.get(ToolHelper.EXAMPLES_ANDROID_O_DIR, "invokecustom/keep-rules.txt")))
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidNTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidNTest.java
index 9d745f6..03093df 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesAndroidNTest.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidNTest.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.ToolHelper.ProcessResult;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.OffOrAuto;
import com.google.common.collect.ImmutableList;
@@ -123,7 +124,7 @@
@Test
public void staticInterfaceMethods() throws Throwable {
test("staticinterfacemethods", "interfacemethods", "StaticInterfaceMethods")
- .withMinApiLevel(Constants.ANDROID_K_API)
+ .withMinApiLevel(AndroidApiLevel.K.getLevel())
.withInterfaceMethodDesugaring(OffOrAuto.Auto)
.run();
}
@@ -140,7 +141,7 @@
@Test
public void defaultMethods() throws Throwable {
test("defaultmethods", "interfacemethods", "DefaultMethods")
- .withMinApiLevel(Constants.ANDROID_K_API)
+ .withMinApiLevel(AndroidApiLevel.K.getLevel())
.withInterfaceMethodDesugaring(OffOrAuto.Auto)
.run();
}
diff --git a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
index 0e0fd9d..84f2768 100644
--- a/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/RunExamplesAndroidOTest.java
@@ -4,14 +4,13 @@
package com.android.tools.r8;
-import static com.android.tools.r8.dex.Constants.ANDROID_K_API;
-import static com.android.tools.r8.dex.Constants.ANDROID_O_API;
import static com.android.tools.r8.utils.FileUtils.JAR_EXTENSION;
import static com.android.tools.r8.utils.FileUtils.ZIP_EXTENSION;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.ToolHelper.DexVm;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.DexInspector;
import com.android.tools.r8.utils.DexInspector.FoundClassSubject;
@@ -256,14 +255,14 @@
@Test
public void invokeCustom() throws Throwable {
test("invokecustom", "invokecustom", "InvokeCustom")
- .withMinApiLevel(ANDROID_O_API)
+ .withMinApiLevel(AndroidApiLevel.O.getLevel())
.run();
}
@Test
public void invokeCustom2() throws Throwable {
test("invokecustom2", "invokecustom2", "InvokeCustom")
- .withMinApiLevel(ANDROID_O_API)
+ .withMinApiLevel(AndroidApiLevel.O.getLevel())
.run();
}
@@ -277,7 +276,7 @@
@Test
public void invokePolymorphic() throws Throwable {
test("invokepolymorphic", "invokepolymorphic", "InvokePolymorphic")
- .withMinApiLevel(ANDROID_O_API)
+ .withMinApiLevel(AndroidApiLevel.O.getLevel())
.run();
}
@@ -291,14 +290,14 @@
@Test
public void lambdaDesugaring() throws Throwable {
test("lambdadesugaring", "lambdadesugaring", "LambdaDesugaring")
- .withMinApiLevel(ANDROID_K_API)
+ .withMinApiLevel(AndroidApiLevel.K.getLevel())
.run();
}
@Test
public void lambdaDesugaringNPlus() throws Throwable {
test("lambdadesugaringnplus", "lambdadesugaringnplus", "LambdasWithStaticAndDefaultMethods")
- .withMinApiLevel(ANDROID_K_API)
+ .withMinApiLevel(AndroidApiLevel.K.getLevel())
.withInterfaceMethodDesugaring(OffOrAuto.Auto)
.run();
}
@@ -306,8 +305,8 @@
@Test
public void desugarDefaultMethodInAndroidJar25() throws Throwable {
test("DefaultMethodInAndroidJar25", "desugaringwithandroidjar25", "DefaultMethodInAndroidJar25")
- .withMinApiLevel(ANDROID_K_API)
- .withAndroidJar(ANDROID_O_API)
+ .withMinApiLevel(AndroidApiLevel.K.getLevel())
+ .withAndroidJar(AndroidApiLevel.O.getLevel())
.withInterfaceMethodDesugaring(OffOrAuto.Auto)
.run();
}
@@ -315,8 +314,8 @@
@Test
public void desugarStaticMethodInAndroidJar25() throws Throwable {
test("StaticMethodInAndroidJar25", "desugaringwithandroidjar25", "StaticMethodInAndroidJar25")
- .withMinApiLevel(ANDROID_K_API)
- .withAndroidJar(ANDROID_O_API)
+ .withMinApiLevel(AndroidApiLevel.K.getLevel())
+ .withAndroidJar(AndroidApiLevel.O.getLevel())
.withInterfaceMethodDesugaring(OffOrAuto.Auto)
.run();
}
@@ -324,14 +323,14 @@
@Test
public void lambdaDesugaringValueAdjustments() throws Throwable {
test("lambdadesugaring-value-adjustments", "lambdadesugaring", "ValueAdjustments")
- .withMinApiLevel(ANDROID_K_API)
+ .withMinApiLevel(AndroidApiLevel.K.getLevel())
.run();
}
@Test
public void paramNames() throws Throwable {
test("paramnames", "paramnames", "ParameterNames")
- .withMinApiLevel(ANDROID_O_API)
+ .withMinApiLevel(AndroidApiLevel.O.getLevel())
.withOptionConsumer((internalOptions) -> internalOptions.allowParameterName = true)
.run();
}
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index e69de5b..f5fe0f9 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -16,6 +16,7 @@
import com.android.tools.r8.shaking.ProguardConfiguration;
import com.android.tools.r8.shaking.ProguardConfigurationParser;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.ListUtils;
@@ -64,7 +65,7 @@
public final static String PATH_SEPARATOR = File.pathSeparator;
private static final String ANDROID_JAR_PATTERN = "third_party/android_jar/lib-v%d/android.jar";
- private static final int DEFAULT_MIN_SDK = Constants.ANDROID_I_API;
+ private static final int DEFAULT_MIN_SDK = AndroidApiLevel.I.getLevel();
public enum DexVm {
ART_4_4_4("4.4.4"),
@@ -329,17 +330,17 @@
}
public static String getDefaultAndroidJar() {
- return getAndroidJar(Constants.DEFAULT_ANDROID_API);
+ return getAndroidJar(AndroidApiLevel.getDefault().getLevel());
}
public static String getAndroidJar(int minSdkVersion) {
return String.format(
ANDROID_JAR_PATTERN,
- minSdkVersion == Constants.DEFAULT_ANDROID_API ? DEFAULT_MIN_SDK : minSdkVersion);
+ minSdkVersion == AndroidApiLevel.getDefault().getLevel() ? DEFAULT_MIN_SDK : minSdkVersion);
}
public static Path getJdwpTestsJarPath(int minSdk) {
- if (minSdk >= Constants.ANDROID_N_API) {
+ if (minSdk >= AndroidApiLevel.N.getLevel()) {
return Paths.get("third_party", "jdwp-tests", "apache-harmony-jdwp-tests-host.jar");
} else {
return Paths.get(ToolHelper.BUILD_DIR, "libs", "jdwp-tests-preN.jar");
@@ -417,11 +418,11 @@
public static int getMinApiLevelForDexVm(DexVm dexVm) {
switch (dexVm) {
case ART_DEFAULT:
- return Constants.ANDROID_O_API;
+ return AndroidApiLevel.O.getLevel();
case ART_7_0_0:
- return Constants.ANDROID_N_API;
+ return AndroidApiLevel.N.getLevel();
default:
- return Constants.DEFAULT_ANDROID_API;
+ return AndroidApiLevel.getDefault().getLevel();
}
}
diff --git a/src/test/java/com/android/tools/r8/d8/D8FrameworkDexPassthroughMarkerTest.java b/src/test/java/com/android/tools/r8/d8/D8FrameworkDexPassthroughMarkerTest.java
index 3aadc15..9b538b0 100644
--- a/src/test/java/com/android/tools/r8/d8/D8FrameworkDexPassthroughMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/d8/D8FrameworkDexPassthroughMarkerTest.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.dex.Marker;
import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.graph.DexApplication;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.Timing;
@@ -56,7 +57,7 @@
@Test
public void compile() throws CompilationException, IOException, ExecutionException {
D8Command command = D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_N_API)
+ .setMinApiLevel(AndroidApiLevel.N.getLevel())
.addProgramFiles(FRAMEWORK_JAR)
.build();
Marker marker = new Marker(Tool.D8)
diff --git a/src/test/java/com/android/tools/r8/d8/DexVersionTests.java b/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
index 0d72a52..ebf75f2 100644
--- a/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
+++ b/src/test/java/com/android/tools/r8/d8/DexVersionTests.java
@@ -10,6 +10,7 @@
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.utils.AndroidApiLevel;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
@@ -39,15 +40,15 @@
D8Command.Builder arrayAccessBuilder = D8Command.builder().addProgramFiles(ARRAYACCESS_JAR);
D8Output output = D8.run(arrayAccessBuilder.build());
output.write(defaultApiFolder1.getRoot().toPath());
- output = D8.run(arrayAccessBuilder.setMinApiLevel(Constants.ANDROID_O_API).build());
+ output = D8.run(arrayAccessBuilder.setMinApiLevel(AndroidApiLevel.O.getLevel()).build());
output.write(androidOApiFolder1.getRoot().toPath());
- output = D8.run(arrayAccessBuilder.setMinApiLevel(Constants.ANDROID_N_API).build());
+ output = D8.run(arrayAccessBuilder.setMinApiLevel(AndroidApiLevel.N.getLevel()).build());
output.write(androidNApiFolder1.getRoot().toPath());
output = D8.run(arithmeticBuilder.build());
output.write(defaultApiFolder2.getRoot().toPath());
- output = D8.run(arithmeticBuilder.setMinApiLevel(Constants.ANDROID_O_API).build());
+ output = D8.run(arithmeticBuilder.setMinApiLevel(AndroidApiLevel.O.getLevel()).build());
output.write(androidOApiFolder2.getRoot().toPath());
- output = D8.run(arithmeticBuilder.setMinApiLevel(Constants.ANDROID_N_API).build());
+ output = D8.run(arithmeticBuilder.setMinApiLevel(AndroidApiLevel.N.getLevel()).build());
output.write(androidNApiFolder2.getRoot().toPath());
}
@@ -88,37 +89,37 @@
// set to Android O.
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_O_API)
+ .setMinApiLevel(AndroidApiLevel.O.getLevel())
.addProgramFiles(default1())
.addProgramFiles(default2())
.build());
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_O_API)
+ .setMinApiLevel(AndroidApiLevel.O.getLevel())
.addProgramFiles(default1())
.addProgramFiles(androidO2())
.build());
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_O_API)
+ .setMinApiLevel(AndroidApiLevel.O.getLevel())
.addProgramFiles(default1())
.addProgramFiles(androidN2())
.build());
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_O_API)
+ .setMinApiLevel(AndroidApiLevel.O.getLevel())
.addProgramFiles(androidO1())
.addProgramFiles(androidN2())
.build());
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_O_API)
+ .setMinApiLevel(AndroidApiLevel.O.getLevel())
.addProgramFiles(androidO1())
.addProgramFiles(androidO2())
.build());
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_O_API)
+ .setMinApiLevel(AndroidApiLevel.O.getLevel())
.addProgramFiles(androidN1())
.addProgramFiles(androidN2())
.build());
@@ -126,19 +127,19 @@
// Android N.
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_N_API)
+ .setMinApiLevel(AndroidApiLevel.N.getLevel())
.addProgramFiles(default1())
.addProgramFiles(default2())
.build());
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_N_API)
+ .setMinApiLevel(AndroidApiLevel.N.getLevel())
.addProgramFiles(default1())
.addProgramFiles(androidN2())
.build());
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_N_API)
+ .setMinApiLevel(AndroidApiLevel.N.getLevel())
.addProgramFiles(androidN1())
.addProgramFiles(androidN2())
.build());
@@ -146,7 +147,7 @@
// Android K.
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_K_API)
+ .setMinApiLevel(AndroidApiLevel.K.getLevel())
.addProgramFiles(default1())
.addProgramFiles(default2())
.build());
@@ -156,7 +157,7 @@
public void mergeErrorVersionNWithVersionOInput() throws CompilationException, IOException {
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_N_API)
+ .setMinApiLevel(AndroidApiLevel.N.getLevel())
.addProgramFiles(default1())
.addProgramFiles(androidO2())
.build());
@@ -166,7 +167,7 @@
public void mergeErrorVersionKWithVersionOInput() throws CompilationException, IOException {
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_K_API)
+ .setMinApiLevel(AndroidApiLevel.K.getLevel())
.addProgramFiles(default1())
.addProgramFiles(androidO2())
.build());
@@ -176,7 +177,7 @@
public void mergeErrorVersionKWithVersionNInput() throws CompilationException, IOException {
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_K_API)
+ .setMinApiLevel(AndroidApiLevel.K.getLevel())
.addProgramFiles(default1())
.addProgramFiles(androidN2())
.build());
diff --git a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
index cc01eab..34c1181 100644
--- a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
+++ b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.shaking.ProguardConfiguration;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.OffOrAuto;
@@ -182,7 +183,7 @@
protected final boolean supportsDefaultMethod() {
return RUNTIME_KIND == RuntimeKind.JAVA ||
- ToolHelper.getMinApiLevelForDexVm(ToolHelper.getDexVm()) >= Constants.ANDROID_N_API;
+ ToolHelper.getMinApiLevelForDexVm(ToolHelper.getDexVm()) >= AndroidApiLevel.N.getLevel();
}
protected static boolean isRunningJava() {
diff --git a/src/test/java/com/android/tools/r8/desugar/BasicTestDependenciesDesugaringTest.java b/src/test/java/com/android/tools/r8/desugar/BasicTestDependenciesDesugaringTest.java
index 39d90d6..59da13f 100644
--- a/src/test/java/com/android/tools/r8/desugar/BasicTestDependenciesDesugaringTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/BasicTestDependenciesDesugaringTest.java
@@ -8,6 +8,7 @@
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.OffOrAuto;
import com.google.common.collect.Sets;
import java.io.File;
@@ -85,8 +86,8 @@
ToolHelper.runD8(
D8Command.builder().addClasspathFiles(classpath)
.addProgramFiles(toCompile)
- .addLibraryFiles(Paths.get(ToolHelper.getAndroidJar(Constants.ANDROID_K_API)))
- .setMinApiLevel(Constants.ANDROID_K_API)
+ .addLibraryFiles(Paths.get(ToolHelper.getAndroidJar(AndroidApiLevel.K.getLevel())))
+ .setMinApiLevel(AndroidApiLevel.K.getLevel())
.build(),
options -> options.interfaceMethodDesugaring = OffOrAuto.Auto);
}
@@ -99,8 +100,8 @@
ToolHelper.runD8(
D8Command.builder().addClasspathFiles(classpath)
.addProgramFiles(toCompile)
- .addLibraryFiles(Paths.get(ToolHelper.getAndroidJar(Constants.ANDROID_K_API)))
- .setMinApiLevel(Constants.ANDROID_K_API)
+ .addLibraryFiles(Paths.get(ToolHelper.getAndroidJar(AndroidApiLevel.K.getLevel())))
+ .setMinApiLevel(AndroidApiLevel.K.getLevel())
.build(),
options -> options.interfaceMethodDesugaring = OffOrAuto.Off);
}
diff --git a/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java b/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
index 91ecb4f..3e4d129 100644
--- a/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
+++ b/src/test/java/com/android/tools/r8/internal/CompilationTestBase.java
@@ -16,6 +16,7 @@
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.ArtErrorParser;
import com.android.tools.r8.utils.ArtErrorParser.ArtErrorInfo;
@@ -82,7 +83,7 @@
builder.addProguardConfigurationFiles(Paths.get(pgConf));
}
builder.setMode(mode);
- builder.setMinApiLevel(Constants.ANDROID_L_API);
+ builder.setMinApiLevel(AndroidApiLevel.L.getLevel());
builder.addProguardConfigurationConsumer(b -> {
b.setPrintSeeds(false);
});
@@ -94,7 +95,7 @@
D8Command.builder()
.addProgramFiles(ListUtils.map(inputs, Paths::get))
.setMode(mode)
- .setMinApiLevel(Constants.ANDROID_L_API)
+ .setMinApiLevel(AndroidApiLevel.L.getLevel())
.build());
}
return checkVerification(outputApp, referenceApk);
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreDeterministicTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreDeterministicTest.java
index 75a0275..02e301e 100644
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreDeterministicTest.java
+++ b/src/test/java/com/android/tools/r8/internal/R8GMSCoreDeterministicTest.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.OutputMode;
import com.beust.jcommander.internal.Lists;
@@ -40,7 +41,7 @@
options.testing.irOrdering = this::shuffle;
// Only use one thread to process to process in the order decided by the callback.
options.numberOfThreads = 1;
- options.minApiLevel = Constants.ANDROID_L_API;
+ options.minApiLevel = AndroidApiLevel.L.getLevel();
});
}
diff --git a/src/test/java/com/android/tools/r8/internal/R8GMSCoreFixedPointTest.java b/src/test/java/com/android/tools/r8/internal/R8GMSCoreFixedPointTest.java
index 376ccf3..0b0151c 100644
--- a/src/test/java/com/android/tools/r8/internal/R8GMSCoreFixedPointTest.java
+++ b/src/test/java/com/android/tools/r8/internal/R8GMSCoreFixedPointTest.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import java.io.IOException;
import java.nio.file.Paths;
@@ -23,7 +24,7 @@
// First compilation.
AndroidApp app = AndroidApp.fromProgramDirectory(Paths.get(GMSCORE_V7_DIR));
AndroidApp app1 =
- ToolHelper.runR8(app, options -> options.minApiLevel = Constants.ANDROID_L_API);
+ ToolHelper.runR8(app, options -> options.minApiLevel = AndroidApiLevel.L.getLevel());
// Second compilation.
// Add option --skip-outline-opt for second compilation. The second compilation can find
@@ -32,7 +33,7 @@
// See b/33410508 and b/33475705.
AndroidApp app2 = ToolHelper.runR8(app1, options -> {
options.outline.enabled = false;
- options.minApiLevel = Constants.ANDROID_L_API;
+ options.minApiLevel = AndroidApiLevel.L.getLevel();
});
// TODO: Require that the results of the two compilations are the same.
diff --git a/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java b/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
index ab88a99..b260304 100644
--- a/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
+++ b/src/test/java/com/android/tools/r8/jsr45/JSR45Tests.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.graph.DexAnnotationElement;
import com.android.tools.r8.graph.DexValue.DexValueString;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.DexInspector;
import com.android.tools.r8.utils.DexInspector.AnnotationSubject;
@@ -52,7 +53,7 @@
void compileWithD8(Path intputPath, Path outputPath) throws IOException, CompilationException {
D8.run(
D8Command.builder()
- .setMinApiLevel(Constants.ANDROID_O_API)
+ .setMinApiLevel(AndroidApiLevel.O.getLevel())
.addProgramFiles(intputPath)
.setOutputPath(outputPath)
.build());
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
index ed19b8e..15cd3b6 100644
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
+++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexListTests.java
@@ -47,6 +47,7 @@
import com.android.tools.r8.jasmin.JasminBuilder;
import com.android.tools.r8.naming.NamingLens;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.DexInspector;
@@ -105,17 +106,19 @@
// Generates an application with many classes, every even in one package and every odd in
// another. Keep the number of methods low enough for single dex application.
AndroidApp generated = generateApplication(
- MANY_CLASSES, Constants.DEFAULT_ANDROID_API, MANY_CLASSES_SINGLE_DEX_METHODS_PER_CLASS);
+ MANY_CLASSES, AndroidApiLevel.getDefault().getLevel(),
+ MANY_CLASSES_SINGLE_DEX_METHODS_PER_CLASS);
generated.write(getManyClassesSingleDexAppPath(), OutputMode.Indexed);
// Generates an application with many classes, every even in one package and every odd in
// another. Add enough methods so the application cannot fit into one dex file.
generated = generateApplication(
- MANY_CLASSES, Constants.ANDROID_L_API, MANY_CLASSES_MULTI_DEX_METHODS_PER_CLASS);
+ MANY_CLASSES, AndroidApiLevel.L.getLevel(), MANY_CLASSES_MULTI_DEX_METHODS_PER_CLASS);
generated.write(getManyClassesMultiDexAppPath(), OutputMode.Indexed);
// Generates an application with two classes, each with the maximum possible number of methods.
- generated = generateApplication(TWO_LARGE_CLASSES, Constants.ANDROID_N_API, MAX_METHOD_COUNT);
+ generated = generateApplication(TWO_LARGE_CLASSES, AndroidApiLevel.N.getLevel(),
+ MAX_METHOD_COUNT);
generated.write(getTwoLargeClassesAppPath(), OutputMode.Indexed);
}
@@ -403,7 +406,7 @@
// another. Add enough methods so the application cannot fit into one dex file.
// Notice that this one allows multidex while using lower API.
AndroidApp generated = generateApplication(
- MANY_CLASSES, Constants.ANDROID_K_API, true, MANY_CLASSES_MULTI_DEX_METHODS_PER_CLASS);
+ MANY_CLASSES, AndroidApiLevel.K.getLevel(), true, MANY_CLASSES_MULTI_DEX_METHODS_PER_CLASS);
generated.write(getManyClassesForceMultiDexAppPath(), OutputMode.Indexed);
// Make sure the generated app indeed has multiple dex files.
assertTrue(generated.getDexProgramResources().size() > 1);
@@ -416,7 +419,8 @@
// Notice that this one fails due to the min API.
try {
generateApplication(
- MANY_CLASSES, Constants.ANDROID_K_API, false, MANY_CLASSES_MULTI_DEX_METHODS_PER_CLASS);
+ MANY_CLASSES, AndroidApiLevel.K.getLevel(), false,
+ MANY_CLASSES_MULTI_DEX_METHODS_PER_CLASS);
fail("Expect to fail, for there are many classes while multidex is not enabled.");
} catch (DexOverflowException e) {
// Make sure {@link MonoDexDistributor} was used.
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexTracingTest.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexTracingTest.java
index cc56417..e8d8ee7 100644
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexTracingTest.java
+++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexTracingTest.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.maindexlist;
-import static com.android.tools.r8.dex.Constants.ANDROID_I_API;
import static com.android.tools.r8.utils.FileUtils.JAR_EXTENSION;
import static com.android.tools.r8.utils.FileUtils.ZIP_EXTENSION;
@@ -16,6 +15,7 @@
import com.android.tools.r8.graph.DexClass;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.ir.desugar.LambdaRewriter;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.InternalOptions;
import java.nio.charset.StandardCharsets;
@@ -48,7 +48,7 @@
EXAMPLE_BUILD_DIR,
Paths.get(EXAMPLE_SRC_DIR, "multidex", "main-dex-rules.txt"),
Paths.get(EXAMPLE_SRC_DIR, "multidex001", "ref-list-1.txt"),
- ANDROID_I_API);
+ AndroidApiLevel.I.getLevel());
}
@Test
@@ -59,7 +59,7 @@
EXAMPLE_BUILD_DIR,
Paths.get(EXAMPLE_SRC_DIR, "multidex001", "main-dex-rules-2.txt"),
Paths.get(EXAMPLE_SRC_DIR, "multidex001", "ref-list-2.txt"),
- ANDROID_I_API);
+ AndroidApiLevel.I.getLevel());
}
@Test
@@ -70,7 +70,7 @@
EXAMPLE_BUILD_DIR,
Paths.get(EXAMPLE_SRC_DIR, "multidex", "main-dex-rules.txt"),
Paths.get(EXAMPLE_SRC_DIR, "multidex002", "ref-list-1.txt"),
- ANDROID_I_API);
+ AndroidApiLevel.I.getLevel());
}
@Test
@@ -81,7 +81,7 @@
EXAMPLE_BUILD_DIR,
Paths.get(EXAMPLE_SRC_DIR, "multidex", "main-dex-rules.txt"),
Paths.get(EXAMPLE_SRC_DIR, "multidex003", "ref-list-1.txt"),
- ANDROID_I_API);
+ AndroidApiLevel.I.getLevel());
}
@Test
@@ -92,7 +92,7 @@
EXAMPLE_O_BUILD_DIR,
Paths.get(EXAMPLE_SRC_DIR, "multidex", "main-dex-rules.txt"),
Paths.get(EXAMPLE_O_SRC_DIR, "multidex004", "ref-list-1.txt"),
- ANDROID_I_API);
+ AndroidApiLevel.I.getLevel());
}
private void doTest(
diff --git a/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingTest.java b/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingTest.java
index a80f46d..22876ff 100644
--- a/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingTest.java
+++ b/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingTest.java
@@ -12,6 +12,7 @@
import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.naming.MemberNaming.MethodSignature;
import com.android.tools.r8.shaking.ProguardRuleParserException;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.DexInspector;
import com.android.tools.r8.utils.DexInspector.FieldAccessInstructionSubject;
import com.android.tools.r8.utils.DexInspector.InstructionSubject;
@@ -294,9 +295,9 @@
public int getMinApiLevel() {
switch (version) {
case PRE_N:
- return Constants.DEFAULT_ANDROID_API;
+ return AndroidApiLevel.getDefault().getLevel();
case N:
- return Constants.ANDROID_N_API;
+ return AndroidApiLevel.N.getLevel();
default:
Assert.fail();
return -1;
diff --git a/src/test/java/com/android/tools/r8/regress/b63935662/Regress63935662.java b/src/test/java/com/android/tools/r8/regress/b63935662/Regress63935662.java
index 8d0e667..01b0a17 100644
--- a/src/test/java/com/android/tools/r8/regress/b63935662/Regress63935662.java
+++ b/src/test/java/com/android/tools/r8/regress/b63935662/Regress63935662.java
@@ -8,6 +8,7 @@
import com.android.tools.r8.TestBase;
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.dex.Constants;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.OffOrAuto;
import java.nio.file.Path;
@@ -22,7 +23,7 @@
R8Command command =
ToolHelper.prepareR8CommandBuilder(app)
.addProguardConfigurationFiles(proguardConfig)
- .setMinApiLevel(Constants.ANDROID_L_API)
+ .setMinApiLevel(AndroidApiLevel.L.getLevel())
.build();
String resultFromJava = runOnJava(mainClass);
app = ToolHelper.runR8(command, options -> options.interfaceMethodDesugaring = OffOrAuto.Auto);