一 原理:
二 环境:
1.cocos creator
2.python:用于本地模拟远程服务器
- pyhton环境搭建不再赘述(推荐使用homebrew)
- 启用本地服务:本地新建一个文件夹,cd到目录 ,
python -m SimpleHTTPServer
则开启了Http服务,
- 打开网页 输入自己的ip地址和文件目录 能访问则搭建成功
三 具体步骤(从0开始):
1.原始工程配置:
- 下载官方范例,找到以下两个文件
version_generator.js
HotUpdate.js
取出待用,然后可以删除官方范例
-
新建工程 ,创建一个简单的界面,两个按钮,检查更新 和 开始更新。
31566895998_.pic.jpg
- 把HotUpdate文件引入新建工程中,并做删减,删掉官方demo中的UI相关的代码,具体见demo里面的HotUpdate文件
- HotUpdate方法解析
checkCb,为检查更新方法的回调
updateCb 为更新进度回调
checkUpdate 为检查更新事件
hotUpdate为 开始更新事件
- 将两个按钮事件分别绑定checkUpdate和hotUpdate
- 构建发布 - 选择原生平台 - 构建
- 把version_generator.js 放到工程根目录,打开终端,cd 工程根目录 执行nodejs 代码
node version_generator.js -v 0.0.0 -u http://192.168.2.1:8000/remote-assets/HotUpdateDemo/ -s build/jsb-link/ -d assets/
-v: 当前版本号
-u:远程资源文件目录路径 输入之前模拟的服务器地址+文件目录 具体路径对应文件目录如下:

-s:本地打包资源相对路径

-d:本地资源文件相对地址
-
资源管理器会多出两个文件
WechatIMG3.jpeg
-
将project 引入 HotUpdate.js的属性中
WechatIMG4.jpeg
- 再次构建 - 发布
-
在main.js的 顶部加入以下代码
WeChat8cd4b31dfaab07dae4249059c7d1e838.png
if (jsb) {
var hotUpdateSearchPaths = localStorage.getItem('HotUpdateSearchPaths');
if (hotUpdateSearchPaths) {
jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
}
}
该代码作用是:如果有热更新,则使用热更下来资源的索引地址,若不加,则找不到热更新内容,还是原来的内容,(记住:每次构建后都必需手动添加代码)
大版本更新需清楚本地热更缓存,否则包体更新后可能运行之前热更代码:
//大版本更新 删除本地热更缓存 (需更新版本号)
var gameVersion = "HotUpdateVersion" + "1.0.0"
var previousVersion = localStorage.getItem(gameVersion);
console.log(previousVersion)
// 之前保存在 local Storage 中的版本号,如果没有,则认为是新版本
if (previousVersion == null || previousVersion == "") {
// 热更新的储存路径,如果旧版本中有多个,可能需要记录在列表中,全部清理
var storagePath = ((jsb.fileUtils ? jsb.fileUtils.getWritablePath() : '/') + 'blackjack-remote-asset');
if (jsb.fileUtils.isDirectoryExist(storagePath)) {
jsb.fileUtils.removeDirectory(storagePath)
console.log("大版本更新删除缓存");
}
localStorage.setItem(gameVersion,gameVersion)
console.log("storagePath:")
console.log(storagePath)
}
- 最后一步 在build - jsb-link - frameworks - runtime-src 选择对应平台 在手机上跑起来
2.创造更新内容:
- 打开工程 简单的 新增一个按钮 跳转一个新场景(见demo)
- 构建发布
- 打开终端,cd 工程根目录 执行nodejs代码 远程资源地址和之前相同,版本号需要修改!
node version_generator.js -v 0.0.1 -u http://192.168.2.1:8000/remote-assets/HotUpdateDemo/ -s build/jsb-link/ -d assets/
-
复制以下四个文件 到 远程服务器目录
WechatIMG6.jpeg
WechatIMG5.jpeg
最终效果如图:

-
最后 手机重新删掉进程打开原生项目。点击检查更新,然后开始更新,见证奇迹(手机记得和电脑 在一个网络环境)
网友评论