Cocos Creator教程:热更新

作者: 33b882c6c780 | 来源:发表于2017-07-04 18:28 被阅读327次

好久没写简书了,这几天终于有时间把之前项目用到了热更新整理下。由于刚入手不久,根据官方文档把热更新走了一遍后,发现官方文档对于像我这样的新手来说不是很详细,就有了本文章的出现了。

原理

热更新原理主要是服务端和本地均保存完整版本的游戏资源,每次启动游戏检查更新都是通过服务端与本地生成的manifest 先进行初步的版本比对。本地端将服务端的Manifest下载到本地后,当服务端的版本号高于本地端时,通过md5比对有差异的文件并下载,最后把更新的文件下载完成后放在某个文件夹,在入口文件main.js 设置搜索路径把更新的文件夹放置首位。当程序加载文件or脚本时,热更文件会优先于本地文件加载,从而达到更新效果。想深入了解原理,请到官方文档

准备

进入官方文档,需要我们:
1.下载范例工程
2.安装node.js 来运行生成Manifest 文件
3.一台远程服务器(我是在本地安装web开发的集成环境wamp);

快捷生成Manifest文件

提醒下,如果还没有安装node.js是无法生成Manifest文件的。安装node.js后,打开到范例的目录新建文件,输入如下代码并保存为version_generator.bat

node version_generator.js -v 1.0.1 -u http://192.168.2.215/remote-assets/ -s build/jsb-binary/ -d assets/
例图.png

打开bat文件,修改你的远程地址跟你的远程热更新目录,如图所示:

远程地址目录.png

步骤

  • 生成Manifest 比对文件

首先要明白Manifest文件是由version_generator.js脚本生成的。当双击version_generator.bat批处理文件时,会在assets目录生成project.manifest与version.manifest:

由version_generator.js生成的文件
其中project.manifest由以下内容构成:
1.远程资源包的根路径
2.远程 Manifest 文件地址
3.远程 Version 文件地址(非必需)
4.主版本号
5.文件列表:以文件路径来索引,包含文件版本信息,使用文件的 md5 校验码来作为版本号
6.搜索路径列表
其中,1、2、5是最为重要的。其作用是生成比对文件信息,也就是说,当你生成热更文件与打原生包时,必须先执行version_generator.bat批处理文件生成Manifest文件信息,确保与打包后的src跟res里面的文件一一对应。
  • 构建工程并设置搜索路径

构建工程是根据asset目录下的资源,把所有 JS 脚本打包到 src 目录中,其他 Assets 资源将会被导出到 res 目录。当构建项目后,需要进入你的工程目录下\build\jsb-binary\目录下有一个main.js。打开输入如下代码:

// 在 main.js 的开头添加如下代码
    if (cc.sys.isNative) {
        var hotUpdateSearchPaths = cc.sys.localStorage.getItem('HotUpdateSearchPaths');
        if (hotUpdateSearchPaths) {
            jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
        }
    }
添加代码
这几行代码的作用是当下载完成要更新文件后,重启游戏将缓存文件夹的搜索路径前置在搜索路径中(优先级最高)。只有添加那几行代码,才能优先执行更新的文件,否则热更失败。
  • 生成热更包

先执行完生成Manifest 比对文件后,接着选择构建工程。构建完成后,把项目目录assets文件夹下的project.manifestversion.manifest取出,再把项目目录build\jsb-binary文件夹下把ressrc文件夹取出。把以上四个文件放到远程热更新目录下。当原生包每次打开应用时,就会检查更新。有高版本时,就会下载project.manifest进行文件比对并下载。然后游戏重启后,就会优先执行热更资源。

操作步骤
  • 生成原生包

构建项目设置好搜索路径后,就可以点击编译生成原生包。

最后

希望经过本文的讲解,希望对不懂如何操作热更新的人有所帮助。喜欢就动动手指点喜欢,关注我吧。我会不定时更新Cocos Creator教程哦~

相关文章

网友评论

  • 126d73d5e126:假如apk包生成了,现在需要热更新,步骤是不是以下:1 用node 命令生成新的配置文件。2 对项目构建,构建好生成res和src目录。3 把res, src 与之前的配置文件放到远程服务器。之后客户端启动就可以热更了吗?
    33b882c6c780:你应该是先对项目构建,然后根据构建好生成res和src目录生成热更新的配置文件。
  • cmd_ts:我在自己的历程中,需要引入官方的HotUpdate.js这个文件吗?
    cmd_ts:@Leo501 引入了官方例子,为什么出现update failed,请问这个怎么解决?
    33b882c6c780:引入官方HotUpdate.js,修改代码,定制成你需要的样子。
  • itzhangbao:赞!:+1:

本文标题:Cocos Creator教程:热更新

本文链接:https://www.haomeiwen.com/subject/cdcogttx.html