对了,你的资源全得放到getwritablePath()+path+"/assets/"目录下,这是硬伤
所有的资源都要放到assets目录下,这是前提 ,否则就算下下来了也没用
是build目录
是我服务器上的remote-assets/android/assets/* 对应本地bulid/android/assets/* 这样?
是我服务器上的 remote-assets/android/assets/* 对应本地bulid/android/assets/* 这样?
是的,是你build出来的文件夹里的 
好的谢谢。我先解决native.fileUtils.setSearchPaths 不生效的问题吧。感觉解决这个就离成功不远了呢。
所以这就是 manifest 和 bundle 热更的区别 
bundle 热更只需要调用一个函数就行了,除了版本号其他什么都不管
你下载的文件得保存在可写路径的assets目录下,这点很重要,失败也是因为这个,比如说getWritablePath()+“hotupdateRoot/assets”,要不然就算是下载成功了也找不到
你的native.fileUtils.getSearchPaths();全是内置目录 都没有你的自定义目录 浓墨老哥说得很清楚了 你自己仔细看
感谢各位好心大佬回帖,问题似乎已经解决了。
原来一直不生效的问题,就是没有执行到 native.fileUtils.setSearchPaths(paths);
我在hook.js 中调整了一下,已经可以正常拉取到更新了。不清楚的是为啥之前官方案例hook.js会闪退,有点奇怪。
(function () {
const native = globalThis?.jsb || window.jsb || native;
if (typeof native === 'object') {
var hotUpdateSearchPaths = localStorage.getItem('HotUpdateSearchPaths');
if (hotUpdateSearchPaths) {
var paths = JSON.parse(hotUpdateSearchPaths);
native.fileUtils.setSearchPaths(paths);
var fileList = [];
var storagePath = paths[0] || '';
var tempPath = storagePath + '_temp/';
var baseOffset = tempPath.length;
if (native.fileUtils.isDirectoryExist(tempPath) && !native.fileUtils.isFileExist(tempPath + 'project.manifest.temp')) {
native.fileUtils.listFilesRecursively(tempPath, fileList);
fileList.forEach(srcPath => {
var relativePath = srcPath.substr(baseOffset);
var dstPath = storagePath + relativePath;
if (srcPath[srcPath.length - 1] === '/') {
native.fileUtils.createDirectory(dstPath)
}
else {
if (native.fileUtils.isFileExist(dstPath)) {
native.fileUtils.removeFile(dstPath)
}
native.fileUtils.renameFile(srcPath, dstPath);
}
})
native.fileUtils.removeDirectory(tempPath);
}
}
}
})();
+1
在资源文件里固定热更地址,感觉完全不适用于网络游戏
我们都是改引擎 由服务端控制热更地址
请问热更下载新资源中闪退了,比如下载了20%资源后就闪退了,这种是哪里的问题呢?
看看崩溃前的日志
大佬,我有个问题想要请教,我这边热更是通过下载zip包解压到包体的可读取路径,添加了搜索路径优先级也是最高级,但是始终不会读取新的路径上的资源,一直读的老的
看了下 代码很少
但是不懂原理
也不知道有什么约定俗成的东西
热更的内容要怎么准备和部署呢
什么叫 bundle热更 还没见过这个方式
在game.js或者main.js中通过native.fileUtils.getSearchPaths()获取的第一个路径是更新资源存放的位置吗?如果是的话有点奇怪了,没遇到路径设置正确,读取错误的情况
搜索路径是添加正常了的 在游戏引擎层打印也是有的 在第一位
大概逻辑是这样大佬 我这边有个项目需要动态下载热更来实现包体功能的切换,比如我将需要修改的文件解压在绝对路径下如(/data/user/0/com.aaa.aaa/files/hotup/assets/resources/native/46/312311efc-9598-4ca7.jpg),本身整包中资源路径在assets/resources/native/46/312311efc-9598-4ca7.jpg,应该在引擎层的哪个接口去处理,/data/user/0/com.aaa.aaa/files/hotup这个的搜索路径也是添加成功并push在最上层,其他的json文件也能生效,如图片音频特效就无法生效,引擎为3.8.4 打包环境为安卓 有这方面的解决方法吗