如何判断新资源是否覆盖旧资源?
Resuming from previous unfinished update, 3 files remains to be finished
jsb.EventAssetsManager.ERROR_UPDATING这个错误事件。
产生的原因是之前我的服务端的manifest文件里有不可达的文件路径,1.1版本。
我修改好了服务端的manifest文件,还是报这个错误,但是提高版本号到1.2就可以下载了。
这个是怎么识别出上次未更新下载完全的呢?用的还是之前错误的1.1版本的manifest文件呢?但是我在storagePath目录下没看到manifest文件。
1.6beta6.2
@panda
上次未完成的更新是保存在:“下载路径_temp/project.manifest.temp" 中的,里面会有哪些文件已经下载哪些没有下载的标识
按照这个规则找到了project.manifest.temp文件,多谢panda
mark 热更新
今天试了下热更新,出现了几个问题
ios手机没问题
android手机大部分没问题
安卓模拟器和部分安卓手机有问题
android-19
下载version.manifest和project.manifest等文件时,下载下来的数据变成html数据
如下图
内网测有这个问题
下面是manifest文件,使用的是外网,只有两个manifest文件,可以测试一下
manifest.zip (624 字节)
panda大大,这句话我没看懂啊,每一个项目的启动都是经过main.js开启的吧,在main.js执行game.run()之前都有读取相关的settings.js来设置相关的资源什么的,然后在director.loadScene()之前都有调用 cc.AssetLibrary.init()初始化啊,但是你说的没有初始化 AssetsLibrary,loader 等我没有理解。
当然了,热更新之后重启是能正确的看到更新后的东西的,看论坛那篇大厅+子游戏不重启,看得有点懵了,感觉就差那么一点点就成功了
热更新模块的代码可以通过热更新替换么?
还有有个问题就是热更新完后场景是最新的,但是代码还是跑得旧的,是我操作不对么?
你把新的project.jsc下载下来了吗?重启了吗?
我用的,1.5.2,总感觉热更新不稳定,不知道是不是我的代码写的有问题,就在游戏load的时候,启动检测服务器是否有新版本,但有些时候根本访问不到服务器,网络是通的,好像在windows上测试正常,请问这是什么 原因,大家做热更的时候,一般是怎么做的,我说是的界面,看了官网的DEMO,实在无语,看不懂,因为上面是一定要手动点击更新的,我要的是能自动更新,不要用户确认是否更新,就这一点都没做到,看来我是太菜了,有没有大神指点下
按照官方文档教程就可以实现
你好,我按照demo写的热更新文档。
热更新后,替换的图片(名字没变)可以生效,但是更改的js不生效、把一个场景的图片换了(图片及名字都换了)也不生效。
相关帖子在这儿:http://forum.cocos.com/t/topic/51630
麻烦看看,谢谢!
应该可以吧,更新的时候src 里面project.dev.js包含了新的热更新代码,重新启动执行的应该是新的代码了吧
场景C热更新重启成功了,但是我切换到其他场景再切回来场景C,找不到远程加载的配置文件;
由于我在场景C检查更新,所以每次切回来都会提示我更新版本;
jsb.fileUtils.isFileExist(files)只有第一次重启进入场景C的时候是true, 切换其他场景再返回场景C就一直是false,
请教panda大神!
好吧,自己解决!本地保存版本号与服务端版本号对比,有新版本直接更新即可!
项目里有多个单独资源需要热更新,每个资源单独的manifest文件,如果第一资源下载过程中取消,然后热更第二个资源,会自动的续传第一个资源,显示Simulator: JS: Resuming from previous unfinished update, 3 files remains to be finished.
怎么禁止续传呢,如果取消的话,就删除之前没有下载完整的资源和描述文件?@panda
每个资源的version和project文件名有不同的前缀区分。
取消中断下载的代码为:
console.log('##cancelUpdate called##');
if (this._updating) {
console.log('---------updating can cancel---------');
cc.eventManager.removeListener(this._updateListener);
this._updateListener = null;//
this._updating = false;//
//return;
}
下载成功后,重启之前,把project.manifest的名字加上code前缀。
每次开始热更时候,先删除存储路径_temp文件夹和存储路径文件夹下的project.manifest文件。
目前看满足了我的需求。
@panda 大佬,我用1.6版本的热更方案。 安卓热更时,游戏处于前台 是正常的!
但是一旦在热更过程中切换到后台,等到热更完成后切回来 会导致游戏黑屏。
查了一下原生上的log 发现是readbyte error异常和 query() qCursor is null in DeadObjectException.
并且 我通过看服务器上的输出 。可以确定安卓上切换到后台时 热更没有暂停,还在进行下载。
1.7版本,在checkUpdate的时候,返回getEventCode()值为5,什么意思?



