From eadfee2b608b0c3bbf5dbebcd2947ce4d8fbc323 Mon Sep 17 00:00:00 2001 From: Mehmet Fidanboylu Date: Tue, 25 Aug 2020 14:33:56 -0700 Subject: [PATCH] Workaround for apps crashing when FlutterActivity/Fragment tries to access bundle inferred parameters without initializing FlutterLoader --- .../engine/loader/FlutterApplicationInfo.java | 2 +- .../embedding/engine/loader/FlutterLoader.java | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/shell/platform/android/io/flutter/embedding/engine/loader/FlutterApplicationInfo.java b/shell/platform/android/io/flutter/embedding/engine/loader/FlutterApplicationInfo.java index 3d5c2b10c40d6..2c313dd5d426d 100644 --- a/shell/platform/android/io/flutter/embedding/engine/loader/FlutterApplicationInfo.java +++ b/shell/platform/android/io/flutter/embedding/engine/loader/FlutterApplicationInfo.java @@ -9,7 +9,7 @@ public final class FlutterApplicationInfo { private static final String DEFAULT_AOT_SHARED_LIBRARY_NAME = "libapp.so"; private static final String DEFAULT_VM_SNAPSHOT_DATA = "vm_snapshot_data"; private static final String DEFAULT_ISOLATE_SNAPSHOT_DATA = "isolate_snapshot_data"; - private static final String DEFAULT_FLUTTER_ASSETS_DIR = "flutter_assets"; + static final String DEFAULT_FLUTTER_ASSETS_DIR = "flutter_assets"; final String aotSharedLibraryName; final String vmSnapshotData; diff --git a/shell/platform/android/io/flutter/embedding/engine/loader/FlutterLoader.java b/shell/platform/android/io/flutter/embedding/engine/loader/FlutterLoader.java index 3df6fe097f81f..0b015eed13ffe 100644 --- a/shell/platform/android/io/flutter/embedding/engine/loader/FlutterLoader.java +++ b/shell/platform/android/io/flutter/embedding/engine/loader/FlutterLoader.java @@ -316,9 +316,18 @@ private ResourceExtractor initResources(@NonNull Context applicationContext) { return resourceExtractor; } + private String flutterAssetsDir() { + // TODO(64458): Return default until we can fix initialization sequence. + // When fixed, flutterApplicationInfo should not be null. + if (flutterApplicationInfo == null) { + return FlutterApplicationInfo.DEFAULT_FLUTTER_ASSETS_DIR; + } + return flutterApplicationInfo.flutterAssetsDir; + } + @NonNull public String findAppBundlePath() { - return flutterApplicationInfo.flutterAssetsDir; + return flutterAssetsDir(); } /** @@ -349,7 +358,7 @@ public String getLookupKeyForAsset(@NonNull String asset, @NonNull String packag @NonNull private String fullAssetPathFrom(@NonNull String filePath) { - return flutterApplicationInfo.flutterAssetsDir + File.separator + filePath; + return flutterAssetsDir() + File.separator + filePath; } public static class Settings {