You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter启动屏仅部分设备正常显示,寻求技术排查方案

Android Flutter启动屏兼容问题解决

期望实现的启动屏

期望的启动屏

已完成的实现步骤

  1. 在android/app/src/main/res/drawable目录下添加启动屏图片launch_image.png和渐变背景文件gradient_background.xml
  2. 在android/app/src/main/res/values目录下创建colors.xml文件,存储启动屏颜色:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name='gradientStartColor'>#68CDF6</color>
    <color name='gradientEndColor'>#80D325</color>
</resources>
  1. 编写gradient_background.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@color/gradientStartColor"
        android:endColor="@color/gradientEndColor"
        android:angle="135" />    
</shape>
  1. 修改launch_background.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/gradient_background"/> 

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/launch_image" />
    </item>

</layer-list>

遇到的问题

项目中存在drawable和drawable-v21两个目录,已将前者内容复制到后者,但不清楚该目录作用。启动屏在红米Note 8 Pro真机上正常显示,但在Pixel3a模拟器中显示绿色背景加Flutter默认图标:
Pixel3a模拟器异常显示

解决方法

1. 明确drawable-v21目录作用

drawable-v21是针对Android 5.0(API等级21)及以上版本的资源目录,系统会优先加载对应API等级目录下的资源。你的模拟器属于API21+,会优先读取drawable-v21下的launch_background.xml,如果该文件未正确配置,就会显示异常。

2. 统一资源配置

  • 最简方案:直接删除drawable-v21目录下的launch_background.xml,让所有版本的系统都使用drawable目录下的通用配置,避免版本差异导致的资源加载不一致。
  • 若需保留drawable-v21:必须确保该目录下的launch_background.xml、gradient_background.xml和launch_image.png与drawable目录下的内容完全一致,资源引用路径不能出错。

3. 清理并重建项目

执行以下命令清理缓存并重新运行项目,确保模拟器加载最新的资源:

flutter clean
flutter run

内容的提问来源于stack exchange,提问作者Mikelenjilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 11:57:33