Cocos Creator 热更新 从0开始集成步骤

一 原理:

建议先浏览官方文档,熟悉了解热更原理和大体流程
原理
范例

二 环境:

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:远程资源文件目录路径 输入之前模拟的服务器地址+文件目录 具体路径对应文件目录如下:


WechatIMG7.jpeg

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


WeChat5c57b8a8fa306145478b3f44d481f8f8.png

-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

最终效果如图:


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

  • demo

你可能感兴趣的:(Cocos Creator 热更新 从0开始集成步骤)