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

Flutter Android端如何单独设置启动页图标不影响桌面图标

Android端Flutter启动页与桌面图标独立配置方案

问题根因

从API 29(Android 10)开始,系统前置了SplashScreen兼容逻辑,新版Flutter引擎默认会优先读取主题中配置的系统启动页属性,不再直接加载你自定义的launch_screen.xml布局。默认配置下系统启动页会直接引用mipmap目录下的桌面图标资源,同时会跟随系统图标样式做圆形/圆角裁剪,这也是之前修改mipmap下的ic_launcher会同时影响桌面和启动页、图标被裁剪模糊的核心原因。
mipmap目录本身是Android系统专门为桌面图标设计的资源目录,系统会对该目录下的资源做分辨率缩放、形状裁剪、主题适配等特殊处理,本身就不适合存放启动页展示资源。

分步配置方案

该方案完全基于Android原生启动逻辑实现,启动页在应用进程初始化、Flutter引擎加载阶段自动展示,Flutter渲染第一帧后自动消失,不需要手动配置显示时长,可自动适配不同性能设备的实际启动耗时。

  • 第一步:资源隔离存放
    桌面图标相关资源全部保留在原有mipmap目录下,ic_launcher、ic_launcher_round以及mipmap-anydpi-v26下的自适应图标配置完全不做修改,从资源层面保证桌面显示不受影响。
    启动页专属的展示图片全部放入对应分辨率的drawable目录,禁止放入mipmap目录。
  • 第二步:定义启动页背景资源
    在res/drawable目录下新建launch_screen_bg.xml,配置需要的启动页展示效果,以下是全屏居中裁剪显示启动图的配置示例:
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item>
            <bitmap
                android:gravity="fill_horizontal|fill_vertical"
                android:src="@drawable/launch_screen"
                android:tileMode="disabled" />
        </item>
    </layer-list>
    
    同步在res/drawable-v29目录下新建同名同内容的launch_screen_bg.xml,覆盖API29+版本的资源加载逻辑。
  • 第三步:修改启动主题配置,解耦启动页与桌面图标
    打开res/values/styles.xml,找到启动Activity使用的LaunchTheme(即Manifest中为MainActivity配置的启动主题),修改为如下配置:
    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
        <!-- 指定启动页展示的自定义背景 -->
        <item name="android:windowBackground">@drawable/launch_screen_bg</item>
        <!-- 屏蔽系统默认拉取桌面图标作为启动页元素的逻辑 -->
        <item name="android:windowSplashScreenAnimatedIcon">@null</item>
        <item name="android:windowSplashScreenIconBackgroundColor">@null</item>
        <item name="android:windowSplashScreenBrandingImage">@null</item>
        <!-- 关闭API29+系统对启动页内容的强制图标形状裁剪 -->
        <item name="android:windowOptOutEdgeToEdgeEnforcement">true</item>
    </style>
    
  • 第四步:校验Manifest配置
    打开AndroidManifest.xml确认两个核心配置:
    1. application标签下的android:icon、android:roundIcon属性依然指向@mipmap/ic_launcher、@mipmap/ic_launcher_round,不做任何修改
    2. MainActivity的android:theme属性指向上述修改完成的LaunchTheme,和应用正常运行使用的主题做区分

注意事项

  • 配置完成后需要彻底卸载测试设备上的旧版应用再重装,避免系统缓存旧的启动页资源导致配置不生效
  • 如果之前集成过第三方Flutter启动页插件,需要先清理插件生成的主题、Manifest冗余配置,避免配置冲突
  • 不要修改mipmap-anydpi-v26目录下的任何ic_launcher相关文件,该目录下的配置仅对桌面图标生效,修改后反而会导致桌面图标显示异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:57:21