You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:17:10