Skip to content

Commit a4ce848

Browse files
authored
Add FlutterPlayStoreSplitApplication for simpler opt in to Split AOT (flutter#22752)
1 parent 3101dff commit a4ce848

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

ci/licenses_golden/licenses_flutter

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,6 +716,7 @@ FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivityDele
716716
FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterActivityEvents.java
717717
FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterApplication.java
718718
FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterFragmentActivity.java
719+
FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java
719720
FILE: ../../../flutter/shell/platform/android/io/flutter/app/FlutterPluginRegistry.java
720721
FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/AndroidKeyProcessor.java
721722
FILE: ../../../flutter/shell/platform/android/io/flutter/embedding/android/AndroidTouchProcessor.java

shell/platform/android/BUILD.gn

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,7 @@ android_java_sources = [
125125
"io/flutter/app/FlutterActivityEvents.java",
126126
"io/flutter/app/FlutterApplication.java",
127127
"io/flutter/app/FlutterFragmentActivity.java",
128+
"io/flutter/app/FlutterPlayStoreSplitApplication.java",
128129
"io/flutter/app/FlutterPluginRegistry.java",
129130
"io/flutter/embedding/android/AndroidKeyProcessor.java",
130131
"io/flutter/embedding/android/AndroidTouchProcessor.java",
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
package io.flutter.app;
6+
7+
import androidx.annotation.CallSuper;
8+
import com.google.android.play.core.splitcompat.SplitCompatApplication;
9+
import io.flutter.FlutterInjector;
10+
import io.flutter.embedding.engine.dynamicfeatures.PlayStoreDynamicFeatureManager;
11+
12+
/**
13+
* Flutter's extension of {@link SplitCompatApplication} that injects a {@link
14+
* PlayStoreDynamicFeatureManager} with {@link FlutterInjector} to enable Split AOT Flutter apps.
15+
*
16+
* <p>To use this class, either have your custom application class extend
17+
* FlutterPlayStoreSplitApplication or use it directly in the app's AndroidManifest.xml by adding
18+
* the following line:
19+
*
20+
* <pre>{@code
21+
* <manifest
22+
* ...
23+
* <application
24+
* android:name="io.flutter.app.FlutterPlayStoreSplitApplication"
25+
* ...>
26+
* </application>
27+
* </manifest>
28+
* }</pre>
29+
*
30+
* This class is meant to be used with the Google Play store. Custom non-play store applications do
31+
* not need to extend SplitCompatApplication and should inject a custom {@link
32+
* io.flutter.embedding.engine.dynamicfeatures.DynamicFeatureManager} implementation like so:
33+
*
34+
* <pre>{@code
35+
* FlutterInjector.setInstance(
36+
* new FlutterInjector.Builder().setDynamicFeatureManager(yourCustomManager).build());
37+
* }</pre>
38+
*/
39+
public class FlutterPlayStoreSplitApplication extends SplitCompatApplication {
40+
@Override
41+
@CallSuper
42+
public void onCreate() {
43+
super.onCreate();
44+
// Create and inject a PlayStoreDynamicFeatureManager, which is the default manager for
45+
// interacting with the Google Play Store.
46+
PlayStoreDynamicFeatureManager dynamicFeatureManager =
47+
new PlayStoreDynamicFeatureManager(this, null);
48+
FlutterInjector.setInstance(
49+
new FlutterInjector.Builder().setDynamicFeatureManager(dynamicFeatureManager).build());
50+
}
51+
}

0 commit comments

Comments
 (0)