热更新检查问题 code 5 已解决

  • Creator 版本:2.2.0

  • 目标平台: Android

  • 详细报错信息,包含调用堆栈:

包体内project.manifest版本是1.0.0,
服务器project.manifest版本是1.0.1,特意修改了一个文件差异

指定远程目录是http://192.168.1.243:8000/igod/1.0.1/

代码在这里:updateScene.ts.zip (3.4 KB)
在checkCb中事件码为5,找不到改类型处理直接跳转loginScene

请问 code 5表示什么,需要如何修改可以更新到文件

@panda


    // jsb.EventAssetsManager.ERROR_NO_LOCAL_MANIFEST = 0;
    // jsb.EventAssetsManager.ERROR_DOWNLOAD_MANIFEST = 1;
    // jsb.EventAssetsManager.ERROR_PARSE_MANIFEST = 2;
    // jsb.EventAssetsManager.NEW_VERSION_FOUND = 3;
    // jsb.EventAssetsManager.ALREADY_UP_TO_DATE = 4;
    // jsb.EventAssetsManager.UPDATE_PROGRESSION = 5;
    // jsb.EventAssetsManager.ASSET_UPDATED = 6;
    // jsb.EventAssetsManager.ERROR_UPDATING = 7;
    // jsb.EventAssetsManager.UPDATE_FINISHED = 8;
    // jsb.EventAssetsManager.UPDATE_FAILED = 9;
    // jsb.EventAssetsManager.ERROR_DECOMPRESS = 10;

热更的问题一般比较没人会回答,
我只能告诉你范例的热更是没问题的,
所以你对照一下范例,看看哪里写错了吧

麻烦自己先理解下热更新的机制,热更新的文档,看下范例是如何设置热更新的地址的
https://docs.cocos.com/creator/manual/zh/advanced-topics/hot-update.html

我这边线上产品发现一个热更的bug。热更过程中如果用户kill掉进程或者断网,然后重启游戏,就会偶发出现更新失败。一旦失败了,每次重启都会直接提示更新失败。
case jsb.EventAssetsManager.UPDATE_FAILED: cc.log('文件下载失败:' + event.getMessage()); this.failCount++; if (this.failCount < 5) { this.assetManager.downloadFailedAssets(); } else { cc.log('太多文件下载失败,退出热更新!'); this.failCount = 0; failed = true; } break;
这是我处理文件下载失败的方式。之前一旦提示用户热更失败就只能重启,所以用户就一直卡在热更了。

我们现在的处理方式就是当报更新失败的时候把temp文件夹删了重新下载就能成功。

我在2.1.2版本之前不会出现这种情况。

出现这个问题是在我升级引擎到2.2.1rc1的时候开始出现。这个更新失败不是必现的,但概率很大。怀疑是断点续传或者temp文件夹检查的时候有问题。
因为目前新功能迭代时间比较紧所以没有具体去排查,望引擎组能好好排查一下这个热更因中途中断而导致热更失败的原因。

+11111

我这边线上产品发现一个热更的bug。热更过程中如果用户kill掉进程或者断网,然后重启游戏,就会偶发出现更新失败。一旦失败了,每次重启都会直接提示更新失败。
case jsb.EventAssetsManager.UPDATE_FAILED:
cc.log(‘文件下载失败:’ + event.getMessage());
this.failCount++;
if (this.failCount < 5) {
this.assetManager.downloadFailedAssets();
} else {
cc.log(‘太多文件下载失败,退出热更新!’);
this.failCount = 0;
failed = true;
}
break;
这是我处理文件下载失败的方式。之前一旦提示用户热更失败就只能重启,所以用户就一直卡在热更了。

我们现在的处理方式就是当报更新失败的时候把temp文件夹删了重新下载就能成功。

我在2.1.2版本之前不会出现这种情况。

出现这个问题是在我升级引擎到2.2.1rc1的时候开始出现。这个更新失败不是必现的,但概率很大。怀疑是断点续传或者temp文件夹检查的时候有问题。
因为目前新功能迭代时间比较紧所以没有具体去排查,望引擎组能好好排查一下这个热更因中途中断而导致热更失败的原因。

使用2.2.1正式版,2.2 是存在断点续传的问题,如果文件大小存在问题,试试修改下面这个代码

热更新地址我设置的http://192.168.1.243:8000/igod/1.0.1/,我也可以改成http://192.168.1.243:8000/igod/remote/, 目录名没有意义
并且上面1.0.0 1.0.1 都是放到这个目录下的


已解决

checkCb会被多次调用

需要等到switch中的几个Code才能做相应的处理,default需要return

1赞

这个断点续传的bug是在2.2.1的正式版已经修复好了吗?

修复了

好的,谢谢···