您的位置:首页 > 移动开发 > Cocos引擎

QUICK-COCOS2D-X的热更新机制实现

2014-12-04 23:04 447 查看
本文标题:quick-cocos2d-x的热更新机制实现

本文链接:http://zengrong.net/post/2131.htm

quick-cocos2d-x的热更新机制实现

Hot update in quick-cocos2d-x


0 依赖

这里说的热更新,指的是客户端的更新。

大致的流程是,客户端在启动后访问更新api,根据更新api的反馈,下载更新资源,然后使用新的资源启动客户端,或者直接使用新资源不重启客户端。

这种方式可以跳过AppStore的审核,避免了用户频繁下载、安装、覆盖产品包。

我们一般使用这种方式快速修复产品BUG和增加新功能。

本文基于 quick-cocos2d-x
zrong 修改版 。


1 前言


1.1 他山之石

在实现这个机制之前,我研究了这几篇文章:

quick-cocos2d-x基于源码加密打包功能的更新策略 by
SunLightJuly

看到有同学在研究在线更新,希望我能帮到你一些 by
Henry

基于Quick-cocos2dx
2.2.3 的动态更新实现完整篇 by 西门大官人

那么,要更新自己,只需要把 package.preload 和 package.loaded 清除,然后再用新的 模块填充 package.preload 即可。下面就是核心代码了:

1

2

3

4

5

6

7

8

9

10

11

12

local
updatePackage
=
{

"update.UpdateApp",

"update.updater",

"update.updateScene",

}

for
__,v
in
ipairs(updatePackage)
do

package.preload[v]
=
nil

package.loaded[v]
=
nil

end

_G["update"]
=
nil

CCLuaLoadChunksFromZIP(newUpdatePackage)

require("update.UpdateApp").new("update"):run(false)

如果不相信这么简单,可以用上面完整的
UpdateApp
模块中提供的
UpdateApp:_printPackages(label)
方法来检测。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: