Lua热更新问题

Lua热更新后无法加载json文件

公司最近游戏进行大幅更改,需要热更新功能。测试热更新时发现一个很严重的问题。ios热更完成后无法打开新增的页面,打开就崩溃。作为一个cocos菜鸟开始了摸索之路,期间遇到了各种挫折,求助大神才搞定。

首先崩溃的时候,跟ios联调看了一下日志,没发现什么特殊异常,开始以为是下载文件路径有问题导致无法打开文件,仔细核对了热更后的文件路径,没有发现什么问题,尝试打开了一下文件也没有发现问题。然后仔细核对了代码中的下载路径,也没有发现问题,期间折腾来折腾去花了一两个小时。

后来以为是热更后设置lua路径错误,仔细排查后确认没问题。于是在模拟器上热更ios包,发现热更后的json文件大小不对。直接下载热更文件大小无误,排除掉上传服务器问题。那么就只能是热更下载代码有问题。经过仔细检查代码后发现了一个大坑。

当时热更代码如下:

loadXMLHttpRequest.responseType = cc.XMLHTTPREQUEST_RESPONSE_BLOB
loadXMLHttpRequest:open("GET", Cache.user.patch_update.patch_file_list)   

初看没有什么问题,但是此代码遇到json文件则会下载失败。

loadXMLHttpRequest:open("GET", Cache.user.patch_update.patch_file_list)  
loadXMLHttpRequest.responseType = cc.XMLHTTPREQUEST_RESPONSE_BLOB

后将代码修改为这样,热更新成功。具体原理待填坑

思路整理
  1. 出现热更失败时,问题表现为新文件布局无法加载。先检查下载文件路径是否正常。(我在调试这一块花了很多时间,走了很多弯路。应该一开始就测试文件路径的)
  2. 确定文件路径正常后,可检查加载路径代码,确保热更后调用的路径是热更文件。(这里也浪费了时间,主要开始代码不够熟悉,忽略了调用顺序)
  3. 确认了调用路径之后,检查下载后的文件,因为文件都已经加密,则可以直接比较文件大小与二进制。(其实可以直接用模拟器热更ios的加密包测试。不需要重新打包给ios测试。期间浪费了很多时间。)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值