这边有需求是远程bundle和热更同时需要,可远程bundle不勾选MD5构建的话,http就有资源缓存问题,勾了MD5的话,热更新后main里面的代码引用也会有问题,请问有没有办法更改构建流程来指定部分目录不启用MD5构建?
可以这样子试试:
- 打包时取消勾选MD5缓存;
- 在构建流程钩子函数中增加自定义的
onAfterBuild回调,遍历所有远端包,自行生成MD5(所有资源+对应bundle的js文件)
注意事项:
- 遍历所有远端包可直接通过读取
src/settings.json的remoteBundles字段获取。 - 远端包(
config.json与js文件)增加md5后,需要在src/settings.json的bundleVers字段下增加对应的记录。 - 远端包内的资源增加md5后,需要在远端包的配置文件(
config.json)中增加对应的版本记录。
感谢回答,目前还找到的方法是将main.js也加入热更新列表中,不过需要在main.js注入前设置好检索路径,这边发现在native\engine\common\Classes\Game.cpp的init中调用cc::FileUtils的方法会产生致命错误直接闪退,不知道什么原因 
这个没用过,不太清楚,可以看下能不能抓到崩溃日志。有一种可能是这个cc::FileUtils里头可能有一些东西还没有初始化好 
app和资源都用md5模式。看一下打包完的main.js,其实就用到三个文件,把这三个文件配置到远端的json里面,第一次读远端,第二次读本地,每次启动比较版本号,这样就完全热更了。类似这样:
,启动读取project_main的三个文件。下载version文件的时候就把project_assets的文件都下载下来。是将main.js执行的文件变成动态的吗?毕竟如果不在原生端处理main.js就无法更新,指向的文件名称就没法变动,改成动态读取远程文件确实可行,不过要修改main.js逻辑


