Git Product home page Git Product logo

cocos-tutorial-hot-update's People

Contributors

drelaptop avatar jareguo avatar knoxhuang avatar nantas avatar pandamicro avatar pppro avatar stormslowly avatar xianyinchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cocos-tutorial-hot-update's Issues

verstion_generator.js md5 计算和标准计算方法不一致。

const crypto = require('crypto')
const fs = require('fs')
const execSync = require('child_process').execSync

const filePath  = process.argv[2]
const md5ByBinary = crypto.createHash('md5').update(fs.readFileSync(filePath, 'binary'))
	.digest('hex');
const md5ByBuffer = crypto.createHash('md5').update(fs.readFileSync(filePath))
	.digest('hex');
const cliMd5 = process.platform==='darwin' ?'md5':'md5sum'

console.log({filePath,md5ByBinary, md5ByBuffer})
console.log('\ncli:')
console.log(execSync(`${cliMd5} ${filePath}`).toString())
// in macos
node md5veify.js HelloWorld.png
{ filePath: 'HelloWorld.png',
  md5ByBinary: 'a69a0b857f7462f4dd0d00bb5231a721',
  md5ByBuffer: '55ea4e952bf080f300379ec26723598b' }

cli:
MD5 (HelloWorld.png) = 55ea4e952bf080f300379ec26723598b

可以麻煩更新最新版本的資源熱更新教學嗎?

你好,

不好意思,我還是Cocos Creator的新手
我嘗試要測試 Asset Manager 的工具
但使用Build 打包 Windows 版本後
native/package/ 這個路徑還是沒有檔案
但看到Version Generator 來生成 Manifest 檔案的指令會用到這個路徑的檔案
node version_generator.js -v 1.0.0 -u http://your-server-address/tutorial-hot-update/remote-assets/ -s native/package/ -d assets/
不知道是不是有什麼操作我不懂所以漏掉了?

然後看到要寫到 main.js 附加上搜尋路徑設定的邏輯和更新中斷修復程式碼 也改到 hot-update 插件中了
不是很清楚要怎麼操作才能產生用來Patch 的 Asset 的檔案

希望有簡易的SOP操作順序能方便照著做
再麻煩有空能更新一下教學了
感謝~

hot update load script but error 5000 (cocos creator 1.9.1)

here file main.js

