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();
                }
            });
        }
    }

标签: none

添加新评论