From c70c811ea20fa9bebd3f5289b56c955e0fd28673 Mon Sep 17 00:00:00 2001 From: Matt Carroll Date: Tue, 30 Jul 2019 12:57:01 -0700 Subject: [PATCH] Android Embedding Refactor 38: Removed AssetManager from DartEntrypoint. (flutter/engine#10250) --- .../FlutterActivityAndFragmentDelegate.java | 1 - .../embedding/engine/FlutterEngine.java | 2 +- .../embedding/engine/dart/DartExecutor.java | 21 +++++++++++-------- .../android/io/flutter/view/FlutterMain.java | 6 ++++++ .../io/flutter/view/FlutterNativeView.java | 2 +- ...lutterActivityAndFragmentDelegateTest.java | 1 - 6 files changed, 20 insertions(+), 13 deletions(-) diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java index c7b3308da38..37db2b1a6ce 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/android/FlutterActivityAndFragmentDelegate.java @@ -293,7 +293,6 @@ import static android.content.ComponentCallbacks2.TRIM_MEMORY_RUNNING_LOW; // Configure the Dart entrypoint and execute it. DartExecutor.DartEntrypoint entrypoint = new DartExecutor.DartEntrypoint( - host.getContext().getResources().getAssets(), host.getAppBundlePath(), host.getDartEntrypointFunctionName() ); diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java index 3e2fb2b1c26..8f799ef4972 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/FlutterEngine.java @@ -128,7 +128,7 @@ public class FlutterEngine implements LifecycleOwner { flutterJNI.addEngineLifecycleListener(engineLifecycleListener); attachToJni(); - this.dartExecutor = new DartExecutor(flutterJNI); + this.dartExecutor = new DartExecutor(flutterJNI, context.getAssets()); this.dartExecutor.onAttachedToJNI(); // TODO(mattcarroll): FlutterRenderer is temporally coupled to attach(). Remove that coupling if possible. diff --git a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java index cb9086c756c..d525357c872 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/embedding/engine/dart/DartExecutor.java @@ -10,13 +10,13 @@ import android.support.annotation.Nullable; import android.support.annotation.UiThread; import java.nio.ByteBuffer; -import java.util.Objects; import io.flutter.Log; import io.flutter.embedding.engine.FlutterJNI; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugin.common.StringCodec; import io.flutter.view.FlutterCallbackInformation; +import io.flutter.view.FlutterMain; /** * Configures, bootstraps, and starts executing Dart code. @@ -44,6 +44,8 @@ public class DartExecutor implements BinaryMessenger { @NonNull private final FlutterJNI flutterJNI; @NonNull + private final AssetManager assetManager; + @NonNull private final DartMessenger messenger; private boolean isApplicationRunning = false; @Nullable @@ -62,8 +64,9 @@ public class DartExecutor implements BinaryMessenger { } }; - public DartExecutor(@NonNull FlutterJNI flutterJNI) { + public DartExecutor(@NonNull FlutterJNI flutterJNI, @NonNull AssetManager assetManager) { this.flutterJNI = flutterJNI; + this.assetManager = assetManager; this.messenger = new DartMessenger(flutterJNI); messenger.setMessageHandler("flutter/isolate", isolateChannelMessageHandler); } @@ -124,7 +127,7 @@ public class DartExecutor implements BinaryMessenger { dartEntrypoint.pathToBundle, dartEntrypoint.dartEntrypointFunctionName, null, - dartEntrypoint.androidAssetManager + assetManager ); isApplicationRunning = true; @@ -251,11 +254,13 @@ public class DartExecutor implements BinaryMessenger { * to find that entrypoint and other assets required for Dart execution. */ public static class DartEntrypoint { - /** - * Standard Android AssetManager, provided from some {@code Context} or {@code Resources}. - */ @NonNull - public final AssetManager androidAssetManager; + public static DartEntrypoint createDefault() { + return new DartEntrypoint( + FlutterMain.findAppBundlePath(), + "main" + ); + } /** * The path within the AssetManager where the app will look for assets. @@ -270,11 +275,9 @@ public class DartExecutor implements BinaryMessenger { public final String dartEntrypointFunctionName; public DartEntrypoint( - @NonNull AssetManager androidAssetManager, @NonNull String pathToBundle, @NonNull String dartEntrypointFunctionName ) { - this.androidAssetManager = androidAssetManager; this.pathToBundle = pathToBundle; this.dartEntrypointFunctionName = dartEntrypointFunctionName; } diff --git a/engine/src/flutter/shell/platform/android/io/flutter/view/FlutterMain.java b/engine/src/flutter/shell/platform/android/io/flutter/view/FlutterMain.java index 9552dafa013..1d1c08d2bb3 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/view/FlutterMain.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/view/FlutterMain.java @@ -315,6 +315,12 @@ public class FlutterMain { } } + @NonNull + public static String findAppBundlePath() { + return sFlutterAssetsDir; + } + + @Deprecated @Nullable public static String findAppBundlePath(@NonNull Context applicationContext) { return sFlutterAssetsDir; diff --git a/engine/src/flutter/shell/platform/android/io/flutter/view/FlutterNativeView.java b/engine/src/flutter/shell/platform/android/io/flutter/view/FlutterNativeView.java index 6bf4ab030dd..639c61a83ed 100644 --- a/engine/src/flutter/shell/platform/android/io/flutter/view/FlutterNativeView.java +++ b/engine/src/flutter/shell/platform/android/io/flutter/view/FlutterNativeView.java @@ -43,7 +43,7 @@ public class FlutterNativeView implements BinaryMessenger { mPluginRegistry = new FlutterPluginRegistry(this, context); mFlutterJNI = new FlutterJNI(); mFlutterJNI.setRenderSurface(new RenderSurfaceImpl()); - this.dartExecutor = new DartExecutor(mFlutterJNI); + this.dartExecutor = new DartExecutor(mFlutterJNI, context.getAssets()); mFlutterJNI.addEngineLifecycleListener(new EngineLifecycleListenerImpl()); attach(this, isBackgroundView); assertAttached(); diff --git a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java index 8e0e1ea88f5..9350e83789c 100644 --- a/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java +++ b/engine/src/flutter/shell/platform/android/test/io/flutter/embedding/android/FlutterActivityAndFragmentDelegateTest.java @@ -172,7 +172,6 @@ public class FlutterActivityAndFragmentDelegateTest { // Create the DartEntrypoint that we expect to be executed. DartExecutor.DartEntrypoint dartEntrypoint = new DartExecutor.DartEntrypoint( - RuntimeEnvironment.application.getAssets(), "/my/bundle/path", "myEntrypoint" );