Flutter Android:如何在Release构建中打包自定义通知操作图标?
Flutter Release版自定义通知图标不显示的解决办法
针对你遇到的Debug模式正常、Release模式自定义通知图标消失的问题,按以下步骤配置即可解决:
1. 规范图标资源存放
- 若使用PNG位图,需按Android屏幕密度分类,将对应尺寸的图标放入
android/app/src/main/res/drawable-xxxhdpi、drawable-xxhdpi等目录;若使用矢量SVG图,直接放入drawable目录即可。 - 确保图标文件名仅包含小写字母、数字和下划线,避免大写或特殊字符(你的
up、down、one符合要求)。
2. 修正MediaControl的图标引用
去掉androidIcon参数里的drawable/前缀,直接使用图标文件名,示例代码修改为:
static MediaControl like = MediaControl.custom( androidIcon: 'up', label: 'Like', name: 'like', ); static MediaControl dislike = MediaControl.custom( androidIcon: 'down', label: 'Dislike', name: 'dislike' ); static MediaControl oneStar = MediaControl.custom( androidIcon: 'one', label: 'Star', name: 'star' );
audio-service在Android端会自动检索drawable目录下的资源,前缀会导致资源路径匹配失败。
3. 配置打包规则,防止资源被移除
Release模式下默认开启资源压缩和代码混淆,需确保通知图标不被误删:
- 打开
android/app/build.gradle,在release构建类型中添加资源保留配置:
android { buildTypes { release { shrinkResources true minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' // 保留通知图标资源(按需添加所有图标) resValue "string", "audio_service_notification_icon", "@drawable/up" } } }
- 打开
android/app/proguard-rules.pro,添加规则确保图标资源不被混淆移除:
// 保留应用相关类和通知图标资源 -keep class com.chrisheib.musicapp.** { *; } -keepresourcedrawable up,down,one
4. 重新构建并测试
执行命令重新生成App Bundle:
flutter build appbundle
安装生成的Release版本包,即可看到自定义通知图标正常显示。
内容的提问来源于stack exchange,提问作者STSchiff
相关产品推荐
相关产品推荐

