Add FlutterPlayStoreSplitApplication for simpler opt in to Split AOT (#22752)

diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter
index 45424e0..bc681ff 100755
--- a/ci/licenses_golden/licenses_flutter
+++ b/ci/licenses_golden/licenses_flutter
@@ -716,6 +716,7 @@
 FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivityEvents.java
 FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterApplication.java
 FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java
+FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java
 FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java
 FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/AndroidKeyProcessor.java
 FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/AndroidTouchProcessor.java
diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn
index 29f204f..df2f4a5 100644
--- a/shell/platform/android/BUILD.gn
+++ b/shell/platform/android/BUILD.gn
@@ -125,6 +125,7 @@
   "io/flutter/app/FlutterActivityEvents.java",
   "io/flutter/app/FlutterApplication.java",
   "io/flutter/app/FlutterFragmentActivity.java",
+  "io/flutter/app/FlutterPlayStoreSplitApplication.java",
   "io/flutter/app/FlutterPluginRegistry.java",
   "io/flutter/embedding/android/AndroidKeyProcessor.java",
   "io/flutter/embedding/android/AndroidTouchProcessor.java",
diff --git a/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java
new file mode 100644
index 0000000..91502c8
--- /dev/null
+++ b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java
@@ -0,0 +1,51 @@
+// Copyright 2013 The Flutter Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package io.flutter.app;
+
+import androidx.annotation.CallSuper;
+import com.google.android.play.core.splitcompat.SplitCompatApplication;
+import io.flutter.FlutterInjector;
+import io.flutter.embedding.engine.dynamicfeatures.PlayStoreDynamicFeatureManager;
+
+/**
+ * Flutter's extension of {@link SplitCompatApplication} that injects a {@link
+ * PlayStoreDynamicFeatureManager} with {@link FlutterInjector} to enable Split AOT Flutter apps.
+ *
+ * <p>To use this class, either have your custom application class extend
+ * FlutterPlayStoreSplitApplication or use it directly in the app's AndroidManifest.xml by adding
+ * the following line:
+ *
+ * <pre>{@code
+ * <manifest
+ *    ...
+ *    <application
+ *       android:name="io.flutter.app.FlutterPlayStoreSplitApplication"
+ *       ...>
+ *    </application>
+ *  </manifest>
+ * }</pre>
+ *
+ * This class is meant to be used with the Google Play store. Custom non-play store applications do
+ * not need to extend SplitCompatApplication and should inject a custom {@link
+ * io.flutter.embedding.engine.dynamicfeatures.DynamicFeatureManager} implementation like so:
+ *
+ * <pre>{@code
+ * FlutterInjector.setInstance(
+ *      new FlutterInjector.Builder().setDynamicFeatureManager(yourCustomManager).build());
+ * }</pre>
+ */
+public class FlutterPlayStoreSplitApplication extends SplitCompatApplication {
+  @Override
+  @CallSuper
+  public void onCreate() {
+    super.onCreate();
+    // Create and inject a PlayStoreDynamicFeatureManager, which is the default manager for
+    // interacting with the Google Play Store.
+    PlayStoreDynamicFeatureManager dynamicFeatureManager =
+        new PlayStoreDynamicFeatureManager(this, null);
+    FlutterInjector.setInstance(
+        new FlutterInjector.Builder().setDynamicFeatureManager(dynamicFeatureManager).build());
+  }
+}