cocoscreator android热更新后再次运行黑屏

反馈时请提供以下信息:

  • Creator 版本:2.3.4

  • 目标平台:Android

  • 重现方式:热更新后,再次运行app黑屏

  • 首个报错: 报错后,控制台一直刷这个报错。
    重新运行完整的安卓包不会黑屏,只是热更新会黑屏,而且iOS热更新后没有黑屏,只是安卓黑屏。

2021-03-30 11:40:52.765 7077-7107/? E/jswrapper: ERROR: Uncaught exception, location: src/cocos2d-jsb.js:0:0
STACK:
[0]anonymous@src/cocos2d-jsb.js:11747
[1]anonymous@src/cocos2d-jsb.js:36431
[2]fireTimeout@jsb-adapter/jsb-builtin.js:2191
[3]tick@jsb-adapter/jsb-builtin.js:2148
2021-03-30 11:40:52.765 7077-7107/? E/jswrapper: [ERROR] (E:/development/CocosDashboard/resources/.editors/Creator/2.3.4/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/Object.cpp, 563): Invoking function (0x933641c0) failed!

在线等啊,急急急。求思路。

我发现:打热更新包的时候,勾选调试模式,android是不会黑屏的,但是js代码没有加密,所以还是加载的原来的jsc文件,资源文件更新了2000多个,脚本没有更新。但是一去掉调试模式,热更后,直接黑屏。

I/HwCust: Constructor found for class android.app.HwCustActivityImpl
W/System.err: org.json.JSONException: No value for serviceClassPath
W/System.err: at org.json.JSONObject.get(JSONObject.java:389)
W/System.err: at org.json.JSONObject.getJSONArray(JSONObject.java:584)
W/System.err: at org.hwqp.cocos2d.sluggardRecreation.SDKWrapper.loadSDKClass(SDKWrapper.java:71)
W/System.err: at org.hwqp.cocos2d.sluggardRecreation.SDKWrapper.setGLSurfaceView(SDKWrapper.java:103)
W/System.err: at org.hwqp.cocos2d.sluggardRecreation.AppActivity.onCreateView(AppActivity.java:234)
W/System.err: at org.cocos2dx.lib.Cocos2dxActivity.addSurfaceView(Cocos2dxActivity.java:469)
W/System.err: at org.cocos2dx.lib.Cocos2dxActivity.init(Cocos2dxActivity.java:263)
W/System.err: at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:356)
W/System.err: at org.hwqp.cocos2d.sluggardRecreation.AppActivity.onCreate(AppActivity.java:129)
W/System.err: at android.app.Activity.performCreate(Activity.java:6910)
W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2757)
W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2875)
W/System.err: at android.app.ActivityThread.-wrap12(ActivityThread.java)
W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1578)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:105)
W/System.err: at android.os.Looper.loop(Looper.java:156)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6623)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
W/System.err: java.lang.NoSuchFieldException: layoutInDisplayCutoutMode
W/System.err: at java.lang.Class.getField(Class.java:1549)
W/System.err: at org.cocos2dx.lib.Cocos2dxActivity.init(Cocos2dxActivity.java:275)
W/System.err: at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:356)
W/System.err: at org.hwqp.cocos2d.sluggardRecreation.AppActivity.onCreate(AppActivity.java:129)
W/System.err: at android.app.Activity.performCreate(Activity.java:6910)
W/System.err: at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
W/System.err: at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2757)
W/System.err: at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2875)
W/System.err: at android.app.ActivityThread.-wrap12(ActivityThread.java)
W/System.err: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1578)
W/System.err: at android.os.Handler.dispatchMessage(Handler.java:105)
W/System.err: at android.os.Looper.loop(Looper.java:156)
W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6623)
W/System.err: at java.lang.reflect.Method.invoke(Native Method)
W/System.err: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:942)
W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832)
I/SendBroadcastPermission: action:com.tencent.mm.plugin.openapi.Intent.ACTION_HANDLE_APP_REGISTER, mPermissionType:0
I/AppActivity: ==>>WeiXin InitSuccess

这是运行完整包的日志,可以正常进入登录界面。不会黑屏。

@BigBear @panda 大佬求救~

应该是打包安卓和打包iOS应用的时候,资源不一致,导致更新后黑屏,具体原因不清楚。不过我的解决办法是,将可以正常更新的iOS安装包解压,将里面的src和res文件拷贝出来,重新生成热更新包,当然版本号+1,然后将这个资源更新到android上面,之后,安卓和iOS平台就可以正常热更新了。

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。