Add support for API level 36 (Baklava)
* Android SDK files from Baklava SDK Developer Preview 1
* Update API database based on Baklava SDK Developer Preview 1
Change-Id: Ice3e35f5148853613347f1ba8ccef2aef98c0bad
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index 2c639c2..d8c3eff 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -817,7 +817,8 @@
"lib-v32",
"lib-v33",
"lib-v34",
- "lib-v35"
+ "lib-v35",
+ "lib-v36"
).map(::getThirdPartyAndroidJar)
}
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 d512ac1..2f83503c 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
@@ -45,14 +45,15 @@
T(33),
U(34),
V(35),
- MAIN(36), // API level for main is tentative.
+ BAKLAVA(36),
+ MAIN(37), // API level for main is tentative.
EXTENSION(Integer.MAX_VALUE); // Used for API modeling of Android extension APIs.
// When updating LATEST and a new version goes public, add a new api-versions.xml to third_party
// and update the version and generated jar in AndroidApiDatabaseBuilderGeneratorTest. Together
// with that update third_party/android_jar/libcore_latest/core-oj.jar and run
// GenerateCovariantReturnTypeMethodsTest.
- public static final AndroidApiLevel LATEST = V;
+ public static final AndroidApiLevel LATEST = BAKLAVA;
public static final AndroidApiLevel API_DATABASE_LEVEL = LATEST;
@@ -116,7 +117,7 @@
public static AndroidApiLevel getAndroidApiLevel(int apiLevel) {
assert apiLevel > 0;
- assert V == LATEST; // This has to be updated when we add new api levels.
+ assert BAKLAVA == LATEST; // This has to be updated when we add new api levels.
assert UNKNOWN.isGreaterThan(LATEST);
switch (apiLevel) {
case 1:
@@ -189,6 +190,8 @@
return U;
case 35:
return V;
+ case 36:
+ return BAKLAVA;
default:
return MAIN;
}
diff --git a/src/main/java/com/android/tools/r8/utils/DexVersion.java b/src/main/java/com/android/tools/r8/utils/DexVersion.java
index f3e1670..269b85c 100644
--- a/src/main/java/com/android/tools/r8/utils/DexVersion.java
+++ b/src/main/java/com/android/tools/r8/utils/DexVersion.java
@@ -68,6 +68,7 @@
switch (androidApiLevel) {
// MAIN is an unknown higher api version we therefore choose the highest known version.
case MAIN:
+ case BAKLAVA:
case V:
case U:
case T:
diff --git a/src/test/java/com/android/tools/r8/androidapi/GenerateCovariantReturnTypeMethodsTest.java b/src/test/java/com/android/tools/r8/androidapi/GenerateCovariantReturnTypeMethodsTest.java
index 76c0cde..469b5cd 100644
--- a/src/test/java/com/android/tools/r8/androidapi/GenerateCovariantReturnTypeMethodsTest.java
+++ b/src/test/java/com/android/tools/r8/androidapi/GenerateCovariantReturnTypeMethodsTest.java
@@ -75,7 +75,7 @@
Paths.get(ToolHelper.MAIN_SOURCE_DIR)
.resolve(PACKAGE_NAME.replace('.', '/'))
.resolve(CLASS_NAME + ".java");
- private static final AndroidApiLevel GENERATED_FOR_API_LEVEL = AndroidApiLevel.V;
+ private static final AndroidApiLevel GENERATED_FOR_API_LEVEL = AndroidApiLevel.BAKLAVA;
@Parameter public TestParameters parameters;
diff --git a/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGenerator.java b/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGenerator.java
index 58a8ac6..9325826 100644
--- a/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGenerator.java
+++ b/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGenerator.java
@@ -200,19 +200,6 @@
expectedMissingMembers.add(factory.createType("Landroid/nfc/tech/NfcB;"));
expectedMissingMembers.add(factory.createType("Landroid/nfc/tech/Ndef;"));
expectedMissingMembers.add(factory.createType("Landroid/webkit/CookieSyncManager;"));
- expectedMissingMembers.add(
- factory.createType("Landroid/adservices/customaudience/CustomAudienceManager;"));
- expectedMissingMembers.add(
- factory.createType("Landroid/adservices/customaudience/PartialCustomAudience$Builder;"));
- expectedMissingMembers.add(
- factory.createType("Landroid/adservices/customaudience/PartialCustomAudience;"));
- expectedMissingMembers.add(
- factory.createType(
- "Landroid/adservices/customaudience/ScheduleCustomAudienceUpdateRequest$Builder;"));
- expectedMissingMembers.add(
- factory.createType(
- "Landroid/adservices/customaudience/ScheduleCustomAudienceUpdateRequest;"));
- expectedMissingMembers.add(factory.createType("Landroid/app/appsearch/AppSearchResult;"));
assertEquals(
expectedMissingMembers.stream()
.map(DexType::toDescriptorString)
diff --git a/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGeneratorTest.java b/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGeneratorTest.java
index 0dda84b2..5d93f88 100644
--- a/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGeneratorTest.java
+++ b/src/test/java/com/android/tools/r8/apimodel/AndroidApiHashingDatabaseBuilderGeneratorTest.java
@@ -120,9 +120,9 @@
methodReferences.forEach(field -> numberOfMethods.increment())));
});
// These numbers will change when updating api-versions.xml
- assertEquals(5972, parsedApiClasses.size());
- assertEquals(30341, numberOfFields.get());
- assertEquals(46576, numberOfMethods.get());
+ assertEquals(6031, parsedApiClasses.size());
+ assertEquals(30501, numberOfFields.get());
+ assertEquals(46885, numberOfMethods.get());
}
@Test
diff --git a/src/test/java/com/android/tools/r8/apimodel/AndroidApiVersionsXmlParser.java b/src/test/java/com/android/tools/r8/apimodel/AndroidApiVersionsXmlParser.java
index 2d09844..071d6cb 100644
--- a/src/test/java/com/android/tools/r8/apimodel/AndroidApiVersionsXmlParser.java
+++ b/src/test/java/com/android/tools/r8/apimodel/AndroidApiVersionsXmlParser.java
@@ -89,7 +89,8 @@
private Set<String> getDeletedTypesMissingRemovedAttribute() {
Set<String> removedTypeNames = new HashSet<>();
if (maxApiLevel.isGreaterThanOrEqualTo(AndroidApiLevel.U)) {
- if (maxApiLevel.isLessThan(AndroidApiLevel.V)) {
+ if (maxApiLevel.isLessThan(AndroidApiLevel.V)
+ || maxApiLevel.equals(AndroidApiLevel.BAKLAVA)) {
removedTypeNames.add("com.android.internal.util.Predicate");
}
removedTypeNames.add("android.adservices.AdServicesVersion");
diff --git a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
index fcd2106..a19c8e9 100644
--- a/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
+++ b/src/test/java/com/android/tools/r8/globalsynthetics/GlobalSyntheticsEnsureClassesOutputTest.java
@@ -58,7 +58,7 @@
.setMinApi(AndroidApiLevel.K)
.compile()
.inspect(
- inspector -> assertEquals(backend.isDex() ? 1091 : 4, inspector.allClasses().size()));
+ inspector -> assertEquals(backend.isDex() ? 1104 : 4, inspector.allClasses().size()));
}
@Test
diff --git a/third_party/android_jar/lib-v36.tar.gz.sha1 b/third_party/android_jar/lib-v36.tar.gz.sha1
new file mode 100644
index 0000000..939f711
--- /dev/null
+++ b/third_party/android_jar/lib-v36.tar.gz.sha1
@@ -0,0 +1 @@
+f6fe8070ccad90b10d1bcc28a90f5befd3d9afb4
\ No newline at end of file
diff --git a/third_party/android_jar/libcore_latest.tar.gz.sha1 b/third_party/android_jar/libcore_latest.tar.gz.sha1
index 8200e76..4bcde1b 100644
--- a/third_party/android_jar/libcore_latest.tar.gz.sha1
+++ b/third_party/android_jar/libcore_latest.tar.gz.sha1
@@ -1 +1 @@
-96a23da90f1b9412821cef769f3524ef6b05436b
\ No newline at end of file
+6ea109a75610a6f2e173a361bd2345e622b8be06
\ No newline at end of file
diff --git a/third_party/api_database/api_database.tar.gz.sha1 b/third_party/api_database/api_database.tar.gz.sha1
index 966e156c..b81dbaf 100644
--- a/third_party/api_database/api_database.tar.gz.sha1
+++ b/third_party/api_database/api_database.tar.gz.sha1
@@ -1 +1 @@
-0aab829fe216f39035a282024966bbd26bea3a26
\ No newline at end of file
+912f0e6d9fb5e1789c458801f3ed8e6c4e700767
\ No newline at end of file
diff --git a/tools/add-android-sdk.py b/tools/add-android-sdk.py
index e299172..5d00eab 100755
--- a/tools/add-android-sdk.py
+++ b/tools/add-android-sdk.py
@@ -21,6 +21,10 @@
required=True,
metavar=('<name>'),
help='Name of the SDK, either API level or code name')
+ parser.add_argument('--api-level',
+ '--api_level',
+ metavar=('<level>'),
+ help='API level to add this as in third_party')
return parser.parse_args()
@@ -60,7 +64,15 @@
print('Path %s does not exist' % source)
sys.exit(1)
- destination = utils.get_android_jar_dir(args.sdk_name)
+ api_level = -1
+ try:
+ api_level = int(args.api_level if args.api_level else args.sdk_name)
+ except:
+ print('API level "%s" must be an integer'
+ % (args.api_level if args.api_level else args.sdk_name))
+ sys.exit(1)
+
+ destination = utils.get_android_jar_dir(api_level)
# Remove existing if present.
shutil.rmtree(destination, ignore_errors=True)