使用ccreator一年,这些坑未能解决。希望一起交流,找出解决方案。
本人使用的版本是cocos 1.9.3。所以以下问题紧针对1.9.3以及之前版本。新版本一直未敢尝试。
问题如下:
一.热更新bug。
游戏上线差不多也7,8个月了。热更版本也有将近100多次。每次更新资源很多时,都会有几个用户(我们日活跃用户差不多4,5千人)出现热更失败的问题。用户操作方式未知,可能是热更的任一阶段切入后台,或者断网,或者结束进程。用户网络情况未知。
bug的现象就是,用户的脚本和资源版本不匹配。目前遇到的都是脚本是老版本,但是资源文件已经更新。这种bug影响最大,因为表现出来的现象都是无逻辑的,各种不可预知的bug。
对于这个问题,目前做的处理方式是,增加了一个一键修复的功能。就是删除掉热更路径和缓存路径,然后重新热更。
更好的解决方案:方案1.找到热更失败的根本原因。流程设计漏洞,或者别的问题导致的。(不是文件下载出错,我对下载完成的文件做了md5验证,问题依然存在)。
方案2:应用启动之后,做文件校验。来校验客户端资源是否完整,不完整就做相关修复。
(对比了cocos2dx-lite的github,assetsmanager有更新,同步之后等下次整包更新加上,看能否解决问题)
二.内存释放问题解决
性能和内存,依然是现在面临的最大瓶颈问题。新项目比较复杂,包含很多动画和特效。所以对性能和内存要求更高,所以要确定新项目是否继续用creator,就要看是否能够解决内存问题。以及龙骨等动画的释放问题。之前版本场景切换调用gc,会几率导致ios闪退,以及部分ios机型gc并不能释放ios内存。所以后面就放弃了主动调用gc。creator内存如何管理?希望有解决方案的前辈给出相关策略。
三,切入切出后台,ios小几率无法播放音乐音效。
四,底层cocos creator js报错问题。
现有项目收集了js代码的错误信息。发现里面有两个渲染底层的错误,会重复报错。是精灵渲染update里面的错误。
2019-04-01 00:23:41 --> userid=206225&file=3&line=1111&error=Uncaught TypeError: Cannot read property ‘setSpriteFrame’ of null&version=1.1.16&os=Android&stack=[0]_applySpriteFrame@src/jsb_polyfill.js:8114
[1]set@src/jsb_polyfill.js:7932
[2]sample@src/jsb_polyfill.js:410
[3]r@src/jsb_polyfill.js:604
[4]7.d.update@src/jsb_polyfill.js:656
[5]update@src/jsb_polyfill.js:534
2019-04-01 00:23:41 --> userid=206225&file=3&line=1111&error=Uncaught TypeError: Cannot read property ‘setInsetTop’ of null&version=1.1.16&os=Android&stack=[0]_applySpriteFrameInsets@src/jsb_polyfill.js:8081
[1]_applySpriteFrame@src/jsb_polyfill.js:8108
[2]set@src/jsb_polyfill.js:7932
[3]sample@src/jsb_polyfill.js:410
[4]r@src/jsb_polyfill.js:604
[5]7.d.update@src/jsb_polyfill.js:656
[6]update@src/jsb_polyfill.js:534
这种错误每天都会有很多上传到服务器里。但是我测试服同样收集错误日志,但从来没出现过。也查了js源码。找不到相关报错的原因。主要还是不熟悉creator源码框架。有解决的朋友希望能给出解决方案。