一直想试试看cocos–js的热更新,可是一直觉得很复杂,没有接触,这个周末终于下定决心弄弄,看了看别人的教程,觉得很方便也很简单,然后这个周末就开始来自己的填坑之路。
首先在论坛上看见了这篇文章https://github.com/faint2death/cocos2d-js/blob/master/assetsmanager.md,膜拜跪舔后将主要代码copy下来,结果报了一点小错,AssestManager已经变成了jsb空间下了。
然后接下来就进入了第一个坑,要更新,所以需要服务器,然后记得曾经注册了一个七牛空间(http://www.qiniu.com),然后我就将version.manifest和project.manifest还有稍微修改了的代码和资源图片上传上去,浏览器访问地址,没有问题。当然这里的过程很曲折,比如路径错误,然后很悲剧的发现,下载下来的东西版本号不对,修改下版本号,重新上传还是不对,然后发现,七牛使用的cdn模式的,资源估计同步很慢,看来不能用于开发。(我用的mac,而且是对mac不熟悉的菜鸟,所以没有弄本地服务器,想直接一步到位,在外网下载资源,结果在坑里转了半天)
然后再想起在阿里云上还有免费的空间,申请了一个php的,资源copy上去,修改*.manifest的更新地址,终于更新成功了。可是只有图片变化了,而js代码没有变化呢。然后又各种搜索,有说要调用cc.sys.clearScript的,有说要调用cc.game.restart进行重启的,结果是使用cocos ide 模拟器是不行的,需要使用真机。然后我发现使用调试模式可以成功更新,而打包apk后就不行呢,我打印了searchPath,结果只有/assets目录,很怪异。(使用cc.log在ddms中看不见输出,而console.log却可以,这是什么设计……ˊ_>ˋ,在文件开头重现指定输出"cc.log=console.log;")一边使用addSearchPath将存储路径加入进去,一边又想着这有点不可能,因为官网说了会自动加进去的啊。结果很悲催,还是不行。然后我将apk包解压开,发现js文件全部变成了jsc,就突然想到以前好像看见说jsc的优先级比js高,再重新打包,去掉编译成jsc选项,果然,更新成功了。所以,更新的新代码也必须调用cocos jscompile -s ./ -d ./进行编译成jsc才行。
热更新还是很简单的,但是因为一些意外,给搞得折腾了折磨久。
有东西想请教一下呀?求qq,谢谢,我qq550263546