从3.8.3升级到3.8.4版本后,IOS工程无法运行,启动就报错,请问如何解决

刚从3.8.3版本升级项目到3.8.4版本,苹果版本启动黑屏,查看XCode报错

11:41:16 [ERROR]: JS: TypeError: fs.readJsonFile is not a function, stack: TypeError: fs.readJsonFile is not a function
at readJson (jsb-adapter/engine-adapter.js:1410:8)
at parseJson (jsb-adapter/engine-adapter.js:1837:3)
at download (jsb-adapter/engine-adapter.js:1739:5)
at downloadJson (jsb-adapter/engine-adapter.js:1846:3)
at downloadBundle (jsb-adapter/engine-adapter.js:1863:3)
at src/cocos-js/cc.js:1:501786
at XA (src/cocos-js/cc.js:1:494290)
at fb.download (src/cocos-js/cc.js:1:501535)
at Object.load (src/cocos-js/cc.js:1:507076)
at src/cocos-js/cc.js:1:512861

对比了3.8.3和3.8.4生成的jsb-adapter文件,发现引用的接口名称变化了,怀疑是底层的C++接口没有改导致不匹配?

对比如下,红色是3.8.4生成的,里面调用了fs.readJsonFile,绿色是3.8.3生成的,调用的是fsUtils.readFile接口

原因找到了,已解决。

因为项目接入第三方SDK和渠道的需要,大量修改引擎构建出来的xcodeproj,所以将这个文件保存到了另一个位置,构建的时候就不会被引擎覆盖掉了。一直以来打包也都是使用这个修改后的xcodeproj

以前引擎版本升级的时候,替换了一下这个修改后的xcodeproj文件里引用的路径就可以了。

开始的报错是因为这次忘记替换引擎文件的路径了,编译没有问题,但是缺少了接口。

将工程里的路径从3.8.3改为3.8.4,修改后编译不通过。

后来才发现原来这次3.8.4版本中,引擎新增了2个编译文件,需要添加上就好了

线上项目居然敢升级引擎 :joy:
一看就是没经历过打包前出问题,然后看到凌晨4点的太阳

1赞

所以还是 Cocos 的锅,生成的原生项目这么多本机绝对路径引用,浪费时间处理还早晚都可能出问题

确实做Cocos的经验不太多,经历过这次以后有了很深的体会

用unity也不能升级,unity也踩过坑。
商业项目给别人卖命只有两个追求,快速(项目尽快上线)和稳定(能流畅运行即可)。
什么升级追加多少多少稳定性和性能都别理,否则折腾的就是自己 :see_no_evil: