记一个热更的坑

参照官方demo,使用loadCustom的方式定制初始化manifest,首次更新有效,更新一次后,后续就没有效果了,经过一天的调试,发现是this.am.loadLocalManifest(manifest, this.storagePath);调用后,后续调用this.am.checkUpdate()时不会使用前面load进去的自定义manifest,而是去上次更新目录里面重新寻找并加重project.manifest……这个坑有点深

1赞

我认为这不是坑 这个是引擎的BUG,2.X的应该没这个问题 你应该向官方报告一下这个问题 看官方怎么说
而且你说的这个 去上次更新目录里面重新寻找并加重project.manifest 你是怎么确定的呢? 我到时认为 你哪里可能配置错误导致的 这种可能性比较大

每次先用jsb的方法判断可写根路径/project文件是否存在,存在了读取,不存在就用resource.load读取安装包里project。

,,你们还在用 manifest 的方式热更?不都用bundle了吗?

bundle就不需要manifest了吗?

项目在做大厅加子游戏,所以可写路径下的project.manifest是不确定正确的(因为如果更新子游戏,子游戏的manifest会覆盖原来的大厅的manifest,更新另外一个游戏又会覆盖),所以我自己写的热更新插件会自己更改项目中的project.manifest,每次直接读项目中的manifest来作为本地版本文件


因为全局我只有这一个地方通过loadcustom的方式加载本地热更配置

不需要,公司原生项目一直都没用 manifest

就是远程加载bundle实现吗,游戏内判断bundle是否存在,不存在的话就拉取?

对的,现在子游戏也是一个bundle,判断没这个bundle,就远程下载zip解压,有这个bundle,就对比bundle内的文件热更bundle

谁家的原生游戏每次进游戏都远程拉,这是热更…

我们项目直接zip都不用 :rofl:,而且对比文件bundle内自带的 md5 load 的时候引擎自己就解决了,都用不着 manifest,就算是不存在下载 zip 直接下最新的不就行了

涉及到很多子游戏,我们子游戏都不准备一开始打包到主包的,直接删除remote文件夹下所有远程bundle文件夹

我们项目也没打到主包啊,我们项目是把bundle版本存在setting文件内的,感觉本地没有 manifest 存在的必要

那就没搞懂你们直接用bundle内置的比对是怎么做的了~

而且你们那种可以监控更新进度吗?

bundle preloadScene函数不就有吗

哦对了,如果你们项目子游戏是单独的项目不是在大厅项目内的话是需要 manifest 文件对比,我们是直接放在大厅项目一起打包

嗯,我们还需要动态修改热更地址

请教下 3.x 下子游戏分项目还会遇到 uuid 冲突的情况吗?怎么解决的?