Flutter v2.5.0 Android原生启动屏废弃警告移除后无显示问题咨询
Flutter v2.5.0 启动屏废弃警告及无启动屏问题解决方案
你仅移除旧的io.flutter.embedding.android.SplashScreenDrawable相关代码的操作不完整,该问题不属于框架本身故障,是未适配新版启动屏机制导致的。
正确适配步骤
- 配置启动屏drawable资源:在
android/app/src/main/res/drawable目录下编辑(不存在则新建)launch_background.xml,写入你需要的启动屏样式,示例配置如下:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@android:color/white" /> <!-- 可替换为你的应用图标或自定义启动图 --> <item> <bitmap android:gravity="center" android:src="@mipmap/ic_launcher" /> </item> </layer-list>
- 调整AndroidManifest配置:打开
android/app/src/main/AndroidManifest.xml,完全移除带有io.flutter.embedding.android.SplashScreenDrawable的meta-data行,确保MainActivity的meta-data中存在以下配置:
<meta-data android:name="io.flutter.embedding.android.NormalTheme" android:resource="@style/LaunchTheme" />
同时确认application标签的android:theme属性指向启动主题,或者直接在activity标签指定android:theme="@style/LaunchTheme"。
- 校验启动主题配置:打开
android/app/src/main/res/values/styles.xml,确保LaunchTheme中配置了正确的启动背景:
<style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar"> <item name="android:windowBackground">@drawable/launch_background</item> <item name="android:windowFullscreen">false</item> <!-- 按需调整是否全屏 --> </style>
- 清理冗余代码:如果之前在
MainActivity中重写了provideSplashScreen相关方法,直接删除即可,新版机制会自动读取主题配置的windowBackground作为启动屏,在Flutter引擎初始化完成前持续展示,不会出现空白期。
启动耗时说明
你感知到的启动耗时变长是无启动屏时的视觉错觉:移除旧配置且未适配新机制时,原生启动阶段会展示系统默认空白窗口,视觉上会觉得启动时间变长,适配完成后启动屏展示逻辑和旧版本一致,不会额外增加启动耗时。
内容的提问来源于stack exchange,提问作者Muhammad Idrees
相关产品推荐
相关产品推荐

