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

2019-08-27  本文已影响0人  ilnaw

一 原理:

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

二 环境:

1.cocos creator

2.python:用于本地模拟远程服务器

python -m SimpleHTTPServer 

则开启了Http服务,

三 具体步骤(从0开始):

1.原始工程配置:

取出待用,然后可以删除官方范例

checkCb,为检查更新方法的回调
updateCb 为更新进度回调
checkUpdate 为检查更新事件
hotUpdate为 开始更新事件
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:本地资源文件相对地址

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)
    }

2.创造更新内容:

node version_generator.js -v 0.0.1 -u http://192.168.2.1:8000/remote-assets/HotUpdateDemo/ -s build/jsb-link/ -d assets/

最终效果如图:


WechatIMG7.jpeg
上一篇 下一篇

猜你喜欢

热点阅读