本人在热更新版本时发现有此报错,排查问题发现可能是因为我做的热更是直接热更不需要用户操作的那种。可能有重复步骤。检查发现我调用了AssetsManager的checkUpdate(),然后在检测到新版本后又调用了AssetsManager的update();
照提示,可能我不需要checkUpdate(),可以直接update();
checkUpdate() {
if (this._updating) {
return;
}
if (this._am.getState() == jsb.AssetsManager.State.UNINITED) {
var url = this.manifestUrl.nativeUrl;
if (cc.loader.md5Pipe) {
url = cc.loader.md5Pipe.transformURL(url);
}
this._am.loadLocalManifest(url);
}
if (!this._am.getLocalManifest() || !this._am.getLocalManifest().isLoaded()) {
this.progressMsg.string = "本地热更新manifest文件加载失败!";
return;
}
if (cc.sys.os === cc.sys.OS_ANDROID) {
this._am.setMaxConcurrentTask(2);
}
this.version.string = this._am.getLocalManifest().getVersion();
this._am.setEventCallback(this.checkCb.bind(this));
this._am.update();//this._am.checkUpdate(); // 直接update() 会在里面检测新版本
this._updating = true;
}
如此操作后,热更也能成功,看打印也是正确,而且没有此次报错提示了。另外,我进度条的读取显示错误(读取event.getPercentByFile()数值正确,但进度条一直显示为0)可能也是这个报错导致我读取的不是我想要的那个,修正了这个报错后显示也好了。
以上仅供参考,希望对其他人有帮助!