传说Creator3.7是一个较稳定版本,所以项目做了一个架构升级,由原来3.6.3升级到3.7.3,结果出现了底层大量相关getViewSize()的崩溃日志,报错如下

因为项目接入了bugly,所以查看具体后台跟踪日志:

具体猜测是重力感应导致屏幕旋转,获取屏幕大小导致这个崩溃,问题是,我们这个项目是纵向锁屏

所以无论如何旋转都应该不会触发屏幕旋转,自测也确实不会,但是接入的广告平台确实还是会旋转。
所以猜测可能是广告触发了屏幕旋转导致cocos底层拿不到cc::SystemWindow::getViewSize()从而导致崩溃,问题是在升级3.7.3前并没有该问题,也就是说creator3.6.3并没有此问题!有熟悉引擎的大大来科普一下,3.7.3如何修复该问题吗?实在不想回退版本!
改下引擎touch事件的getViewSize就可以了
怎么重现呢?
是EventTouch吗?我在d.ts并没有找到getViewSize方法

但是我在引擎层面倒是有找到getViewSize

但是我不确定是否是这里的问题
看源码啊 373源码里面
有改好吗 3.8.0也是很多getViewSize崩溃
改好了啊 就是修改这个获取方式啊 上面说了
这个问题3.5.2没有。我看了源码,发现3.7内部添加了多window,原本3.5.2触摸事件获取的viewsize是缓存下来的,3.7改成了每次触摸都得 SystemWindow::getViewSize() 获取,然后发现线上有好多这里的崩溃,我怀疑是surfaceView已经被销毁了(切后台或者弹视频广告),但是可能因为卡顿导致之前队列里的点击事件还没处理完,这时候再执行getViewSize,ANativeWindow变成野指针了,因为 surfaceDestroyed 的事件排在之前堵塞的 touch事件之后,处理touch事件的时候c++层不知道surface已经销毁了。 可以试下给按钮绑个耗时特别长的回调,多点几下然后在点击事件没有全部处理完的时候让surface销毁。 我不是十分确定,这块的整体流程我也不是很熟悉,自己也没有复现这个崩溃。我的做法是改动touch-input.ts 和 mouse-input.ts,改回3.5.2那样 用 screenAdapter.windowSize 获取 windowSize,改完之后线上就没有这个崩溃了,但是这样就和你们新加的多window冲突了,希望你们研究下怎么解决这个问题。
好嘞 感谢
是的,对比3.7之前版本来修改3.7版本的touch-input.ts和mouse-input.ts确实可以解决这个问题,但确实摒弃了3.7windowManger的写法,具体真需要官方check了
官方都不理人 
感觉没有必现问题的demo很难被官方正视,但是问题在平台上确确实实的有反馈,只能靠猜或者分享经验来解决问题。等我有空了,去好好查一下C++层面,把修复代码提交到社区版本去
其实我想过在c++层给每个 SystemWindow 都缓存一份宽高。但是不清楚这里有没有每次都调用 ANativeWindow_getWidth(nativeWindow)的必要,也搞不太清这里发生崩溃的真正原因。
Creator3.8.0 也有这样一样的问题,google 后台出现的崩溃日志。
我们使用的3.8.3也遇到了一样的问题,google后台出现crash日志,都过去一年了,官方怎么还不重视这个问题。我看最新的3.8.4更新日志里也没有提这个问题。
pid: 0, tid: 9256 >>> com.triple.puzzle <<<
backtrace:
#00 pc 0x00000000000928b8 /apex/com.android.runtime/lib64/bionic/libc.so (abort+164)
#01 pc 0x000000000009463c /apex/com.android.runtime/lib64/bionic/libc.so (__fortify_fatal(char const*, …)+124)
#02 pc 0x00000000000f8728 /apex/com.android.runtime/lib64/bionic/libc.so (HandleUsingDestroyedMutex(pthread_mutex_t*, char const*)+60)
#03 pc 0x00000000000f85b8 /apex/com.android.runtime/lib64/bionic/libc.so (pthread_mutex_lock+280)
#04 pc 0x000000000009cd34 /system/lib64/libc++.so (std::__1::mutex::lock()+8)
#05 pc 0x000000000009dae4 /system/lib64/libc++.so (std::__1::__shared_mutex_base::lock_shared()+48)
#06 pc 0x00000000000ebe5c /system/lib64/libgui.so (android::Surface::hook_query(ANativeWindow const*, int, int*)+56)
#07 pc 0x0000000000024374 /system/lib64/libandroid.so (ANativeWindow_getWidth+44)
#08 pc 0x00000000006c16d4 /data/app/~~qpC6-AgD7jpn_L4yFKzjwg==/com.triple.puzzle-w-Q7zUTQTuXvGQUiIrts_w==/split_config.arm64_v8a.apk!libcocos.so (cc::SystemWindow::getViewSize() const+1118208) (BuildId: a803114b067e680d11c3004f48281dc71014d748)
#09 pc 0x00000000009c105c /data/app/~~qpC6-AgD7jpn_L4yFKzjwg==/com.triple.puzzle-w-Q7zUTQTuXvGQUiIrts_w==/split_config.arm64_v8a.apk!libcocos.so (js_cc_ISystemWindow_getViewSize(se::State&)+1118208) (BuildId: a803114b067e680d11c3004f48281dc71014d748)
#10 pc 0x0000000000cdc43c /data/app/~~qpC6-AgD7jpn_L4yFKzjwg==/com.triple.puzzle-w-Q7zUTQTuXvGQUiIrts_w==/split_config.arm64_v8a.apk!libcocos.so (jsbFunctionWrapper(v8::FunctionCallbackInfov8::Value const&, bool ()(se::State&), char const)+1118208) (BuildId: a803114b067e680d11c3004f48281dc71014d748)
#11 pc 0x000000000000f528 /data/app/~~qpC6-AgD7jpn_L4yFKzjwg==/com.triple.puzzle-w-Q7zUTQTuXvGQUiIrts_w==/split_config.arm64_v8a.apk。
这个日志麻烦截取一份完整的发我下。好像有些关键点在截图中看不完整。
这个bug3.8.5还没修复么.googleplay好多,crash很高
这个问题引擎组还有在修复吗?

