3.8.3 旋转屏幕 Android 必闪退

发现只要旋转 就会闪退 和这个代码无关 项目是升级上来的 不知道如何排查

屏幕选择把横竖屏都选上试一下

看论坛 好像从3.7 开始就有这个问题 一直没有修复… 叹气

我记得3.7.3是修复的,后面的没试过了

pr我看了 引擎修改补丁还在 问题依旧

看看是不是我改的地方 但是我修复的问题也不是必闪退 只是概率很高的闪退 旋转多了基本就闪退了

太严重了。

这么基础, 需求也多的功能, 引擎团队应该重视一下

changeOrientation 这个你这边是如何触发的呢;如果是必现的,是否可以提供demo以及复现步骤?

这个问题还是存在于3.8.4中。我在ts中调用安卓的这个://切换横竖屏
public static void setOrientation(String dir){
if (_instance == null || _instance.isFinishing() || _instance.isDestroyed()) {
Log.e(“AppActivity”, “Invalid activity instance!”);
return;
}

    try {
        _instance.runOnUiThread(() -> {
            new Handler().postDelayed(() -> {
                try {
                    if ("H".equals(dir)) {
                        _instance.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
                    } else if ("V".equals(dir)) {
                        _instance.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                    }
                } catch (Exception e) {
                    Log.e("AppActivity", "Failed to set orientation: " + e.getMessage());
                    e.printStackTrace();
                }
            }, 100); // 延迟 100 毫秒切换
        });
    } catch (Exception e) {
        Log.e("AppActivity", "Error in setOrientation: " + e.getMessage());
        e.printStackTrace();
    }
}切换横竖屏代码。必定闪退。我的游戏发布的时候,是勾选为竖屏的,进子游戏的时候,我想改变屏幕为横屏。调用这段代码刚开始的确是短暂横屏了,但是闪了一下,就闪退了。

你好,请上传最简demo, 我这没复现环境。
我模拟测试


未能复现。

好,我上传个简单的demo

这奇了怪了,我新建一个3.8.4空项目,调用安卓这个竖屏转变横屏的没问题。但是我自己的项目调用这个就闪退报错了,纳了闷了。我把我的项目上传试试

我的项目之前是在3.8.3建立的,后来升级到了3.8.4。以前没试过切换横屏。在3.8.4切换横屏的时候,发现崩溃。我把我的最简项目上传了,直接打包安卓就可,我的NDK版本:android-ndk-r23.2.8568313,谷歌云端:https://drive.google.com/file/d/1-3cAc7hiUh_kZsqJvSkOz7DEO-TafhBM/view?usp=drive_link

申请访问了,建议你先检查 androidManifest.xml configuratation的配置,是否有类似384类似的配置?

没有,我把崩溃的安卓的AndroidManifest.xml复制到新创建的3.8.4项目中,AndroidManifest.xml完全一样,但是新项目也不会崩溃。

https://drive.google.com/file/d/1-3cAc7hiUh_kZsqJvSkOz7DEO-TafhBM/view?usp=sharing我已经修改了,权限。任何人都可以下载。你下载运行试试看

给你添加权限了

问题的本质是使用端问题,请使用到native的方法前,先看下对应的接口在其他java文件是如何使用的;出现问题先用debug版本看下可能的问题,不要没定位,看到崩溃就说是引擎的问题。
比如当前崩溃的堆栈:

,项目中有改动到引擎的代码,第一时间先看下代码使用是否合理。检查引擎其他地方的使用是这样的:|
CocosHelper.runOnGameThread(() -> {
CocosJavascriptJavaBridge.evalString(str);
});

你项目中对引擎的使用是不一样的

找到问题了,是onResume和onPause()这俩里边加的有问题 :rofl:,谢谢