| // 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.view; |
| |
| import android.content.Context; |
| import android.os.Handler; |
| import androidx.annotation.NonNull; |
| import androidx.annotation.Nullable; |
| import io.flutter.FlutterInjector; |
| import io.flutter.embedding.engine.loader.FlutterLoader; |
| |
| /** |
| * A legacy class to initialize the Flutter engine. |
| * |
| * @deprecated Replaced by {@link io.flutter.embedding.engine.loader.FlutterLoader}. |
| */ |
| @Deprecated |
| public class FlutterMain { |
| |
| public static class Settings { |
| private String logTag; |
| |
| @Nullable |
| public String getLogTag() { |
| return logTag; |
| } |
| |
| /** |
| * Set the tag associated with Flutter app log messages. |
| * |
| * @param tag Log tag. |
| */ |
| public void setLogTag(String tag) { |
| logTag = tag; |
| } |
| } |
| |
| /** |
| * Starts initialization of the native system. |
| * |
| * @param applicationContext The Android application context. |
| */ |
| public static void startInitialization(@NonNull Context applicationContext) { |
| FlutterInjector.instance().flutterLoader().startInitialization(applicationContext); |
| } |
| |
| /** |
| * Starts initialization of the native system. |
| * |
| * <p>This loads the Flutter engine's native library to enable subsequent JNI calls. This also |
| * starts locating and unpacking Dart resources packaged in the app's APK. |
| * |
| * <p>Calling this method multiple times has no effect. |
| * |
| * @param applicationContext The Android application context. |
| * @param settings Configuration settings. |
| */ |
| public static void startInitialization( |
| @NonNull Context applicationContext, @NonNull Settings settings) { |
| FlutterLoader.Settings newSettings = new FlutterLoader.Settings(); |
| newSettings.setLogTag(settings.getLogTag()); |
| FlutterInjector.instance().flutterLoader().startInitialization(applicationContext, newSettings); |
| } |
| |
| /** |
| * Blocks until initialization of the native system has completed. |
| * |
| * <p>Calling this method multiple times has no effect. |
| * |
| * @param applicationContext The Android application context. |
| * @param args Flags sent to the Flutter runtime. |
| */ |
| public static void ensureInitializationComplete( |
| @NonNull Context applicationContext, @Nullable String[] args) { |
| FlutterInjector.instance() |
| .flutterLoader() |
| .ensureInitializationComplete(applicationContext, args); |
| } |
| |
| /** |
| * Same as {@link #ensureInitializationComplete(Context, String[])} but waiting on a background |
| * thread, then invoking {@code callback} on the {@code callbackHandler}. |
| */ |
| public static void ensureInitializationCompleteAsync( |
| @NonNull Context applicationContext, |
| @Nullable String[] args, |
| @NonNull Handler callbackHandler, |
| @NonNull Runnable callback) { |
| FlutterInjector.instance() |
| .flutterLoader() |
| .ensureInitializationCompleteAsync(applicationContext, args, callbackHandler, callback); |
| } |
| |
| @NonNull |
| public static String findAppBundlePath() { |
| return FlutterInjector.instance().flutterLoader().findAppBundlePath(); |
| } |
| |
| @Deprecated |
| @Nullable |
| public static String findAppBundlePath(@NonNull Context applicationContext) { |
| return FlutterInjector.instance().flutterLoader().findAppBundlePath(); |
| } |
| |
| /** |
| * Returns the file name for the given asset. The returned file name can be used to access the |
| * asset in the APK through the {@link android.content.res.AssetManager} API. |
| * |
| * @param asset the name of the asset. The name can be hierarchical |
| * @return the filename to be used with {@link android.content.res.AssetManager} |
| */ |
| @NonNull |
| public static String getLookupKeyForAsset(@NonNull String asset) { |
| return FlutterInjector.instance().flutterLoader().getLookupKeyForAsset(asset); |
| } |
| |
| /** |
| * Returns the file name for the given asset which originates from the specified packageName. The |
| * returned file name can be used to access the asset in the APK through the {@link |
| * android.content.res.AssetManager} API. |
| * |
| * @param asset the name of the asset. The name can be hierarchical |
| * @param packageName the name of the package from which the asset originates |
| * @return the file name to be used with {@link android.content.res.AssetManager} |
| */ |
| @NonNull |
| public static String getLookupKeyForAsset(@NonNull String asset, @NonNull String packageName) { |
| return FlutterInjector.instance().flutterLoader().getLookupKeyForAsset(asset, packageName); |
| } |
| } |