跳转至正文

从已弃用的闪屏页 API 迁移

如何将 Manifest/Activity 定义的闪屏页进行迁移。

在 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.SplashScreenDrawable 的 meta-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 属性指定的主题。该主题指定了应用程序的启动主题。请确保 style 将 android: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>