`(function () {

function boot () {

    var settings = window._CCSettings;
    window._CCSettings = undefined;

    if ( !settings.debug ) {
        var uuids = settings.uuids;

        var rawAssets = settings.rawAssets;
        var assetTypes = settings.assetTypes;
        var realRawAssets = settings.rawAssets = {};
        for (var mount in rawAssets) {
            var entries = rawAssets[mount];
            var realEntries = realRawAssets[mount] = {};
            for (var id in entries) {
                var entry = entries[id];
                var type = entry[1];
                // retrieve minified raw asset
                if (typeof type === 'number') {
                    entry[1] = assetTypes[type];
                }
                // retrieve uuid
                realEntries[uuids[id] || id] = entry;
            }
        }

        var scenes = settings.scenes;
        for (var i = 0; i < scenes.length; ++i) {
            var scene = scenes[i];
            console.log('scene.url',scene.url)
            if (typeof scene.uuid === 'number') {
                scene.uuid = uuids[scene.uuid];
            }
        }

        var packedAssets = settings.packedAssets;
        for (var packId in packedAssets) {
            var packedIds = packedAssets[packId];
            for (var j = 0; j < packedIds.length; ++j) {
                if (typeof packedIds[j] === 'number') {
                    packedIds[j] = uuids[packedIds[j]];
                }
            }
        }
    }

    // init engine
    var canvas;

    if (cc.sys.isBrowser) {
        canvas = document.getElementById('GameCanvas');
    }

    if (false) {
        var ORIENTATIONS = {
            'portrait': 1,
            'landscape left': 2,
            'landscape right': 3
        };
        BK.Director.screenMode = ORIENTATIONS[settings.orientation];
        initAdapter();
    }

    function setLoadingDisplay () {
        // Loading splash scene
        var splash = document.getElementById('splash');
        var progressBar = splash.querySelector('.progress-bar span');
        cc.loader.onProgress = function (completedCount, totalCount, item) {
            var percent = 100 * completedCount / totalCount;
            if (progressBar) {
                progressBar.style.width = percent.toFixed(2) + '%';
            }
        };
        splash.style.display = 'block';
        progressBar.style.width = '0%';

        cc.director.once(cc.Director.EVENT_AFTER_SCENE_LAUNCH, function () {
            splash.style.display = 'none';
        });
    }

    var onStart = function () {
        cc.view.resizeWithBrowserSize(true);

        if (!false && !false) {
            // UC browser on many android devices have performance issue with retina display
            if (cc.sys.os !== cc.sys.OS_ANDROID || cc.sys.browserType !== cc.sys.BROWSER_TYPE_UC) {
                cc.view.enableRetina(true);
            }
            if (cc.sys.isBrowser) {
                setLoadingDisplay();
            }

            if (cc.sys.isMobile) {
                if (settings.orientation === 'landscape') {
                    cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
                }
                else if (settings.orientation === 'portrait') {
                    cc.view.setOrientation(cc.macro.ORIENTATION_PORTRAIT);
                }
                cc.view.enableAutoFullScreen([
                    cc.sys.BROWSER_TYPE_BAIDU,
                    cc.sys.BROWSER_TYPE_WECHAT,
                    cc.sys.BROWSER_TYPE_MOBILE_QQ,
                    cc.sys.BROWSER_TYPE_MIUI,
                ].indexOf(cc.sys.browserType) < 0);
            }

            // Limit downloading max concurrent task to 2,
            // more tasks simultaneously may cause performance draw back on some android system / brwosers.
            // You can adjust the number based on your own test result, you have to set it before any loading process to take effect.
            if (cc.sys.isBrowser && cc.sys.os === cc.sys.OS_ANDROID) {
                cc.macro.DOWNLOAD_MAX_CONCURRENT = 2;
            }
        }

        // init assets
        cc.AssetLibrary.init({
            libraryPath: 'res/import',
            rawAssetsBase: 'res/raw-',
            rawAssets: settings.rawAssets,
            packedAssets: settings.packedAssets,
            md5AssetsMap: settings.md5AssetsMap
        });

        if (false) {
            cc.Pipeline.Downloader.PackDownloader._doPreload("WECHAT_SUBDOMAIN", settings.WECHAT_SUBDOMAIN_DATA);
        }

        var launchScene = settings.launchScene;

        // load scene
        cc.director.loadScene(launchScene, null,
            function () {
                if (cc.sys.isBrowser) {
                    // show canvas
                    canvas.style.visibility = '';
                    var div = document.getElementById('GameDiv');
                    if (div) {
                        div.style.backgroundImage = '';
                    }
                }
                cc.loader.onProgress = null;
                console.log('Success to load scene: ' + launchScene);
            }
        );
    };

    // jsList
    var jsList = settings.jsList;

    if (false) {
        BK.Script.loadlib();
    }
    else
    {
        var bundledScript = settings.debug ? 'src/project.dev.js' : 'src/project.js';
        if (jsList) {
            jsList = jsList.map(function (x) {
                return 'src/' + x;
            });
            jsList.push(bundledScript);
        }
        else {
            jsList = [bundledScript];
        }
    }

    // anysdk scripts
    if (cc.sys.isNative && cc.sys.isMobile) {

// jsList = jsList.concat(['src/anysdk/jsb_anysdk.js', 'src/anysdk/jsb_anysdk_constants.js']);
}

    var option = {
        //width: width,
        //height: height,
        id: 'GameCanvas',
        scenes: settings.scenes,
        debugMode: settings.debug ? cc.DebugMode.INFO : cc.DebugMode.ERROR,
        showFPS: (!false && !false) && settings.debug,
        frameRate: 60,
        jsList: jsList,
        groupList: settings.groupList,
        collisionMatrix: settings.collisionMatrix,
        renderMode: 0
    }

    cc.game.run(option, onStart);
}

if (false) {
    BK.Script.loadlib('GameRes://libs/qqplay-adapter.js');
    BK.Script.loadlib('GameRes://src/settings.js');
    BK.Script.loadlib();
    BK.Script.loadlib('GameRes://libs/qqplay-downloader.js');
    qqPlayDownloader.REMOTE_SERVER_ROOT = "";
    var prevPipe = cc.loader.md5Pipe || cc.loader.assetLoader;
    cc.loader.insertPipeAfter(prevPipe, qqPlayDownloader);
    // <plugin script code>
    boot();
    return;
}

if (false) {
    require(window._CCSettings.debug ? 'cocos2d-js.js' : 'cocos2d-js-min.js');
    var prevPipe = cc.loader.md5Pipe || cc.loader.assetLoader;
    cc.loader.insertPipeAfter(prevPipe, wxDownloader);
    boot();
    return;
}
 if (window.cc && cc.sys.isNative) { 
    var hotUpdateSearchPaths = cc.sys.localStorage.getItem('HotUpdateSearchPaths'); 
    console.log('hotUpdateSearchPaths',hotUpdateSearchPaths)
    if (hotUpdateSearchPaths) { 
        jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths)); 
    }
}

if (window.jsb) {
    require('src/settings.js');
    require('src/jsb_polyfill.js');
    boot();
    return;
}


if (window.document) {
    var splash = document.getElementById('splash');
    splash.style.display = 'block';

    var cocos2d = document.createElement('script');
    cocos2d.async = true;
    cocos2d.src = window._CCSettings.debug ? 'cocos2d-js.js' : 'cocos2d-js-min.js';

    var engineLoaded = function () {
        document.body.removeChild(cocos2d);
        cocos2d.removeEventListener('load', engineLoaded, false);
        window.eruda && eruda.init() && eruda.get('console').config.set('displayUnenumerable', false);
        boot();
    };
    cocos2d.addEventListener('load', engineLoaded, false);
    document.body.appendChild(cocos2d);
}

})();
`

