-
Creator 版本:1.9.1
-
目标平台: iOS / Android / 模拟器
-
详细报错信息,包含调用堆栈:
-
重现方式:热更新版本比较
由于我需要动态变更热更新服务器的地址,所以每次检查热更新的时候,都会自己生成一个manifest文件,变更里面的远程地址,检查更新时,就使用这个我生成的manifest文件
this._am.loadLocalManifest(this._storagePath + “/newProject.manifest”);
现在出现的情况是,首次热更新正常,会从服务器下载文件并保存下来,但是当我再次打开app的时候,程序会自己把握热更新的目录给删除掉,具体的情况看这个帖子
http://forum.cocos.com/t/topic/62429
后来发现,
热更新的源码中 AssetManagerEx 中 loadLocalManifest函数,如果本地的热更新文件夹中,存在一个project.manifest 的文件的话,代码会在比较project.manifest 和 我自己加载的 manifest 文件,当自己文件的版本>=project.manifest 文件的话,程序就会清空原来的热更新目录。
可能开发人员是为了保证大版本更新的时候,程序会清空原本的热更新目录,源码中对新版本的判断用的是 大于等于>= 造成了我自己的manifest的版本 与 project.manifest 版本一致的时候,也会清空目录
这里用的是 >= 0 判断
版本一致 就会清空目录
我现在的处理办法是每次成功热更新之后,就手动删除掉本地的 project.manifest,但是这样的话,如果有大版本的更新,就可能需要另外写代码处理热更新目录了。
发现论坛中有几个朋友也遇到这样的问题
http://forum.cocos.com/t/topic/60336
http://forum.cocos.com/t/topic/57720


