iOS打包release版本,调用cc.audioEngine.play报错;

cocoscreater版本v1.9.0;

错误提示:
JS: [ERROR]: res/raw-assets/resources/common/sfxs/transitions-1.mp3
E/AudioPlayer (217): bool cocos2d::experimental::AudioPlayer::play2d():alSourcePlay error code:a004
JS: [ERROR]: --------------------7
JS: [ERROR]: 27
JS: [ERROR]: --------------------8
JS: [ERROR]: --------------------8

解释说明(ERROR都是自己打得log):
第一个ERROR是播放的文件路径输出;
第二句话是coccos输出的
JS: [ERROR]: 27------表示audioId=27;

求解释为什么前26个play没问题,27个出了问题

debug没测出问题

OpenAL 内部的报错,是稳定重现还是概率重现,步骤是怎样

项目结构:多个小项目构成(a,b,c,d,e,f)顺序执行;

单独测试小项目—a没问题,b没问题,c没问题,d没问题,e没问题,f没问题;

测试一:顺序执行,a没问题,b没问题,c报错(由于c中在等待音效finish,导致无法进行游戏)----abcdef;
测试二:顺序执行,a没问题,c报错(由于e中在等待音效finish,导致无法进行游戏)------acbdef;
测试二:顺序执行,c没问题,a没问题,b没问题,e报错(由于e中在等待音效finish,导致无法进行游戏)------cabcdef;

测试一二三,稳定重现

大佬,
有没有快速规避的方法;
项目已经上线;
继续修改;

debug 模式按你稳定重现的步骤,执行测试一二三都没问题吗。这一点不太好理解

这个可以解释,频繁播放停止大量音乐时,iOS 内部处理不过来。最近有在 2d-x 修复类似的问题,你可以把这个修改同步到 creator 带的 cocos2d-x (lite) 中,验证一下能否解决。

传送 -> fix audio crash on iOS

意思是,如果把c项目放在后边执行,就会报错,如果把c项目放在前边执行,就不会出错;

那你得分析,你自己的 c 项目和其它项目在 audio 的处理上和其它的比如 b 项目,有什么区别。

调用方式一样,只是出问题的时候报这个错;

能说细点吗?

你把上面提到的 PR 代码合并一下,重新构建,问题应该会解决。

同时有多个音乐在播放,调用 play 的时候,有其它的 stop 操作,正在 stop ,这种情况在 iOS 可能会造成混乱。

依旧报错::sweat:E/AudioPlayer (234): bool cocos2d::experimental::AudioPlayer::play2d():alSourcePlay error code:a004