热更新回掉函数返回错误码为3,更新到100%后没有没有反应

热更新部分几乎完全按照官网的教程来的jsb.EventListenerAssetsManager回掉函数的代码如下:

updateCb: function (event) {
        var needRestart = false;
        var failed = false;
        var code = event.getEventCode()
        switch (code)
        {
            case jsb.EventAssetsManager.ERROR_NO_LOCAL_MANIFEST:{
                cc.log('No local manifest file found, hot update skipped.');
                this.lblErr.string += 'No local manifest file found, hot update skipped.\n';
                failed = true;
                break;
              }
            case jsb.EventAssetsManager.UPDATE_PROGRESSION:{
                var percent = event.getPercent();
                var percentByFile = event.getPercentByFile();

                var msg = event.getMessage();
                if (msg) {
                    cc.log(msg);
                }
                cc.log(percent.toFixed(2) + '%');
                this.percent.string = percent + '%';
                break;
              }
            case jsb.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST:{
              this.lblErr.string += 'ERROR_DOWNLOAD_MANIFEST\n';}
            case jsb.EventAssetsManager.ERROR_PARSE_MANIFEST:{
                cc.log('Fail to download manifest file, hot update skipped.');
                this.lblErr.string += 'Fail to download manifest file, hot update skipped.\n';
                failed = true;
                break;}
            case jsb.EventAssetsManager.ALREADY_UP_TO_DATE:{
                cc.log('Already up to date with the latest remote version.');
                this.lblErr.string += 'Already up to date with the latest remote version.\n';
                failed = true;
                break;}
            case jsb.EventAssetsManager.UPDATE_FINISHED:{
                cc.log('Update finished. ' + event.getMessage());
                this.lblErr.string += 'Update finished. ' + event.getMessage() + '\n';
                needRestart = true;
                break;}
            case jsb.EventAssetsManager.UPDATE_FAILED:{
                cc.log('Update failed. ' + event.getMessage());
                 this.lblErr.string += 'Update failed. ' + event.getMessage()  + '\n';
                this._failCount ++;
                if (this._failCount < 5)
                {
                    this._am.downloadFailedAssets();
                }
                else
                {
                    cc.log('Reach maximum fail count, exit update process');
                     this.lblErr.string += 'Reach maximum fail count, exit update process\n';
                    this._failCount = 0;
                    failed = true;
                }
                break;}
            case jsb.EventAssetsManager.ERROR_UPDATING:{
                cc.log('Asset update error: ' + event.getAssetId() + ', ' + event.getMessage());
                this.lblErr.string += 'Asset update error: ' + event.getAssetId() + ', ' + event.getMessage() + '\n';
                break;}
            case jsb.EventAssetsManager.ERROR_DECOMPRESS:{
                cc.log(event.getMessage());
                this.lblErr.string += event.getMessage() + 'ERROR_DECOMPRESS\n';
                break;}
            default:{
                this.lblErr.string += 'CODE is ' +code+'\n';
                break;}
        }
        //this.lblErr.string += 'failed is '+ failed + "and needRestart is " + needRestart;
        if (failed) {
            cc.eventManager.removeListener(this._updateListener);
            this.updatePanel.active = false;
        }

        if (needRestart) {
            cc.eventManager.removeListener(this._updateListener);
            // Prepend the manifest's search path
            var searchPaths = jsb.fileUtils.getSearchPaths();
            var newPaths = this._am.getLocalManifest().getSearchPaths();
            Array.prototype.unshift(searchPaths, newPaths);
            // This value will be retrieved and appended to the default search path during game startup,
            // please refer to samples/js-tests/main.js for detailed usage.
            // !!! Re-add the search paths in main.js is very important, otherwise, new scripts won't take effect.
            cc.sys.localStorage.setItem('HotUpdateSearchPaths', JSON.stringify(searchPaths));

            jsb.fileUtils.setSearchPaths(searchPaths);
            this.lblErr.string += "游戏资源更新完毕\n";
            cc.game.restart();
        }
    },

因为发现没有错误信息反馈回来,所以我再default那里输出了一下code,重新打包发现code是3,连续出现了2次,并且除了更新进度没有返回其他错误码,更新进度已经到100%,3应该不等于任何一条错误码,所以现在定位不了问题。
程序热更新那块开始的输出如下:

01-31 15:10:45.816: D/cocos2d-x debug info(4177): Success to load scene: db://assets/resources/scenes/update.fire
01-31 15:10:45.844: D/cocos2d-x(4177): find in flash memory dirPath(/data/data/com.lailai.yzmj/files/tiantianqipai-asset/)
01-31 15:10:46.009: D/Cocos2dxDownloader(4177): onSuccess(i:200 headers:[Lcz.msebera.android.httpclient.Header;@1e99d779 file:/data/data/com.lailai.yzmj/files/tiantianqipai-asset/version.manifest.tmp
01-31 15:10:46.326: D/Cocos2dxDownloader(4177): onSuccess(i:200 headers:[Lcz.msebera.android.httpclient.Header;@3a1b5c6c file:/data/data/com.lailai.yzmj/files/tiantianqipai-asset/project.manifest.temp.tmp
01-31 15:10:46.355: D/Cocos2dxDownloader(4177): onSuccess(i:200 headers:[Lcz.msebera.android.httpclient.Header;@3b577235 file:/data/data/com.lailai.yzmj/files/tiantianqipai-asset/project.manifest.temp.tmp

好像也没有什么报错,希望大神指导下,最关键就是这个code 3是什么含义