assestmanager热更新做增量更新的一个大坑

如果制作多个更新包,如

“file1” : {
“path” : “file_1_0.0.1.zip”,
“md5” : “xxx”,
“compressed” : true,
“group” : “1”
},
“file2” : {
“path” : “file_2_0.0.2.zip”,
“md5” : “xxx”,
“compressed” : true,
“group” : “2”
}

更新流程是同时下载2个包,如果那个包先下载完成,就先解压那个包,如果file2比较少,就会先解压file2,再解压file1,也就意味着,如果你想用file2做增量更新,file1和file2都同时有相同文件的要更新,那么将会很危险,因为可能你不知道是哪个最终留在用户手机里面,很是坑爹,应该要按顺序解压才对嘛

还有这个问题
http://www.cocoachina.com/bbs/read.php?tid-281126.html
都已经快一年了,网友还提供了解决方案,但官方一直不重视

到底是没有人使用这个assestmanager? 还是大家都没有遇到问题? 还是大家都各自hack代码去解决问题,懒得理官方版呢? 官方不作为,坑的就是每个新入坑的用户

这个问题还是没解决吗

不使用增量 尽量修改代码 少改资源吧

实在不行的话 自己写一套热更新其实也不难实现

已经后悔使用官方热更方案了。。。

group 是用来做增量更新的 不是 版本更新 版本更新用版本号和md5区分不同的版本

既然做zip包了,为什么不一个版本只更新一个包?只有增量更新才用group,还是要先理解引擎封装的东西不然使用起来很多坑是自己埋的,当然引擎封装也是有些不完善的地方

赞同 :relieved:

3.15 的里面,实现了单文件更新,速度还不错,有条件的可以尝试下,
之前 3.10 和 3.8 都有下面2个bug,其他版本没有具体看:
1,没有创建目录,
2,解压顺序有问题,
解决方案:1-》自己加检测是否存在目录,创建目录,
2=》更新包自己加一个前缀,来确定是哪一个,在解压的时候,排序解压

ps:已经把引擎更新到了3.15,下载速度还不错,有条件的可以更新引擎到3.15,我是从3.10升级上来的,只要你想,没有什么不可以

@minggo
存在 jacklling说的bug吗[quote=“jacklling, post:10, topic:32109, full:true”]
3.15 的里面,实现了单文件更新,速度还不错,有条件的可以尝试下,解压有2个bug
1,没有创建目录,
2,解压顺序有问题,
解决方案:1-》自己加检测是否存在目录,创建目录,
2=》更新包自己加一个前缀,来确定是哪一个,在解压的时候,排序解压
[/quote]

https://docs.cocos.com/creator/manual/zh/advanced-topics/assets-manager.html
官方说法
Cocos 默认的热更新机制并不是基于补丁包更新的机制,传统的热更新经常对多个版本之间分别生成补丁包,按顺序下载补丁包并更新到最新版本。Cocos 的热更新机制通过直接比较最新版本和本地版本的差异来生成差异列表并更新。这样即可天然支持跨版本更新,比如本地版本为 A,远程版本是 C,则直接更新 A 和 C 之间的差异,并不需要生成 A 到 B 和 B 到 C 的更新包,依次更新。所以,在这种设计思路下,新版本的文件以离散的方式保存在服务端,更新时以文件为单位下载。
所以zip方式是没法增量更新的,只能单个文件更新,热更新资源多的话可以用官方提供的脚本生成manifest
https://github.com/cocos-creator/tutorial-hot-update