Flutter Android多Product Flavors下通知及设置图标异常问题
Flutter多Flavor应用图标不生效问题排查与解决
检查Flavor资源目录结构与命名
从你的文件夹结构来看,TCD目录下的res文件夹必须和main目录的结构完全对应:- 确保TCD/res下包含
mipmap-hdpi、mipmap-mdpi、mipmap-xhdpi等所有分辨率子文件夹; - 每个分辨率文件夹里的图标文件名必须和main目录里的完全一致(比如
ic_launcher.png、ic_launcher_round.png),系统只会替换同名的资源文件,文件名不匹配就会用默认的ABC图标。
- 确保TCD/res下包含
确认build.gradle的Flavor配置完整性
打开android/app/build.gradle,核对Flavor配置:android { ... flavorDimensions "default" productFlavors { abc { dimension "default" applicationId "com.example.abc" resValue "string", "app_name", "ABC" } tcd { dimension "default" applicationId "com.example.tcd" // 必须和ABC的applicationId不同 resValue "string", "app_name", "TCD" } } }重点是两个flavor的applicationId必须唯一,否则不仅图标会混淆,两个应用甚至无法同时安装。
推送通知图标未针对Flavor配置
推送通知显示ABC图标,大概率是通知图标没做Flavor适配:- 在TCD/res的对应分辨率文件夹里添加通知图标(比如
ic_notification.png),文件名要和main目录里的通知图标一致; - 检查推送的payload配置,有没有硬编码指定ABC的图标名称,要改成通用的图标名让系统自动匹配Flavor资源;
- 若用FCM,确保
AndroidManifest.xml里的默认通知图标配置没有硬编码,如下:<meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@mipmap/ic_notification" />
- 在TCD/res的对应分辨率文件夹里添加通知图标(比如
清理缓存后重新构建
资源不生效很多时候是缓存搞的鬼,执行以下命令彻底清理再重新构建:flutter clean flutter build apk --flavor tcd # 测试的话用这个命令 flutter run --flavor tcd解决设置中图标未更新的问题
如果安装后手机设置里还是显示ABC图标:- 先彻底卸载手机上的ABC和TCD应用,再重新安装TCD版本;
- 重启手机,清除系统的应用信息缓存。
内容的提问来源于stack exchange,提问作者Zookey
相关产品推荐
相关产品推荐

