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

APK包音频正常播放,AAB包上架谷歌商店后多数音频失效问题

AAB打包后内置AMR音频无法播放的解决方案

核心原因

APK是完整安装包,而AAB上传谷歌Play商店后会被自动进行资源压缩、拆分优化,AMR格式容易被误处理,导致资源找不到或损坏。

具体解决步骤

  • 添加资源不压缩规则
    在模块级build.gradle的android块中配置,阻止AAPT压缩AMR文件:

    android {
        // 其他配置...
        aaptOptions {
            noCompress "amr"
        }
        // AGP 7.0+ 也可以用下面的写法
        packagingOptions {
            noCompress += "amr"
        }
    }
    
  • 规范资源命名与引用

    • 确保所有AMR文件名仅使用小写字母、数字和下划线,避免大写或特殊字符(你报错的s003001.amr是合规的,重点检查其他音频文件)。
    • 播放音频时必须通过R.raw资源ID引用,禁止硬编码文件路径:
      MediaPlayer player = MediaPlayer.create(context, R.raw.s003001);
      
  • 禁用Play Store资源拆分优化
    如果谷歌的自动拆分导致资源丢失,在AndroidManifest.xml的<application>标签内添加以下元数据,强制完整下载所有资源:

    <meta-data
        android:name="com.android.vending.splits.assets"
        android:value="false" />
    
  • 本地验证AAB打包问题
    用bundletool生成通用APK本地安装测试,排查是打包问题还是Play Store的问题:

    # 生成APKs文件
    bundletool build-apks --bundle=你的应用包名.aab --output=测试包.apks
    # 安装到设备
    bundletool install-apks --apks=测试包.apks
    

    如果本地安装后也报错,说明是打包配置问题;否则就是Play Store的优化逻辑导致的。

  • 检查音频文件完整性
    少数音频能播放,可能部分AMR文件本身损坏。逐个验证所有音频文件,确保是标准的AMR-NB/WB格式,能正常播放。

内容的提问来源于stack exchange,提问作者Android prog

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:00:06