cocosCreator热更新总结
2019-04-01 本文已影响1人
奋斗的阿默
基本流程
客户端检查版本->客户端下载资源配置文件->对比本地配置文件->
挑出需要更新的文件->多线程下载更新文件至缓冲文件夹->校验文件md5->将缓冲文件夹移动至正式文件夹->设置资源搜索路径然后重启。
基本流程都大同小异。需要重点关注几个点:
1.检查版本
本地project.manifest存放了版本号、而客户端是使用version.manifest来存放的,为什么会不同呢?因为project.manifest是个大文件,如果每次检查版本更新都让用户去下载这么一个庞然大物,势必会对用户的体验造成影响。那么我们下去下载一个几kb的文件下来对比一下版本,如果需要更新,再去下载project.manifest来进行对比。
2.校验本地版本情况
这点在上面流程里面是没有提到的。这是放在流程最前的。当你本地缓存了很多资源,这个时候我们进行大版本的更新。那么覆盖安装的情况下缓存资源是不会被清除的,那么我们新版本势必会去读取到旧的资源和代码,这样会造成不可估量的错误。因此我们会给每个客户端定义一个大版本号,在校验过后会存储起来。当新版本安装的时候会去获取旧版本号,然后如果是新版本安装,就会去清除所有资源缓存内容。
3.多线程下载
下载的线程是可以进行限制的。下载过程中如果有文件下载失败了,那么最终会提示热更新失败,失败的情况下文件都会保存在缓冲文件夹下。等待下一次重试的时候继续下载。
4.校验文件md5
下载过程中可能造成文件出现有异常错误,虽然文件正常下载,但是已经损坏。所以需要在下载每个文件之后对其进行校验。校验的方式需要和加密的时候一致。
5.搜索路径配置
目前由于引擎问题可能导致js层面的配置路径无效,因此最好在c++那边进行配置。
需要增加的按钮
重试按钮:下载失败时重试。使用cocos提供的下载失败文件的接口。
修复按钮:清除所有资源重新进行更新。常规操作移除所有热更文件夹。