前言:游戏做热更新 是基本需求; 好在 cocos-creator 已经为我们做好了方案,相对于 U3D 的热更新方案来说,使用起来很简便!,不用关注很多细节
本文使用的是 cocos-creator 3.5.2 版本
官方文档 :热更新范例教程 · Cocos Creator
https://docs.cocos.com/creator/3.5/manual/zh/advanced-topics/hot-update.html
➤ extensions 文件夹中的脚本:主要用于 在构建完毕 之后, 在对应构建的的 build 子目录中的 main.js 中添加 资源路径逻辑,也就是定位到你更新的资源路径中;
其实就是一个立即执行函数,把 引用的路径添加进去
➤ version_generator.js 脚本是用于 对你构建的资源 进行 哈希签名,最终生成 project.manifest 和 version.manifest 文件,用于 资源比对是否进行下载更新,
project.manifest 内容大致如下:记录资源文件的 哈希值 文件大小,以及文件清单
version.manifest 文件主要作用就是 记录当前资源的版本信息 1.0.3
➤ 当 App 端需要检查更新的时候 ,会比对 服务端和本地 version.manifest 文件,如果版本一致则会跳过,否则 比对服务器 project.manifest 和 本地 project.mainfest 找到需要下载的文件。➤ ➤ ➤ ➤
>>>>>>> 没有更新过的话, 会找到 添加到工程路径 assets 目录下的 version.manifest 和 project.mainfest 文件,所以我们会在 项目 assets 路径中添加 project.manifest 和 version.manifest 文件 ; 否则第一次更新时候无法找到本地 与服务器对文做 对比, 就会出错!!
这里基本讲解完毕 各类文件以及脚本的作用,下我我们来直接上手;
➥构建项目发布App
目标:构建一个母包,用于后面热更新资源
页面:
发布页面修改一下报名,其余默认就可以,点击构建
在项目根目录中 运行:version_generator 文件
node version_generator.js -v 1.0.0 -u http://192.168.10.88:8080/remote-assets/ -s build/android\assets -d remote-assets/
- -v 指定资源版本
- -u 设置你的服务器 资源路径
- -s 指定你 构建项目生成的资源文件路径,(对资源生成清单)
- -d 生成 project.manifest 和 version.manifest 的文件路径,我们暂且放在项目根目录的 remote-assets 目录中;
运行完毕之后:remote-assets 文件夹中会多出 两个文件;
因为是打 母包:我们要把这两个文件 拷贝到 项目根目录的 assets 路径中。(替换掉Demo 中自带这两个文件,这两个文件我们不能用 配置信息不对)
备注: 因为刚刚构建的项目中 project.manifest version.manifest 文件不对(demo项目中文件服务器地址)或者没有(新建项目中没有);我们需要再次 构建包含 project.manifest version.manifest build 文件的资源;
Android Studio 跑起来我们构建的 Android项目!!
这里补充一点:因为我实在局域网测试的,使用的是 http请求;Android 7.0 以后需要额外配置才能继续访问;
我们的手机已经跑起来了:
➥修改页面,制作需要更新的资源
Ⅰ: 我们给 UI添加一个动画:
Ⅱ 重新构建项目:
Ⅲ 构建完成后,重新生成 project.manifest 和 version.manifest,* 版本号 加一,否则,还会以前版本
node version_generator.js -v 1.0.1 -u http://192.168.10.88:8080/remote-assets/ -s build/android\assets -d remote-assets/
我们在桌面(位置随意 不要项目根目录就可以)新建一个名称为文件夹 remote-assets 的文件夹;将刚刚生成的 project.manifest 和 version.manifest; 和 构建项目资源路径的 assets 所有文件 拷贝其中:放到服务器中。
大致如下:
然后用 容器 跑起来;nginx iis 都可以,我这里使用的是: live-server; 能在浏览器中访问到就成功
* 这个时候不要再次运行 Android Studio;再次运行的话,App就会加载到最新的资源;我们直接打开APP
➥运行App,更新资源
这个时候不要再次运行 Android Studio;再次运行的话,App就会加载到最新的资源;
我们直接打开APP:
更新完资源,重新启动之后 新加的动画已经在播放了! 大功告成!