VIVO window.requestAnimFrame 未捕获的错误

Creator 2.1.1
打包VIVO,
05-14 18:51:03.428 25635 25635 V InputMethodManager: Starting input: Bind result=InputBindResult{null com.sohu.inputmethod.sogou.vivo/.SogouIME sequence:996 userActionNotificationSequenceNumber:3}
05-14 18:51:03.428 28747 28747 V InputMethodService: unbindInput(): binding=InputBinding{android.os.BinderProxy@a1931dd / uid 10055 / pid 25457} ic=InputConnectionWrapper{idHash=#7d9c152 mMissingMethods=}
05-14 18:51:03.430 3907 3907 V InputMethodService: bindInput(): binding=InputBinding{android.os.BinderProxy@b0914d2 / uid 10055 / pid 25635} ic=InputConnectionWrapper{idHash=#e7fbacc mMissingMethods=}
05-14 18:51:03.430 28747 28747 V InputMethodService: bindInput(): binding=InputBinding{android.os.BinderProxy@ace7e87 / uid 10055 / pid 25635} ic=InputConnectionWrapper{idHash=#80a7c23 mMissingMethods=}
05-14 18:51:03.430 3907 3907 V InputMethodService: startInput(): editor=android.view.inputmethod.EditorInfo@d14e115
05-14 18:51:03.430 3907 3907 V InputMethodService: CALL: onFinishInput
05-14 18:51:03.431 25635 25730 E jswrapper: ERROR: Uncaught TypeError: window.requestAnimFrame is not a function, location: @assets/default/_jsb-runtime.js:0:0
05-14 18:51:03.431 25635 25730 E jswrapper: STACK:
05-14 18:51:03.431 25635 25730 E jswrapper: [0]p@@assets/default/_jsb-runtime.js:1
05-14 18:51:03.431 25635 25730 E jswrapper: [1]u._onShown@@assets/default/_jsb-runtime.js:1
05-14 18:51:03.431 3907 3907 E UI-KeyboardView: EnShiftState.reset() failed! mKeyboard is null

1赞

1赞

初步检查发现是,VIVO调试器,在一开始进入游戏后,检查到VIVO调试器有新版本,于是弹出对话框提示升级,选择取消升级后,返回触发OnShown,引起出错,可能是游戏引擎还未初始化,Adapter开始OnShown引起window对象未初始化。

麻烦官方看看,因为这个BUG,VIVO没办法上线,一直卡在审核状态

1赞

问题有解决的方案吗?

1赞

我也卡在这里,难受

1赞

求官方给个解决方案吧,游戏审核卡在这里

1赞

调试器更新到最新后,再测试游戏呢?

更新后没有此问题,但是vivo审核 用的是老的调试器,审核不通过的。 急急急

1赞

把 _mainloop,判断如果 window.requestAnimFrame 找不到,就不赋值,这样可以不报错。但有个影响就是会出现短暂黑屏。

1赞

最优的解决方案,找vivo那边反馈,让测试员升级他们的调试器版本
一般来讲都会用最新的版本去测试,不知道他们那边为啥还要用低版本的调试器去测

临时解决方案:CCGame.js 这里


改一下,把requestAnimFrame给固定的值,或者可以试试给成this._stTime。使用settimeout延迟待windows初始化完后再用原来的这段代码。
类似这样大概处理一下:

1赞

反馈了vivo那边叫我们自己解决,用了这个方案还是会报错

1赞

反馈了vivo那边叫我们自己解决,用了这个方案还是会报错

有老版本的调试器安装包么?给我一个,我这边看下。我这边只有新版的调试器,旧的找不到链接下载了:sweat:

。。。附件太大不能上传

给个网盘链接

链接:https://pan.baidu.com/s/1xeMHKDmFG-KXILf3KwSG3A
提取码:g76u
我这个是1033版本的,不过现在1033也会弹出提示升级1034

你的构建选项是怎么设置的,发一下

额,用2.0.9和2.1.1的helloworld工程测试了一下,并没有出现提示升级到1034,也没有出现你发出来的错误报告。
建议你那边用helloworld或者2.0.9的版本试一下.
或者可以试下改下这个:


如果windows.requestAnimFrame没有初始化的话,就赋值为16。
这样改下看看

1赞

按这个自测,返回不会报错~期待审核也不会o(╯□╰)o毕竟我也没有1030引擎。。。。好诡异的vivo测试