From 59a06d40e62031c9bcf894a7504ae7e2a2b4f74a Mon Sep 17 00:00:00 2001 From: garyqian Date: Wed, 25 Nov 2020 15:06:08 -0800 Subject: [PATCH 1/6] Add FlutterPlayStoreSplitApplication --- shell/platform/android/BUILD.gn | 1 + .../app/FlutterPlayStoreSplitApplication.java | 52 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn index 29f204fd82dcc..97b5799fd8220 100644 --- a/shell/platform/android/BUILD.gn +++ b/shell/platform/android/BUILD.gn @@ -124,6 +124,7 @@ android_java_sources = [ "io/flutter/app/FlutterActivityDelegate.java", "io/flutter/app/FlutterActivityEvents.java", "io/flutter/app/FlutterApplication.java", + "io/flutter/app/FlutterPlayStoreSplitApplication.java", "io/flutter/app/FlutterFragmentActivity.java", "io/flutter/app/FlutterPluginRegistry.java", "io/flutter/embedding/android/AndroidKeyProcessor.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 0000000000000..ec29429834864 --- /dev/null +++ b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java @@ -0,0 +1,52 @@ +// 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 com.google.android.play.core.splitcompat.SplitCompatApplication; +import androidx.annotation.CallSuper; +import io.flutter.embedding.engine.dynamicfeatures.PlayStoreDynamicFeatureManager; +import io.flutter.FlutterInjector; + +/** + * Flutter's extension of {@link SplitCompatApplication} that injects a + * {@link PlayStoreDynamicFeatureManager} with {@link FlutterInjector} to enable Split AOT + * Flutter apps. + * + * 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: + *
+ * {@code
+ * 
+ *    
+ *  
+ * }
+ * 
+ * + * 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: + *
+ * {@code
+ * FlutterInjector.setInstance(
+ *      new FlutterInjector.Builder().setDynamicFeatureManager(yourCustomManager).build());
+ * }
+ * 
+ */ +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()); + } +} From 3c8b2e58ec358ab3720574f9bb20c24ef3d19a81 Mon Sep 17 00:00:00 2001 From: garyqian Date: Mon, 30 Nov 2020 11:20:35 -0800 Subject: [PATCH 2/6] Formatting --- .../app/FlutterPlayStoreSplitApplication.java | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java index ec29429834864..1d7ad8efc7866 100644 --- a/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java +++ b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java @@ -4,20 +4,19 @@ package io.flutter.app; -import com.google.android.play.core.splitcompat.SplitCompatApplication; import androidx.annotation.CallSuper; -import io.flutter.embedding.engine.dynamicfeatures.PlayStoreDynamicFeatureManager; +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. + * Flutter's extension of {@link SplitCompatApplication} that injects a {@link + * PlayStoreDynamicFeatureManager} with {@link FlutterInjector} to enable Split AOT Flutter apps. * - * 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: - *
- * {@code
+ * 

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: + *

{@code
  * 
  *    
  *  
- * }
- * 
+ * }
* - * 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: - *
- * {@code
+ * 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:
+ * 
{@code
  * FlutterInjector.setInstance(
  *      new FlutterInjector.Builder().setDynamicFeatureManager(yourCustomManager).build());
- * }
- * 
+ * }
*/ public class FlutterPlayStoreSplitApplication extends SplitCompatApplication { @Override @CallSuper public void onCreate() { super.onCreate(); - // Create and inject a PlayStoreDynamicFeatureManager, which is the default manager for interacting + // Create and inject a PlayStoreDynamicFeatureManager, which is the default manager for + // interacting // with the Google Play Store. - PlayStoreDynamicFeatureManager dynamicFeatureManager = new PlayStoreDynamicFeatureManager(this, null); + PlayStoreDynamicFeatureManager dynamicFeatureManager = + new PlayStoreDynamicFeatureManager(this, null); FlutterInjector.setInstance( new FlutterInjector.Builder().setDynamicFeatureManager(dynamicFeatureManager).build()); } From 402ce7573f0c4f35449909c2eac32bf092d9cf3f Mon Sep 17 00:00:00 2001 From: garyqian Date: Mon, 30 Nov 2020 11:28:40 -0800 Subject: [PATCH 3/6] Formatting --- .../io/flutter/app/FlutterPlayStoreSplitApplication.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java index 1d7ad8efc7866..74c532681039a 100644 --- a/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java +++ b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java @@ -40,8 +40,7 @@ public class FlutterPlayStoreSplitApplication extends SplitCompatApplication { public void onCreate() { super.onCreate(); // Create and inject a PlayStoreDynamicFeatureManager, which is the default manager for - // interacting - // with the Google Play Store. + // interacting with the Google Play Store. PlayStoreDynamicFeatureManager dynamicFeatureManager = new PlayStoreDynamicFeatureManager(this, null); FlutterInjector.setInstance( From 9764337019dbb52b85786ecf4d9e5cfc527f9795 Mon Sep 17 00:00:00 2001 From: garyqian Date: Mon, 30 Nov 2020 14:57:34 -0800 Subject: [PATCH 4/6] FOrmatting --- .../io/flutter/app/FlutterPlayStoreSplitApplication.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java index 74c532681039a..91502c8568f0d 100644 --- a/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java +++ b/shell/platform/android/io/flutter/app/FlutterPlayStoreSplitApplication.java @@ -16,9 +16,10 @@ *

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: + * *

{@code
  * 
@@ -29,6 +30,7 @@
  * 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:
+ *
  * 
{@code
  * FlutterInjector.setInstance(
  *      new FlutterInjector.Builder().setDynamicFeatureManager(yourCustomManager).build());

From 68d4ffd4e44fbce0f7ea77ec2aa9d0c6b2dbf4e9 Mon Sep 17 00:00:00 2001
From: garyqian 
Date: Mon, 30 Nov 2020 16:09:31 -0800
Subject: [PATCH 5/6] GN ordering

---
 shell/platform/android/BUILD.gn | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/shell/platform/android/BUILD.gn b/shell/platform/android/BUILD.gn
index 97b5799fd8220..df2f4a593572f 100644
--- a/shell/platform/android/BUILD.gn
+++ b/shell/platform/android/BUILD.gn
@@ -124,8 +124,8 @@ android_java_sources = [
   "io/flutter/app/FlutterActivityDelegate.java",
   "io/flutter/app/FlutterActivityEvents.java",
   "io/flutter/app/FlutterApplication.java",
-  "io/flutter/app/FlutterPlayStoreSplitApplication.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",

From ab77a1f18897433ff4df270d248878b4217a20a1 Mon Sep 17 00:00:00 2001
From: garyqian 
Date: Mon, 30 Nov 2020 18:17:49 -0800
Subject: [PATCH 6/6] Licenses

---
 ci/licenses_golden/licenses_flutter | 1 +
 1 file changed, 1 insertion(+)

diff --git a/ci/licenses_golden/licenses_flutter b/ci/licenses_golden/licenses_flutter
index 4dcdfaf9f91d2..815b092a7b089 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/FlutterActivityDele
 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