Cocos Creator 热更新(前辈的经验+当前版本的结合)

苦海无涯,特此记录。

先吐槽一下。官方的文档要么就是古董,要么就是分散。对于我这个新上手的人来说,上来cocosCreator版本就是2.1.2了,而参考文档还是1.X的版本、几年前的说明。

1、准备工作

1、cocos Creator 版本 V2.1.2

2、Android 原生打包环境-->自行百度(主要是sdk,nkd,ant)

3、cocosCreator 热更新插件 《热更新manifest生成工具

4、hfs网络文件服务器 2.3(自行下载、安装。主要用做本地简单服务器的搭建)

2、预备知识

1、阅读一下官方文档

https://docs.cocos.com/creator/manual/zh/advanced-topics/hot-update.html

https://docs.cocos.com/creator/manual/zh/advanced-topics/assets-manager.html

读完之后,是不是就知道更新大致需要的文档了

2、从官方文档中给出的大致过程



 3、开始热更新

新建一个cocosCreator 项目。

1、开始还是先搭建一个简单的服务器

1、在硬盘中创建一个目录,用来热更新的目录

 2、打开hfs.exe,将刚刚的目录拖入hfs左侧空白就会自动生成

这样就简单的生成了资源更新服务器了。

2、生成Manifest文档和更新资源包(官方是代码生成的,这里我使用的cocosCreator商店的工具)

->1、创建  version_generator.js 文件 (官方代码仓库也有)

var fs = require('fs');
var path = require('path');
var crypto = require('crypto');

var manifest = {
	//服务器上资源文件存放路径(src,res的路径)
    packageUrl: 'http://192.168.1.120:8080/hotUpdate/',
    remoteManifestUrl: 'http://192.168.1.120:8080/hotUpdate/project.manifest',
    remoteVersionUrl: 'http://192.168.1.120:8080/hotUpdate/version.manifest',
    version: '1.0.2',
    assets: {},
    searchPaths: []
};

//生成的manifest文件存放目录
var dest = 'assets/';
//项目构建后资源的目录
var src = 'build/jsb-default/';

/**
 * node version_generator.js -v 1.0.0 -u http://your-server-address/tutorial-hot-update/remote-assets/ -s native/package/ -d assets/
 */
 
// Parse arguments
var i = 2;
while ( i < process.argv.length) {
    var arg = process.argv[i];

    switch (arg) {
    case '--url' :
    case '-u' :
        var url = process.argv[i+1];
        manifest.packageUrl = url;
        manifest.remoteManifestUrl = url + 'project.manifest';
        manifest.remoteVersionUrl = url + 'version.manifest';
        i += 2;
        break;
    case '--version' :
    case '-v' :
        manifest.version = process.argv[i+1];
        i += 2;
        break;
    case '--src' :
    case '-s' :
        src = process.argv[i+1];
        i += 2;
        break;
    case '--dest' :
    case '-d' :
        dest = process.argv[i+1];
        i += 2;
        break;
    default :
        i++;
        break;
    }
}


function readDir (dir, obj) {
    var stat = fs.statSync(dir);
    if (!stat.isDirectory()) {
        return;
    }
    var subpaths = fs.readdirSync(dir), subpath, size, md5, compressed, relative;
    for (var i = 0; i < subpaths.length; ++i) {
        if (subpaths[i][0] === '.') {
            continue;
        }
        subpath = path.join(dir, subpaths[i]);
        stat = fs.statSync(subpath);
        if (stat.isDirectory()) {
            readDir(subpath, obj);
        }
        else if (stat.isFile()) {
            // Size in Bytes
            size = stat['size'];
            md5 = crypto.createHash('md5').update(fs.readFileSync(subpath)).digest('hex');
            compressed = path.extname(subpath).toLowerCase() === '.zip';

            relative = path.relative(src, subpath);
            relative = relative.replace(/\\/g, '/');
            relative = encodeURI(relative);
            obj[relative] = {
                'size' : size,
                'md5' : md5
            };
            if (compressed
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值