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

Flutter发布构建appbundle体积过大,替换flutter_sound后清单冲突如何解决

问题解决指南

一、Flutter发布版包体积过大优化建议

  • 首先确认构建模式为正式发布模式,执行构建命令时明确指定release参数:flutter build appbundle --release,避免误打调试包导致体积异常
  • 优先排查两个高体积风险依赖:
    • jitsi_meet:音视频会议套件默认会打包全架构的so库,体积增量普遍在30MB以上,建议在gradle中配置abi过滤,仅保留业务需要的架构(如仅保留armeabi-v7a、arm64-v8a,过滤x86等不必要的架构)
    • google_fonts:未配置裁剪时会默认打包全量字体资源,建议在pubspec.yaml中添加fonts配置明确指定用到的字体,开启字体裁剪功能
  • 精简Proguard规则:你当前的规则保留了Firebase全量代码,建议移除-keep class com.google.firebase.** { *; }这行,改用Firebase官方提供的精简混淆规则,避免无用代码被保留
  • 开启Dart代码裁剪混淆:执行构建时添加参数flutter build appbundle --release --obfuscate --split-debug-info=./debug-info,主动裁剪无用Dart代码、混淆逻辑的同时压缩体积
  • 拆分架构构建:如果上架Google Play,可添加--split-per-abi参数拆分不同架构的安装包,用户仅会下载对应自己设备架构的包,体积可缩减40%以上

二、MediaButtonReceiver exported属性冲突解决方案

报错核心是awesome_notifications和flutter_sound_core两个插件对同一个系统广播接收器的exported属性配置不一致,按以下步骤处理即可:

  1. 首先在项目根AndroidManifest.xml的根manifest标签中添加tools命名空间声明:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="你的应用包名">
  1. 在application标签内部,手动添加MediaButtonReceiver声明,指定tools:replace="android:exported"覆盖子插件的配置:
<application ...>
    <!-- 原有配置保持不变 -->
    <receiver
        android:name="androidx.media.session.MediaButtonReceiver"
        android:exported="false"
        tools:replace="android:exported" />
    <!-- 原有Activity、Service等配置保持不变 -->
</application>

如果业务需要flutter_sound响应媒体按钮事件,可将上述android:exported的值改为true即可
3. 执行flutter clean后重新构建即可解决冲突

内容的提问来源于stack exchange,提问作者Dev Chauhan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 10:36:05