从已弃用的闪屏页 API 迁移

在 Flutter 2.5 版本之前,Flutter 应用程序可以通过定义 manifest 文件 (AndroidManifest.xml) 中的元数据,或在其 FlutterActivity 中实现 provideSplashScreen,再或者两者兼顾使用,来添加闪屏页。闪屏页会在 Android 启动页显示后,Flutter 首帧绘制前短暂显示。从 Flutter 2.5 版本起,这种方式已被弃用。 Flutter 现在会自动保持显示 Android 启动页,直至首帧绘制。

请按照 Flutter 2.5 版本之前自定义应用程序闪屏页相应的操作步骤,将自定义的闪屏页迁移到只用自定义应用程序的启动页。

FlutterActivity 中自定义闪屏页

  1. 在应用程序的 FlutterActivity 中找到 provideSplashScreen() 方法的实现并 将其删除。该方法应该包括了将应用程序的自定义闪屏页构建成一个 Drawable 的实现。例如:

    java
    @Override
    public SplashScreen provideSplashScreen() {
        // ...
        return new DrawableSplashScreen(
            new SomeDrawable(
                ContextCompat.getDrawable(this, R.some_splash_screen)));
    }
  2. 请按照接下来章节中的步骤,确保你的 Drawable 闪屏页(上个步骤示例中的 R.some_splash_screen)已正确配置为应用程序的自定义启动页。

在 Manifest 中自定义闪屏页

  1. 在应用程序的 AndroidManifest.xml 文件中找到 activity 元素。在此元素中,找到 android:theme 属性以及定义闪屏页为 io.flutter.embedding.android.SplashScreenDrawablemeta-data 元素,以便在后续的步骤中进行更新。例如:

    xml
    <activity
        // ...
        android:theme="@style/SomeTheme">
      // ...
      <meta-data
          android:name="io.flutter.embedding.android.SplashScreenDrawable"
          android:resource="@drawable/some_splash_screen"
          />
    </activity>
  2. 如果未指定 android:theme 属性,请添加该属性并为应用程序的启动页 定义启动主题

  3. 删除 meta-data 元素,因为 Flutter 不再使用该元素,如果保留它可能会导致崩溃。

  4. 在应用程序的 style 资源中找到由 android:theme 属性指定的主题。该主题指定了应用程序的启动主题。请确保 styleandroid:windowBackground 属性配置为你的自定义闪屏页。例如:

    xml
    <resources>
        <style
            name="SomeTheme"
            // ...
            >
            <!-- Show a splash screen on the activity. Automatically removed when
                 Flutter draws its first frame -->
            <item name="android:windowBackground">@drawable/some_splash_screen</item>
        </style>
    </resources>