STACK:
[0]_onPreDestroy@src/jsb_polyfill.js:14188
[1]_onPreDestroy@src/jsb_polyfill.js:1751
[2]98.u._destroyImmediate@src/jsb_polyfill.js:11995
[3]_onPreDestroy@src/jsb_polyfill.js:14186
[4]_onPreDestroy@src/jsb_polyfill.js:1751
[5]98.u._destroyImmediate@src/jsb_polyfill.js:11995
[6]_onPreDestroy@src/jsb_polyfill.js:14186
[7]_onPreDestroy@src/jsb_polyfill.js:1751
[8]98.u._destroyImmediate@src/jsb_polyfill.js:11995
[9]_onPreDestroy@src/jsb_polyfill.js:14186
[10]_onPreDestroy@src/jsb_polyfill.js:1751
[11]98.u._destroyImmediate@src/jsb_polyfill.js:11995
[12]_onPreDestroy@src/jsb_polyfill.js:14186
[13]_onPreDestroy@src/jsb_polyfill.js:1751
[14]98.u._destroyImmediate@src/jsb_polyfill.js:11995
[15]s@src/jsb_polyfill.js:11892
[16]callback@src/jsb_polyfill.js:18235
E/jswrapper (519): [ERROR] (..\jswrapper\v8\Object.cpp, 519): Invoking function (09829418) failed!
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
D/jswrapper (125): JS: [ERROR]: Error 5000, please go to https://github.com/cocos-creator/engine/blob/master/EngineErrorMap.md#5000 to see details.
E/jswrapper (267): ERROR: Uncaught TypeError: Cannot read property '_destroyImmediate' of null, location: src/jsb_polyfill.js:0:0

Mac环境导入creator V1.6.2版本 init报错

