在确认热更资源有被正确下载到热更目录下之后,根据楼上所说的 native.fileUtils.getSearchPaths() 获取这个搜索列表就可以基本可以找到为啥不生效的问题了:热更目录必须被设置到搜索路径的最前面(可以使用unshift直接插入)。
下面分享一下我之前遇到过觉得比较坑的一个点:
cocos的远程服务器资源地址必须是固定的一个值,每次打包导出project.manifest文件时,该路径都必须一致:
- 版本检测时,是根据本地文件中指定的
remoteVersionUrl字段对应的值获取远端资源版本信息的;
- 资源下载时,是根据远端文件中指定的
packageUrl和remoteManifestUrl比对然后下载对应资源的。
我以前在unity弄过的热更方案,是基于版本存放的热更资源(地址为 https://XXXX/v1、https://XXXX/v2 之类),这种就没法直接套用cocos的热更方案,而是需要通过额外的服务或者存放在固定OSS上的版本信息文件自行解析出对应的版本号,再走cocos的热更。
顺便一提,如果想要配置多个CDN地址去提高链路可靠性(常见于出海产品,海外部分地区网络环境比国内环境差很多,需要配置专线),也是需要先链路选择后再走cocos的热更逻辑。
再顺便提一个 native.fileUtils.getSearchPaths() 获取的是当前使用的搜索路径列表,热更成功后,最好判断一下列表的第一项是否是最新的热更目录,是的话就不需要更改搜索列表;不是的话,看该目录是否还有效(旧热更资源目录),如果无效需要移除后再插入新路径,否则也会有问题。