Flutter Android APK中通知图标变为1x1像素问题咨询
解决Flutter打包APK后通知图标变为1x1像素的问题
核心原因
Android通知图标要求仅使用透明背景的单色(白色)图标,如果你的图标不符合这个规范,打包时aapt会错误处理资源,导致图标被压缩成1x1像素。仅关闭PNG压缩不足以解决问题,还需确保图标目录、格式和配置完全符合Android规范。
具体解决步骤
重新制作合规的通知图标:
制作一张透明背景、白色前景的基础图标(尺寸建议24x24),再生成对应不同dpi的版本:- mdpi: 24x24
- hdpi: 36x36
- xhdpi: 48x48
- xxhdpi: 72x72
- xxxhdpi: 96x96
将这些图标分别放入android/app/src/main/res/drawable-mdpi/、drawable-hdpi/等对应dpi目录,保持统一命名(比如notification_icon.png)。
配置AndroidManifest.xml:
在android/app/src/main/AndroidManifest.xml的<application>标签中明确指定通知图标:<application ... android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:notificationIcon="@drawable/notification_icon" <!-- 新增该行 --> ...>完善gradle资源压缩配置:
在android/app/build.gradle的android块中补充完整的禁用压缩配置:android { ... aaptOptions { cruncherEnabled = false useNewCruncher = false // 适配新版aapt工具 } buildTypes { release { ... crunchPngs false } } }清理缓存后重新打包:
执行命令清理旧构建缓存,再重新生成release包:flutter clean flutter build apk --release
额外注意事项
- 不要仅将图标放在
drawable根目录,Android会根据设备dpi自动匹配对应目录的图标,单一目录易引发适配问题。 - 禁止使用彩色或不透明背景的图标,这类图标会被Android系统强制处理,大概率导致显示异常。
内容的提问来源于stack exchange,提问作者pinoyyid
相关产品推荐
相关产品推荐

