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);
- 确保所有AMR文件名仅使用小写字母、数字和下划线,避免大写或特殊字符(你报错的
禁用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
相关产品推荐
相关产品推荐

