[split_config.arm64_v8a.apk!libcocos2djs.so] v8::HandleScope::Initialize(v8::Isolate*)

  • Creator 版本:2.4.13
  • 目标平台:android

用cocos creator2.4.13开发的游戏,发布到google play,crash率一直比较高,1.2%左右。其他组用unity开发的游戏 crash率 0.05%,差距巨大。
以下是从google play导出的占比最大的前2个问题的bug日志。图片为排名靠前的bug列表以及第一个bug的机器和Android版本。麻烦引擎组的同学帮看看怎解决问题。
:*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
[split_config.arm64_v8a.apk!libcocos2djs.so] v8::HandleScope::Initialize(v8::Isolate*)
pid: 0, tid: 9259 >>> com.crazysort.supermarket.goodstriple <<<

backtrace:
#00 pc 0x00000000011228d4 /data/app/~~8_bI-d8wF1lnzuFgxz5piw==/com.crazysort.supermarket.goodstriple-KuvwOlaA3Gev1bTw84nx0g==/split_config.arm64_v8a.apk!libcocos2djs.so (v8::HandleScope::Initialize(v8::Isolate*)+144) (BuildId: 932520a5004e40793e8bd3e097b79ad74963a6b0)
#01 pc 0x0000000000bd8120 /data/app/~~8_bI-d8wF1lnzuFgxz5piw==/com.crazysort.supermarket.goodstriple-KuvwOlaA3Gev1bTw84nx0g==/split_config.arm64_v8a.apk!libcocos2djs.so (cocos2d::dispatchEnterBackgroundOrForegroundEvent(char const*)+1101824) (BuildId: 932520a5004e40793e8bd3e097b79ad74963a6b0)
#02 pc 0x0000000000bd8294 /data/app/~~8_bI-d8wF1lnzuFgxz5piw==/com.crazysort.supermarket.goodstriple-KuvwOlaA3Gev1bTw84nx0g==/split_config.arm64_v8a.apk!libcocos2djs.so (cocos2d::EventDispatcher::dispatchOnResumeEvent()+140) (BuildId: 932520a5004e40793e8bd3e097b79ad74963a6b0)
#03 pc 0x0000000000378a98 /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot.oat (art_jni_trampoline+104)
#04 pc 0x000000000071a878 /data/app/~~8_bI-d8wF1lnzuFgxz5piw==/com.crazysort.supermarket.goodstriple-KuvwOlaA3Gev1bTw84nx0g==/oat/arm64/base.odex (org.cocos2dx.lib.Cocos2dxRenderer.handleOnResume+56)
#05 pc 0x00000000007171d8 /data/app/~~8_bI-d8wF1lnzuFgxz5piw==/com.crazysort.supermarket.goodstriple-KuvwOlaA3Gev1bTw84nx0g==/oat/arm64/base.odex (org.cocos2dx.lib.Cocos2dxGLSurfaceView$d.run+72)
#06 pc 0x0000000000783244 /apex/com.android.art/lib64/libart.so (nterp_helper+7636)
#07 pc 0x00000000001e59d6 /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.guardedRun+1442)
#08 pc 0x00000000007823c4 /apex/com.android.art/lib64/libart.so (nterp_helper+3924)
#09 pc 0x00000000001e670a /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.run+122)
#10 pc 0x0000000000368774 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612)
#11 pc 0x0000000000353f24 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+132)
#12 pc 0x0000000000947748 /apex/com.android.art/lib64/libart.so (art::detail::ShortyTraits<(char)86>::Type art::ArtMethod::InvokeInstance<(char)86>(art::Thread*, art::ObjPtrart::mirror::Object, art::detail::ShortyTraits<>::Type…)+60)
#13 pc 0x0000000000636e80 /apex/com.android.art/lib64/libart.so (art::thread::CreateCallback(void*)+1344)
#14 pc 0x0000000000636930 /apex/com.android.art/lib64/libart.so (art::thread::CreateCallbackWithUffdGc(void*)+8)
#15 pc 0x0000000000070578 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+200)
#16 pc 0x0000000000061910 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

2赞

我们自己也做了一些优化,比如在AppDelegate.cpp中加入jsEngineStarted=false,游戏初始化后jsEngineStarted=true;jsEngineStarted=true后不再执行start方法。
在Cocos2dxRenderer中增加mNativeInitCompleted和mNeedToPause,在onSurfaceCreated方法开始处将mNativeInitCompleted设置为true,onDrawFrame方法开始处判断mNativeInitCompleted,如果为true就不再继续执行。
同时游戏初始化时android端等待js加载完成后再通过jsb调用js的方法。
以上方法有一定效果,但收效不大,只是从1.4%降到了1.2%,离我们的目标0.3%差距巨大。

崩溃时用户的运行时长是什么样的

目前拿不到crash时用户的运行时长,但从android版本分布看,主要是这三个版本的crash率比较高:

Android 15 (6.88%) 、Android 12L ( 1.31%)、Android 10(1.28%)。排除15的设备总体崩溃率0.91%,还是偏高。

咨询了 google play的同学,说我们游戏中android15的crash率比其他版本高应该是这个问题导致的:https://developer.android.com/guide/practices/page-sizes?hl=zh-cn。
这些是使用到的不兼容的note:[“libtt_ugen_layout.so”,“libapminsighta.so”,“libapplovin-native-crash-reporter.so”,“libpglarmor.so”,“libfile_lock_pgl.so”,“libnms.so”,“libcocos2djs.so”,“libapminsightb.so”,“libtapjoy.so”,“libtobEmbedPagEncrypt.so”,“libbuffer_pgl.so”]
不知道对你们有没有帮助。

这么快就开始就要求16KBpagesize吗,我们收到信息是11月开始必须适配

上面的链接也说明了11月开始必须适配,但 Android 15 在部分设备(如 Pixel 8 系列)默认启用 16K 页, 不兼容的 .so 会触发 native crash。这也是我们的游戏在 Android 15和 Pixel 系列设备上crash高的原因。

1赞

这些库都是引擎的? :astonished:

cocos只有一个libcocos2djs.so,其他都是三方的

引擎组的同学不帮忙看看有什么好的解决办法吗?

同问题,Android 15 设备崩溃率暴涨,引擎组大佬看到希望尽快帮忙看看!!!

1赞

大佬们快来看看啊,现在游戏的crash率越来越高,有没有什么临时解决方案?

测了下用2.4.13,3.8.2,3.8.5的空项目,改了ndk28+agp8.5.1,2.4.13没有崩溃,但3.8.2和3.8.5都崩了

大佬2.4.13,改了ndk28+agp8.5.1,2.4.13没有崩溃了吗? 谷■后台崩溃数据没有或者减少了吗?

确实减少了,这个可以复现的

请问一下大佬,这个问题你们怎么重现的?

大佬,除了升级这两个,有修改什么其他配置没?

请问大佬问题解决了吗?我们适配了16KB对齐,但是这个问题还是存在,使用的2.4.13 + NDK27 + AGP8.6.0。

没有解决。你们有改mk文件吗?

用NDK27,就在mk文件增加支持16kb对齐的配置,其他都没有修改。现在准备用一个项目试一下上面说的NDK28的环境。