谷歌崩溃率突然暴涨

  • Creator 版本:2.4.15

  • 目标平台:Android

最近更新游戏版本崩溃率突然暴涨,以下是崩溃堆栈,想问问大佬们有没有遇到过类似的问题


pid: 0, tid: 645 >>> 包名 <<<

backtrace:
#00 pc 0x000000000123f9f0 /data/app/~~7HG3uMLYIYtx0TYDBL2LDQ==/包名–d3WmL4c0CdrhIRdi78ihQ==/lib/arm64/libcocos2djs.so (v8::internal::ConcurrentMarkingVisitor::VisitPointersInSnapshot(v8::internal::HeapObject, v8::internal::SlotSnapshot const&)+144) (BuildId: 7835f8549efccc15f3383c933d237300db170814)
#01 pc 0x00000000012414cc /data/app/~~7HG3uMLYIYtx0TYDBL2LDQ==/包名–d3WmL4c0CdrhIRdi78ihQ==/lib/arm64/libcocos2djs.so (int v8::internal::ConcurrentMarkingVisitor::VisitJSObjectSubclass<v8::internal::JSObject, v8::internal::JSObject::FastBodyDescriptor>(v8::internal::Map, v8::internal::JSObject)+292) (BuildId: 7835f8549efccc15f3383c933d237300db170814)
#02 pc 0x000000000123b640 /data/app/~~7HG3uMLYIYtx0TYDBL2LDQ==/包名–d3WmL4c0CdrhIRdi78ihQ==/lib/arm64/libcocos2djs.so (v8::internal::ConcurrentMarking::Run(int, v8::internal::ConcurrentMarking::TaskState*)+5508) (BuildId: 7835f8549efccc15f3383c933d237300db170814)
#03 pc 0x00000000010c225c /data/app/~~7HG3uMLYIYtx0TYDBL2LDQ==/包名–d3WmL4c0CdrhIRdi78ihQ==/lib/arm64/libcocos2djs.so (v8::platform::DefaultWorkerThreadsTaskRunner::WorkerThread::Run()+64) (BuildId: 7835f8549efccc15f3383c933d237300db170814)
#04 pc 0x00000000010bca40 /data/app/~~7HG3uMLYIYtx0TYDBL2LDQ==/包名–d3WmL4c0CdrhIRdi78ihQ==/lib/arm64/libcocos2djs.so (v8::base::ThreadEntry(void*)) (BuildId: 7835f8549efccc15f3383c933d237300db170814)
#05 pc 0x00000000000c1e50 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208)
#06 pc 0x0000000000054b50 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)


然后崩溃率大部分都是这图里前两个提供的

升级吧 引擎底层原因

知道是什么原因吗?

基本上安卓系统16以上都会有这个问题,v8线程崩溃

我们也是。 除了升级还有其他办法么,2.4.11项目

得升级到3.x吗

升级V8啊

1赞

用最新的3.8.8就可以

感谢提供关键词
下面是ai时刻

先说结论

问题 是否只改构建配置 是否要改引擎
Google Play 16KB 页面对齐(上架合规) 部分可以(NDK/AGP/对齐参数) 通常还需要
Android 15/16 真机运行崩溃 不够 必须(核心是 V8)
JS 性能优化 不够 必须

官方态度:Cocos 明确表示 2.x 不会正式升级 V8(改动太大),3.x 才会跟进。所以 2.4.x 要升级 V8,只能走 自定义引擎 或 社区方案。

崩溃暴涨的常见原因(论坛里反复出现)

  1. Android 15/16 的 16KB 内存页
    旧版 V8 按 4KB 页分配内存,在 16KB 页设备(如 Pixel 8 系列)上容易 native crash。
    仅做 .so 的 16KB ELF 对齐 不够,论坛里很多人对齐后仍崩溃,最后都要升级 V8。
  2. 旧 V8 的 console.error fatal abort
    堆栈常见: V8_FatalBuiltin_ConsoleError
    传入循环引用、已销毁节点、native 对象等时,旧 V8 会直接 abort
  3. Android 15/16 上 GLThread 重建
    与 V8 叠加,Activity 回收时更容易崩。
  4. 第三方 SDK 的 .so 未对齐
    广告、统计等 SDK 的 so 也要一起检查(你项目若有广告 SDK,这块也要排查)。

如何升级 V8(2.4.x 实操路径)

方案 A:用社区已验证的自定义引擎(相对省事)

社区有人把 2.4.13 的 V8 从 8.0.4 升到 11.6.189.22(对齐 3.8),并已上线:

主要改动三块:

  1. external/ 下的 V8 静态库和头文件
  2. 构建标准 C++11 → C++17
  3. JSB 层 V8 相关代码(如 WeakCallbackObjectWrap 等,Spine 释放场景要特别注意)

在 Creator 里:偏好设置 → 引擎管理器 → 添加自定义引擎,指向你 fork/拉取后的 engine-native 目录,然后重新构建 Android 原生工程。

方案 B:自己改引擎(工作量大)

参考 Cocos 3.8 的 V8 集成方式,手动改 engine-native

  • 替换 external/sources/v8 及预编译库
  • cocos/scripting/js-bindings/ 里 V8 接口适配
  • 处理 C++17、编译脚本、 Application.mk

论坛汇总帖:v8升级crash问题汇总(Spine、场景自动释放资源等坑都有记录)。

方案 C:为 16KB 合规,优先走官方 2.4.16 补丁

官方在 engine-native PR #4403 为 v2.4.16 加了 16KB 支持:

但注意:2.4.16 的 16KB PR 不等于完整 V8 大版本升级。社区反馈是:16KB 对齐 + NDK 28 能过 Play 检查,真机在 16KB 设备上仍可能因旧 V8 崩溃,最终往往还要升到 V8 11.x / 12.x。

配合 V8 升级,构建环境建议

无论选哪条路,Android 侧通常还要:

NDK: r28+(推荐 28.1.x)

AGP: 8.6.1+(建议 8.6.1 以上,避免 .so 压缩识别问题)

targetSdk: 35(若 target Android 15)

CocosAndroid.mk 中(NDK < 28 时)可加:

LOCAL_LDFLAGS += -Wl,-z,max-page-size=16384

NDK r27+ 还可在 Application.mk 加:

APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true

构建后务必在 16KB 模拟器或真机 上跑,不要只看 Play Console 的「Supports 16 KB」标识。

8升到11后,有统计故障率能降低的吗?

不知道,都是ai说的,我还没实操,正准备做验证。我的项目正在准备上google,所以特别关心这个问题。