Update update backports for Android 14 and Android 15

  * int CharSequence.compare(CharSequence, CharSequence) was added in
    Android 14
  * Character.toString(int) was added in Android 15

Also update the global synthetics count for Android 15

Bug: b/343127842
Change-Id: I5d657e5e0a73286b5a3d0eec3f796103d8f8024a
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
index 025f819..0b7f0bc 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
@@ -295,6 +295,9 @@
         }
         initializeAndroidUMethodProviders(factory);
       }
+      if (options.getMinApiLevel().isLessThan(AndroidApiLevel.V)) {
+        initializeAndroidVMethodProviders(factory);
+      }
 
       initializeMethodProvidersUnimplementedOnAndroid(factory);
     }
@@ -1726,6 +1729,17 @@
       addProvider(
           new MethodGenerator(method, BackportedMethods::ObjectsMethods_checkFromIndexSizeLong));
 
+      // CharSequence
+      type = factory.charSequenceType;
+
+      // int CharSequence.compare(CharSequence, CharSequence)
+      name = factory.createString("compare");
+      proto =
+          factory.createProto(factory.intType, factory.charSequenceType, factory.charSequenceType);
+      method = factory.createMethod(type, proto, name);
+      addProvider(
+          new MethodGenerator(method, BackportedMethods::CharSequenceMethods_compare, "compare"));
+
       DexType[] mathTypes = {factory.mathType, factory.strictMathType};
       for (DexType mathType : mathTypes) {
         // int {StrictMath.Math}.absExact(int)
@@ -1743,7 +1757,7 @@
       initializeMathExactApis(factory, factory.strictMathType);
     }
 
-    private void initializeMethodProvidersUnimplementedOnAndroid(DexItemFactory factory) {
+    private void initializeAndroidVMethodProviders(DexItemFactory factory) {
       // Character
       DexType type = factory.boxedCharType;
 
@@ -1754,17 +1768,10 @@
       addProvider(
           new MethodGenerator(
               method, BackportedMethods::CharacterMethods_toStringCodepoint, "toStringCodepoint"));
+    }
 
-      // CharSequence
-      type = factory.charSequenceType;
-
-      // int CharSequence.compare(CharSequence, CharSequence)
-      name = factory.createString("compare");
-      proto =
-          factory.createProto(factory.intType, factory.charSequenceType, factory.charSequenceType);
-      method = factory.createMethod(type, proto, name);
-      addProvider(
-          new MethodGenerator(method, BackportedMethods::CharSequenceMethods_compare, "compare"));
+    private void initializeMethodProvidersUnimplementedOnAndroid(DexItemFactory factory) {
+      // None at the moment.
     }
 
     private void initializeAndroidUStreamMethodProviders(DexItemFactory factory) {
diff --git a/src/test/java/com/android/tools/r8/desugar/backports/TestBackportedNotPresentInAndroidJar.java b/src/test/java/com/android/tools/r8/desugar/backports/TestBackportedNotPresentInAndroidJar.java
index 3f55e91..26098b7 100644
--- a/src/test/java/com/android/tools/r8/desugar/backports/TestBackportedNotPresentInAndroidJar.java
+++ b/src/test/java/com/android/tools/r8/desugar/backports/TestBackportedNotPresentInAndroidJar.java
@@ -90,18 +90,12 @@
       if (apiLevel == AndroidApiLevel.MAIN) {
         continue;
       }
-      if (apiLevel == AndroidApiLevel.U) {
-        continue;
-      }
-      if (apiLevel == AndroidApiLevel.T) {
-        continue;
-      }
       if (!ToolHelper.hasAndroidJar(apiLevel)) {
         // Only check for the android jar versions present in third_party.
         System.out.println("Skipping check for " + apiLevel);
         continue;
       }
-      // Check that the backported methods for each API level are are not present in the
+      // Check that the backported methods for each API level are not present in the
       // android.jar for that level.
       CodeInspector inspector = new CodeInspector(ToolHelper.getAndroidJar(apiLevel));
       InternalOptions options = new InternalOptions();
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 9ec7c0f..e6ee76a 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() ? 1045 : 4, inspector.allClasses().size()));
+            inspector -> assertEquals(backend.isDex() ? 1077 : 4, inspector.allClasses().size()));
   }
 
   @Test