根据官网文档 传入版本号就能 绕过缓存 加载指定版本的bundle
封装了一个接口
传入 bundle名和版本号

传一个版本号
得到的还是原来的bundle
bundle配置
抖音和微信平台都不行
请问这个API需要怎么调用才能生效
根据官网文档 传入版本号就能 绕过缓存 加载指定版本的bundle
封装了一个接口

bundle配置
抖音和微信平台都不行
请问这个API需要怎么调用才能生效
咦?你这样调用竟然没报错?用的哪个版本?我之前应该是用3.8.0试的,抖音和微信直接报错了,定位过问题,是因为加载bundle时需要干两件事:下载bundle的config.json文件和加载index.js脚本,这边传入版本号之后,就会下载 config.xxx.json 并加载 index.xxx.js;然后微信和抖音所有脚本都是在打包的时候保留在主包下的,此时由于原来的主包目录src/bundle-scripts下不存在index.xxx.js,直接就报加载错误,寄掉了。 
用的3.8.3 你的这个报错src/bundle-scripts下不存在index.xxx.js 我尝试的时候出现过 就是先把这个目标bundle 先removeBundle 然后再去加载 就会报这个错
那可能是有改动过了,我之前没有加载旧的,直接指定版本去加载新的,也是不行。
在微信入口用http请求自己setting.json替换setting.js的version配置就可以了
那我如果要更新 新的bundle是直接改setting里面的 版本号吗 我有试过直接改远程上的setting中的版本号
然后再加载的时候 直接没任何反应
就是这个味 
这个没法解决,后续我就没继续折腾了。
有个绕过bundle的做法就是直接把资源改成普通的remote资源,通过loadRemote接口去下载,这个就随便用了。
顺带吐槽一下,真心没看懂官方为每个bundle都搞一个index.js的用途是啥。目前来看,如果是纯资源的bundle,index.js的内容都一毛一样。如果能增加个区别代码包和资源包的功能,然后资源包不需要绑定index.js,就非常nice了。
我也想过做成普通的remote 但是我在编辑器上浏览的时候 也只能去加载remote吗 我想在编辑器模式下 可以去加载本地的路径 但是用loadRemote 我不知道url 如果用本地路径下的资源要怎么填
可以全部都使用loadRemote的方式加载,或者,试试我新鲜出炉的方案:
function loadHotFixBundle(bundleName: string, options: any, onCompleted: (err: Error, bundle: AssetManager.Bundle) => void) {
let oldBundle = assetManager.bundles.get(bundleName);
if (oldBundle) {
// 卸载旧bundle缓存
oldBundle.releaseAll();
assetManager.bundles.remove(bundleName);
}
let suffix = options && options.version ? `${options.version}.` : '';
let baseUrl = `${assetManager.downloader.remoteServerAddress}remote/${bundleName}/`;
let configUrl = `${baseUrl}config.${suffix}json`;
// 清除可能存在的config缓存
assetManager.cacheManager.removeCache(configUrl);
assetManager.loadRemote(configUrl, (err, data: JsonAsset) => {
if (err) {
onCompleted?.(err, null);
return;
}
let bundle = new AssetManager.Bundle();
let config = data.json as any;
config.base = baseUrl;
bundle.init(config);
assetManager.bundles.add(bundleName, bundle);
onCompleted?.(null, bundle);
});
}
注意:热修复资源要和原始资源存放在相同的资源服务器目录下(assetManager.downloader.remoteServerAddress)。
目前只尝试资源替换,没试过新增的,有需要可以完整测试一下。
我测了下有效 感谢!
新增和删除 感觉没必要 因为是小游戏的热更表 如果你改了表结构或者增加新表的话 你本身代码无法热更的情况下就已经报错了 所以表热更只能改数值 或者添加数据 不能改字段和结构
请问config是指构建后bundle文件夹的config文件吗
是的,没错