宕机BUG:声音模块进入后台宕机.

安卓平台
cocos creator 1.6.1.beta2
出现频率:不详,来自第三方BUG上报.
真机环境:
乐视 LE X620
Android 6.0,level 23

谢谢反馈,由于没有好的复现方式,我先记录一个issue:
https://github.com/cocos2d/cocos2d-x/issues/18188

@dumganhar
我们这边收到一个类似崩溃日志

#00 pc 00cbcf8c /data/app/slots.machine.winning.android-1/lib/arm/libcocos2djs.so (cocos2d::experimental::PcmAudioService::resume()+3) [armeabi-v7a]
2 #01 pc 00cb154b /data/app/slots.machine.winning.android-1/lib/arm/libcocos2djs.so (cocos2d::experimental::AudioPlayerProvider::resume()+20) [armeabi-v7a]
3 #02 pc 00caf3cf /data/app/slots.machine.winning.android-1/lib/arm/libcocos2djs.so (cocos2d::experimental::AudioEngineImpl::onEnterForeground(cocos2d::EventCustom*)+10) [armeabi-v7a]
4 #03 pc 00caec57 /data/app/slots.machine.winning.android-1/lib/arm/libcocos2djs.so (std::_Function_handler<void (cocos2d::EventCustom*), std::_Bind<std::_Mem_fn<void (cocos2d::experimental::AudioEngineImpl::*)(cocos2d::EventCustom*)> (cocos2d::experimental::AudioEngineImpl*, std::_Placeholder<1>)> >::_M_invoke(std::_Any_data const&, cocos2d::EventCustom*)+22) [armeabi-v7a]
5 #04 pc 00f25c10 /data/app/slots.machine.winning.android-1/lib/arm/libcocos2djs.so [armeabi-v7a]
6 #05 pc 00f26ec0 /data/app/slots.machine.winning.android-1/lib/arm/libcocos2djs.so (cocos2d::EventDispatcher::dispatchEventToListeners(cocos2d::EventDispatcher::EventListenerVector*, std::function<bool (cocos2d::EventListener*)> const&)+432) [armeabi-v7a]
7 #06 pc 00f2d5c8 /data/app/slots.machine.winning.android-1/lib/arm/libcocos2djs.so (cocos2d::EventDispatcher::dispatchEvent(cocos2d::Event*)+228) [armeabi-v7a]
8 #07 pc 0039d53f /data/app/slots.machine.winning.android-1/lib/arm/libcocos2djs.so (Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnResume+94) [armeabi-v7a]
9 #08 pc 008e3e85 /data/app/slots.machine.winning.android-1/oat/arm/base.odex (oatexec+347781) [armeabi]
10 java:
11 org.cocos2dx.lib.Cocos2dxRenderer.handleOnResume(Cocos2dxRenderer.java:165)
12 org.cocos2dx.lib.Cocos2dxGLSurfaceView$3.run(Cocos2dxGLSurfaceView.java:181)
13 android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1477)
14 android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1259)

OnePlus/OnePlus5T
Android 7.1.1,level 25
1.7.2b1

在这个手机上必现,但不知道什么原因。受影响的用户也不小,求教一个暂时的解决办法。

IOS也声音时不时宕机

void PcmAudioService::resume()
{
SLresult r = (*_playItf)->SetPlayState(_playItf, SL_PLAYSTATE_PLAYING);
SL_RETURN_IF_FAILED(r, “PcmAudioService::resume failed”);
}

想不出这行里面怎么可能会出错。。。

我们的游戏有类似问题,这里有堆栈,在google play上出现的几率还是蛮大的
_ZN7cocos2d12experimental15PcmAudioService5pauseEv+3
_ZN7cocos2d12experimental19AudioPlayerProvider5pauseEv+20
_ZN7cocos2d12experimental15AudioEngineImpl17onEnterBackgroundEPNS_11EventCustomE+22
ZNSt17_Function_handlerIFvPN7cocos2d11EventCustomEESt5_BindIFSt7_Mem_fnIMNS0_12experimental15AudioEngineImplEFvS2_EEPS7_St12_PlaceholderILi1EEEEE9_M_invokeERKSt9_Any_dataS2+22
_ZN7cocos2d15EventDispatcher24dispatchEventToListenersEPNS0_19EventListenerVectorERKSt8functionIFbPNS_13EventListenerEEE+432
_ZN7cocos2d15EventDispatcher13dispatchEventEPNS_5EventE+252
Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeOnPause+74

会不会是 playItf 为空,或者野指针了?

我看了一下,确实不知道什么原因,费解。。。不过这种日志不是个例,我明天等拿到这个出问题的机器在看看具体原因

@minggo @dumganhar 我们使用的是 cocos2d-x 3.16版本的音频 依然有这个问题

有没有出现此堆栈时的 logcat 日志?

有开发者提 PR,修复这个问题,可以尝试

https://github.com/cocos2d/cocos2d-x/pull/18934