我按照文档的热更新流程,先在项目中添加了热更新组件,指定了本地的project.manifest在asset目录下,本地manifest的版本1.0.1,然后修改了一些程序和UI,进行构建,然后用
node version_generator.js -v 1.0.2 -u http://远程地址/remote-assets/ -s ../jsb2/jsb-binary/ -d remote_manifest/
…/jsb2/jsb-binary/是我构建的jsb-binary目录,remote_manifest/是我创建用于保存project和version的目录,生成成功,然后我将jsb-binary下的res和src目录上传到http://远程地址/remote-assets/;再将生成的project.manifest和version.manifest上传到http://远程地址/remote-assets/。其中在本地的project.manifest中指定了远程的project.manifest和version.manifest地址:
"packageUrl":"http://远程地址/remote-assets/","remoteManifestUrl":"http://远程地址/remote-assets/project.manifest","remoteVersionUrl":"http://远程地址/remote-assets/version.manifest","version":"1.0.1"
客户端打开游戏可以检测到更新也可以下载更新,但是下载后重启游戏还是以前的版本界面。但是本地的版本已经改成1.0.2
检查搜索路径的设置
我下载的热更新资源包都放在本地目录:
this._storagePath = ((jsb.fileUtils ? jsb.fileUtils.getWritablePath() : '/') + 'HotUpdateSearchPaths');
下载完成后,我设置了搜索目录:
var searchPaths = jsb.fileUtils.getSearchPaths(); var newPaths = this._am.getLocalManifest().getSearchPaths(); Array.prototype.unshift(searchPaths, newPaths); cc.sys.localStorage.setItem('HotUpdateSearchPaths', JSON.stringify (searchPaths)); jsb.fileUtils.setSearchPaths(searchPaths);
在main.js里也添加了:
if (cc.sys.isNative) {
var hotUpdateSearchPaths = cc.sys.localStorage.getItem(‘HotUpdateSearchPaths’);
if (hotUpdateSearchPaths) {
jsb.fileUtils.setSearchPaths(JSON.parse(hotUpdateSearchPaths));
}
}
还是不行…
是不是没更新完,进度条一闪就没了。
不是,刚才试了一下,我最先在初始化AssetManager的时候是按照官方示例:
this._am = new jsb.AssetsManager(’’, this._storagePath, versionCompareHandle);
刚才改了一下:
this._am = new jsb.AssetsManager(this.manifestUrl, this._storagePath, versionCompareHandle);
this.manifestUrl是程序目录下的project.manifest。可以下载,替换的图片(名字没变)可以生效,但是更改的js不生效、把一个场景的图片换了(图片及名字都换了)也不生效。
这是正常的结果,因为 unshift 根本不会改变数组的值,所以 searchpath 没变,你运行这个看结果
var searchPaths = ['a']
var newPaths = ['b']
Array.prototype.unshift(searchPaths, newPaths)
console.log(searchPaths)
官方的示例有问题,应该写 Array.prototype.unshift.apply(searchPaths, newPaths)
改了也不行,Array.prototype.unshift和Array.prototype.unshift.apply有区别吗,都是在头部添加元素
你的问题解决了吗我的也是这个问题啊 ,,急急急急急急急急急
老大哥解决了吗?遇到了同样的问题
同问。我也遇到了
2.0+版本是嘛 cocos自带模拟器不行 打包安卓后测试成功了
我用夜神模拟器测试,不行哎。就是这个问题
我这里是能下载更新,但是重启后还是旧版本的,兄弟遇到这个问题了吗?
我也碰到这个问题,请问有解决了的吗????
我也是能下载更新,但是重启后还是旧版本的,怎么解决
解决了吗大佬?我也是这样,资源不生效
没人处理吗