没遇到过uuid冲突,理论上现有的uuid生成规则生成两个相同uuid的几率低到发指……
我认为 你应该向官方提交错误试试 如果按你说的这样 这不是典型的手动构造本地配置文件,但不起作用的情况了吗 这是个严重的错误了 ,但如果是这么明显的问题,那估计早就暴露出来了 其他人也不会正常才对的
你自定义的 manifest 版本号,有比最后下载的更新包的版本号高吗?确认下
肯定不会啊,后来我只有每次调用前删除掉storepath下的project.manifest就能正常工作,不删除就会永远提示无需更新(ALREADY_UP_TO_DATE)
localCustom 传入的 manifest 和热更新缓存的 project.manifest 的两个版本号截图发一下?
我这边的操作都是修改完后,覆盖掉

热更新缓存的版本号和loadCustom的版本号一致,你可以这样理解,每次缓存的project.manifest里面的存储的远程热更地址时v1,而远程v1里面的project.manifest和本地缓存的project.manifest一模一样,所以需要更新的时候,我会显手动读取缓存的project.manifest,然后将里面的地址改为远程v2,然后再通过loadCustom方式传入assetmanager
对的,你这种方式是可以的,但是我实际上不是读取热更缓存的project.manifest来修改,我是读取项目内的project.manifest(通过bundle.load读取项目路径)
按照目前设计,这个方法会用自定义的 manifest 替代本地缓存中的 project.manifest,如果自定义的 manifest 的版本号等于缓存的 manifest,这样始终会加载缓存的 project.manifest,下面有修正方法可以参考下。
this.am.loadLocalManifest(manifest, this.storagePath);
可以把版本号的判断代码做下处理,将下面位置的代码
改成
// Compare with cached manifest to determine which one to use
if (cachedManifest) {
bool localNewer = _localManifest->versionGreaterOrEquals(cachedManifest, _versionCompareHandle);
if (!localNewer) {
CC_SAFE_RELEASE(_localManifest);
_localManifest = cachedManifest;
}
}
到这里就可以将自定义 manifest 替代本地缓存中的 project.manifest 的逻辑修复,其他的热更新规则没有变动。
嗯,改底层C++代码我们还不如直接重写缓存的project.manifest了,或者直接删除缓存的project.manifest
这个方法也是可以的,没问题