理解两套资源的用途
较旧的启动器从各密度 mipmap 目录读取位图,自适应图标则通过 XML 引用前景和背景,让启动器应用自己的形状。Play Store 图片是另一类产物,不能替代启动器资源。
打开 Android 图标生成器,导入原图并选择 Android。Flutter 项目可选择 Flutter 预设,让压缩包更贴合框架目录结构。
为启动器遮罩留出空间

将重要主体放在中央。原图铺满边缘时,圆形或圆角方形遮罩可能裁掉细节。应检查前景与背景的组合,并测试多种形状。单色资源也需要检查:依赖多种颜色表达含义的设计,转成单一轮廓后可能无法识别。
导出并检查资源树

导出默认 Android 尺寸集合,解压后检查 android/app/src/main/res。导出器还会追加自适应图标 XML 等配套资源:
android/app/src/main/res/
mipmap-mdpi/
mipmap-hdpi/
... other density folders
mipmap-anydpi-v26/
ic_launcher.xml
ic_launcher_round.xml
XML 引用的前景、背景和单色 drawable 资源必须一起保留。不要只复制 mipmap-anydpi-v26 而丢弃其引用文件。生成的 PNG 名称和尺寸可在工具页面核对。
合并到项目
备份现有资源,将生成的 res 内容合并到应用模块。如果模块不叫 app,请调整目标位置。检查 AndroidManifest.xml 中 application 的图标引用:
<application
android:icon="@mipmap/ic_launcher"
android:roundIcon="@mipmap/ic_launcher_round">
<!-- Existing activities and settings -->
</application>
这只是引用片段,不是完整 manifest。请保留原有应用设置。通过 Gradle 构建,并在安装前解决所有缺失资源引用。
验证安装后的效果
在支持的 Android 版本上检查主屏幕和应用列表图标。测试环境允许时,至少检查圆形和圆角方形遮罩。必要时重新安装,区分启动器缓存与资源错误。提交商店前另外检查商店图稿。
遮罩和图层要求参见 Android 自适应图标文档。应用 Web 版本可参考 PWA maskable 教程,其 manifest 格式和安全区域规则不同。
