Flutter Android通知图标变灰色方块问题求助(flutter_local_notifications)
解决三星Galaxy S10+发布模式下flutter_local_notifications通知图标变灰方块的问题
我来帮你搞定这个头疼的问题!结合你描述的情况(调试模式正常、彩色图标能显示、单色图标在发布模式变灰),大概率是资源配置或发布模式的资源处理出了问题,下面是针对性的解决步骤:
一、先确认通知图标是否完全符合Android要求
Android 5.0+对通知图标有严格要求:
- 必须是纯白色前景、完全透明背景的单色图标,不能有任何阴影、渐变或其他颜色(哪怕是淡灰色都不行)
- 要覆盖所有分辨率:mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi,每个分辨率对应不同尺寸的图标
你用Android Asset Studio生成时,要确保选的是「Notification Icons」类型,生成后下载的zip包会包含所有分辨率的文件夹,直接用这些图标就对了。
二、检查图标放置的目录
很多人会不小心把图标放到android/app/src/debug/res目录下,调试模式能读取到,但发布模式只会加载android/app/src/main/res下的资源!
- 把所有分辨率的通知图标(比如
ic_notification.png)放到android/app/src/main/res/drawable-mdpi、drawable-hdpi等对应文件夹里 - 确保图标文件名一致,且没有拼写错误
三、配置Flutter Local Notifications和AndroidManifest
初始化插件时指定图标:
在初始化FlutterLocalNotificationsPlugin时,明确设置通知图标名称(不带.png后缀):const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('ic_notification');在AndroidManifest.xml中设置默认通知图标:
打开android/app/src/main/AndroidManifest.xml,在<application>标签内添加:<!-- 针对本地通知的默认图标 --> <meta-data android:name="io.flutter.plugins.localnotification.default_notification_icon" android:resource="@drawable/ic_notification" /> <!-- 如果同时用了FCM,也加上这个 --> <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_notification" />
四、防止发布模式下资源被压缩
Android发布模式默认会启用资源压缩(shrinkResources),可能误删通知图标,需要做以下配置:
打开android/app/build.gradle,在buildTypes的release块中:
release { // 如果不需要资源压缩,直接关闭 shrinkResources false minifyEnabled true // 如果你需要混淆,这个可以保留 // 如果必须开启资源压缩,就添加keep规则: // 在res/raw目录下创建keep.xml,内容如下: // <resources xmlns:tools="http://schemas.android.com/tools" tools:keep="@drawable/ic_notification" /> }
五、清理缓存并重新构建发布包
最后一步很关键,避免旧资源缓存干扰:
- 执行
flutter clean清理项目缓存 - 重新构建发布包:
flutter build apk --release(或者flutter build appbundle)
按照以上步骤操作后,三星Galaxy S10+的发布模式应该就能正常显示纯白色通知图标了!
内容的提问来源于stack exchange,提问作者superariesss
相关产品推荐
相关产品推荐

