安卓崩溃split_config.arm64_v8a.apk!libcocos2djs.so
split_config.arm64_v8a.apk!libcocos2djs.so
OZMH03YzECFgIk_0-fMLuw==/oat/arm64/base.odex (org.cocos2dx.lib.Cocos2dxRenderer.onSurfaceCreated+84)
打开jsb-default/frameworks/cocos2d-x/cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxRenderer.java
Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit+224
初始化多次,报错?onSurfaceCreated函数问题,里面的nativeInit出问题了。
onSurfaceCreated 函数在 OpenGL 环境中被调用时,可能会执行多次。这通常是因为在 Android 设备上,GLSurfaceView 在生命周期变化时(如屏幕旋转、内存不足等)可能会重新创建。
1)安卓15报错处理
准备一台 Andorid 15 的手机
启动应用
主动调用 cc.game.end() 后,应用会退出
此时再次打开应用就会崩溃
改Cocos2dxHelper.java文件
public static void endApplication() {
// On Android 15, isTaskRoot check in Cocos2dxActivity.java will return false which is not compatible with lower android version.
// cc.game.end() will invoke `endApplication`, it's safe to terminate the process here rather than delay it to `Cocos2dxActivity.onDestroy` by `finish`.
// if (sActivity != null)
// sActivity.finish();
terminateProcess();
}
2)Cocos2dxRenderer.java添加判断,是否初始化过了
public void onSurfaceCreated(final GL10 GL10, final EGLConfig EGLConfig) {
if (mNativeInitCompleted) {
// 已经初始化,直接返回
return;
}
mNativeInitCompleted = false;
Cocos2dxRenderer.nativeInit(this.mScreenWidth, this.mScreenHeight, mDefaultResourcePath);
mOldNanoTime = System.nanoTime();
this.mLastTickInNanoSeconds = System.nanoTime();
mNativeInitCompleted = true;
if (mGameEngineInitializedListener != null) {
Cocos2dxHelper.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
mGameEngineInitializedListener.onGameEngineInitialized();
}
});
}
}