- Creator 版本: 2.4.12
- 目标平台: Android
- 重现方式:首次进入ru store的支付界面,切换到后台,然后再进入游戏里
- 手机型号: 任何安卓机
- 重现概率:必现
我问了下AI大概的问题可能是:
下面是报错日志:
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A Cmdline: com.warrior.screw.rustore
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A pid: 2983, tid: 6344, name: GLThread 835 >>> com.warrior.screw.rustore <<<
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A #00 pc 00000000010af364 /data/app/~~vmbxbFip7otS3dQX3f2RnQ==/com.warrior.screw.rustore-1QoHmzDzZSuStf5HwAaK1A==/base.apk!libcocos2djs.so (v8::HandleScope::Initialize(v8::Isolate*)+144) (BuildId: f518e26e1219571a1e5c95e50dc3434489b06f40)
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A #01 pc 0000000000b713e8 /data/app/~~vmbxbFip7otS3dQX3f2RnQ==/com.warrior.screw.rustore-1QoHmzDzZSuStf5HwAaK1A==/base.apk!libcocos2djs.so (se::ScriptEngine::cleanup()+88) (BuildId: f518e26e1219571a1e5c95e50dc3434489b06f40)
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A #02 pc 0000000000b71678 /data/app/~~vmbxbFip7otS3dQX3f2RnQ==/com.warrior.screw.rustore-1QoHmzDzZSuStf5HwAaK1A==/base.apk!libcocos2djs.so (se::ScriptEngine::init()+36) (BuildId: f518e26e1219571a1e5c95e50dc3434489b06f40)
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A #03 pc 0000000000b72de0 /data/app/~~vmbxbFip7otS3dQX3f2RnQ==/com.warrior.screw.rustore-1QoHmzDzZSuStf5HwAaK1A==/base.apk!libcocos2djs.so (se::ScriptEngine::start()+40) (BuildId: f518e26e1219571a1e5c95e50dc3434489b06f40)
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A #04 pc 0000000000ab128c /data/app/~~vmbxbFip7otS3dQX3f2RnQ==/com.warrior.screw.rustore-1QoHmzDzZSuStf5HwAaK1A==/base.apk!libcocos2djs.so (AppDelegate::applicationDidFinishLaunching()+184) (BuildId: f518e26e1219571a1e5c95e50dc3434489b06f40)
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A #05 pc 0000000000ac51f0 /data/app/~~vmbxbFip7otS3dQX3f2RnQ==/com.warrior.screw.rustore-1QoHmzDzZSuStf5HwAaK1A==/base.apk!libcocos2djs.so (Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit+224) (BuildId: f518e26e1219571a1e5c95e50dc3434489b06f40)
2025-11-03 10:40:50.085 6367-6367 DEBUG pid-6367 A #08 pc 0000000000e0b926 /data/app/~~vmbxbFip7otS3dQX3f2RnQ==/com.warrior.screw.rustore-1QoHmzDzZSuStf5HwAaK1A==/oat/arm64/base.vdex (org.cocos2dx.lib.Cocos2dxRenderer.onSurfaceCreated+18)
麻烦官方人员看下呢~~我私发下apk啊啊啊啊啊啊啊啊啊啊啊啊啊
这个支付界面是俄罗斯的一个支付界面,使用了深度链接的方式相当于重新启动了一个Appactivity
点击购买,然后等弹出支付界面后。切换后台。再回到前台。必崩溃。
上面的方式必定会二次进入cocos2dxrenderer 的onsurfacecreated 。但是第二次进入,执行 清理的时候就报错了。
看了好多论坛帖子。都说2.4.x并不支持二次进入onsurfacecreated方法。
难道就没有临时的方法可以解决这个问题了嘛~ ~
建议修改activity的launchMode 然后测试看看
所有的模式都试过了,都不行。
能麻烦看下demo吗~
这个是singleTop模式下的日志
singleTop的崩溃日志.zip (9.6 KB)
这个是apk
https://chengyyxdl.leiting.com/220531/testru-release.apk
这个是清单文件的配置
我尝试了3.8.x是可以的。但是我们项目是2.4.12的,比较大,要升级3.x短时间不太现实~
楼主有解决这个问题么?我也遇到同样的问题,从后台切换到前台后,onSurfaceCreated被重复调用,导致引擎被初始化多次崩溃。
我在xiaomi 14Pro Android 16 HyperOs 3.0.4.0上后台切换回来必崩。
另外一台华为 Nova SE8 HarmonoyOs 2.0.0 上不会崩溃。
说一个不是办法的办法:
@Override
protected void onDestroy() {
super.onDestroy();
// 强制杀死当前进程,确保内存完全释放
// 这样下次启动就是全新的冷启动,避开 init/cleanup 的野指针问题
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
写了很多 发不上来 不知道为什么 唉.,…
你这个解决的是另外一个问题,即调用cc.game.end()后,Activity关掉了,但进程可能没有退出的问题。这个是用户明确点击了退出,因此杀进程是没问题的。
我现在遇到的问题是,游戏切换到后台(注意不是退出),比如手动切换后台看一下桌面,然后再切换回来,在xiaomi 14Pro Android 16 HyperOs 3.0.4.0上面有很高概率二次触发onSurfaceCreated,导致二次进入main函数。
目前我在onSurfaceCreated里面做了拦截,阻止2次进入,但v8仍然崩溃。崩溃点变了(在AutoHandleScope处)。我目前还在研究。
引擎虽然调用了setPreserveEGLContextOnPause,目前看来,在某些系统机型上,仍然无法阻止Surface被销毁。目前尚未得知这种情况下,OpenGL Context 是否被销毁,包括各种显存资源是否被释放(设备丢失)。
引擎版本: 2.4.15。自升级V8到11.6。
那得等你 好消息了 我想不出什么好办法了

