From d47e663efa84473cb230bbcefdb1c341e33ece5d Mon Sep 17 00:00:00 2001 From: Jason Simmons Date: Mon, 30 Apr 2018 12:29:40 -0700 Subject: [PATCH] Re-land "Hold a global reference to the AssetManager Java object backing the APKAssetProvider" (flutter/engine#5132) Fixes https://github.com/flutter/flutter/issues/16222 --- .../src/flutter/shell/platform/android/apk_asset_provider.cc | 3 ++- .../src/flutter/shell/platform/android/apk_asset_provider.h | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/engine/src/flutter/shell/platform/android/apk_asset_provider.cc b/engine/src/flutter/shell/platform/android/apk_asset_provider.cc index 4cf6da16dc6..268897ef5c5 100644 --- a/engine/src/flutter/shell/platform/android/apk_asset_provider.cc +++ b/engine/src/flutter/shell/platform/android/apk_asset_provider.cc @@ -10,7 +10,8 @@ namespace blink { APKAssetProvider::APKAssetProvider(JNIEnv* env, jobject jassetManager, std::string directory) - : directory_(std::move(directory)) { + : java_asset_manager_(env, jassetManager), + directory_(std::move(directory)) { assetManager_ = AAssetManager_fromJava(env, jassetManager); } diff --git a/engine/src/flutter/shell/platform/android/apk_asset_provider.h b/engine/src/flutter/shell/platform/android/apk_asset_provider.h index 70ddbe454bc..7c3f8e12a23 100644 --- a/engine/src/flutter/shell/platform/android/apk_asset_provider.h +++ b/engine/src/flutter/shell/platform/android/apk_asset_provider.h @@ -9,6 +9,7 @@ #include #include "flutter/assets/asset_resolver.h" +#include "flutter/fml/platform/android/scoped_java_ref.h" #include "lib/fxl/memory/ref_counted.h" namespace blink { @@ -21,6 +22,7 @@ class APKAssetProvider final : public AssetResolver { virtual ~APKAssetProvider(); private: + fml::jni::ScopedJavaGlobalRef java_asset_manager_; AAssetManager* assetManager_; const std::string directory_; @@ -36,4 +38,4 @@ class APKAssetProvider final : public AssetResolver { } // namespace blink -#endif // FLUTTER_ASSETS_APK_ASSET_PROVIDER_H \ No newline at end of file +#endif // FLUTTER_ASSETS_APK_ASSET_PROVIDER_H