2017-10-27T09:22:29.555Z - normal: Initializing project /Users/XXXXX/creator/tutorial-hot-update
2017-10-27T09:22:29.559Z - normal: Loading packages
2017-10-27T09:22:29.574Z - normal: [Lua Support] version 1.1.6
2017-10-27T09:22:29.576Z - success: creator-lua-support loaded
2017-10-27T09:22:29.579Z - success: hot-update loaded
2017-10-27T09:22:29.579Z - normal: Watching packages
2017-10-27T09:22:29.628Z - normal: Run Application
2017-10-27T09:22:33.938Z - failed: [db-task][init] Failed to post import asset /Users/XXXXX/creator/tutorial-hot-update/assets/font/stake_number.fnt, message: TypeError: Cannot read property 'uuid' of undefined
at BitmapFontMeta.postImport (/Applications/CocosCreator.app/Contents/Resources/app.asar/editor/share/assets/meta/bitmap-font.js:1:1139)
at Async.series.e (/Applications/CocosCreator.app/Contents/Resources/app.asar/asset-db/lib/tasks.js:1:5804)
at /Applications/CocosCreator.app/Contents/Resources/app.asar/node_modules/async/lib/async.js:718:13
at iterate (/Applications/CocosCreator.app/Contents/Resources/app.asar/node_modules/async/lib/async.js:262:13)
at async.forEachOfSeries.async.eachOfSeries (/Applications/CocosCreator.app/Contents/Resources/app.asar/node_modules/async/lib/async.js:281:9)
at _parallel (/Applications/CocosCreator.app/Contents/Resources/app.asar/node_modules/async/lib/async.js:717:9)
at Object.async.series (/Applications/CocosCreator.app/Contents/Resources/app.asar/node_modules/async/lib/async.js:739:9)
at _postImportAsset (/Applications/CocosCreator.app/Contents/Resources/app.asar/asset-db/lib/tasks.js:1:5734)
at Async.eachLimit.Async.ensureAsync (/Applications/CocosCreator.app/Contents/Resources/app.asar/asset-db/lib/tasks.js:1:7544)
at /Applications/CocosCreator.app/Contents/Resources/app.asar/node_modules/async/lib/async.js:1213:16
2017-10-27T09:22:34.467Z - success: preview server running at http://localhost:7456
2017-10-27T09:22:39.903Z - normal: 1.6.2

cc.eventManager问题

版本1.8,1.9去除了cc.eventManager,请问check和update发出的事件名称是什么?

热更下载文件报错

我用Nginx配置了一个文件下载服务器,manifest文件是可以下载下来的,但是下载热更资源的时候,就会报错,有的时候是 couldn't connect to server ,有的时候是,couldn't resolve host name,但是我manifest文件都下载下来了啊,都没有问题的,这个是为什么呢?

this.manifestUrl.nativeUrl值为空

我的引擎版本是2.1.1,但是在真机上一直显示this.manifestUrl.nativeUrl(在HotUpdate.js中)为undifined,请问这个值我该如何配置比较好,谢谢~

安卓更新完毕重启,检查更新发现还是有更新。

更新完成重新启动,点击检查更新按钮,发现还是可以找到更新版本。
再三确认提示更新完成,而不是更新失败。

查看设备内数据,发现storagePath目录下面没有任何东西。
var storagePath = ((jsb.fileUtils ? jsb.fileUtils.getWritablePath() : '/') + 'blackjack-remote-asset');
console.log('Storage path for remote asset : ' + storagePath);
但是在storagePath_temp目录下面有一个version文件。

logcat日志
http://url.cn/45RIvYP

creator版本1.4
开发环境windows
安卓机型 小米

creator 2.1.2构建window无法运行

creator 2.1.2构建window项目,编译后运行界面黑的,并且 有错误提示
ERROR: Uncaught TypeError: Cannot read property 'length' of null, location: src/cocos2d-jsb.js:0:0
[ERROR] (d:\cocoscreator_2.1.2\resources\cocos2d-x\cocos\scripting\js-bindings\jswrapper\v8\object.cpp, 534): Invoking function (0D8D0740) failed!

大版本更新问题

如果遇到大版本更新,比如apk重新更新,如何重置缓存更新目录? 可以用 cc.sys.osVersion 和 cc.sys.osMainVersion 来控制吧?那是不是必须得在main.js里面添加控制逻辑

ccc1.10.2遇到ERROR_DOWNLOAD_MANIFEST怎么办?

case jsb.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST:
case jsb.EventAssetsManager.ERROR_PARSE_MANIFEST:
this.panel.info.string = "Fail to download manifest file, hot update skipped.";
break;

请问上面的写法是正确的吗?
详细的报错请看这里:
http://www.cocoachina.com/bbs/read.php?tid=1793137&page=1&toread=1#tpc
麻烦帮忙看一下,谢谢。

因为下载错误,我现在已经用downFile2Local的形式,已经能下载到文件了,但是我不知道怎么把缓存文件夹里面的文件覆盖到程序的文件夹啊。(我是在电脑上自带模拟器测试的,缓存地址是模拟器主程序目录下面的一个_temp文件夹,但是明显跟项目的路径差很远的,我不知道手机上会是是什么样子)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.