Egret-Hotupdate 白鹭热更新-增量更新方案

Egret-Hotupdate 白鹭热更新-增量更新方案

介绍

白鹭官方提供的热更新方案中只提供了一种整包更新的方案,但是对于资源量较大的游戏,这种方案就非常不可取了。此方案是根据增量更新的思路设计编写。暂时只有Android 案例。
热更新的版本管理一般分两种:一种是完全前端管理,后端不参与,需要前端独立完成与远程版本库的版本比对和下载最新,优点是简单,缺点是版本控制不灵活;第二种是后端管理,前端从后端获取版本信息,再比对更新,优点是版本控制灵活,后端随意控制,缺点是多一点点运维工作。本案例采用的是后端管理版本的方式编写,想改成前端管理的方式也很容易,只需要把获取最新版本信息的途径从后端转移到前端即可。

设计思路

1.启动APP

2.读取 APP 数据存储 SharedPreferences

current_version=[current version]
new_version=[new version]
new_version_state=0:incomplete/1:update complete
remote_url=http://zzzzzz/[new version]

3.如果 SharedPreferences不存在, 首次读取会自动创建,并根据assets路径下的最初始的版本文件(version.manifest或者project.manifest)记录的当前版本号和资源下载地址,编辑SharedPreferences,保存如下键值对.

current_version=[original version]
new_version=[original version]
new_version_state=1:update complete
new_version_remote_url=http://zzzzzz/[original version]

4.根据SharedPreferences存储的[current_version], 设置EgrestNative预加载目录并启动EgretNative。向后端发送http请求,获取最新发布的版本信息hdConfig(版本号和资源地址)。

hdConfig ={
    remote_url:url,
    current_version:xxx
}

5.比对本地当前版本号与最新版本号.

  • 如果 SharedPreferences[current_version] >= hdConfig[current_version], 表示没有更新,继续进入游戏。
  • 否则表示有更新,并根据新版本信息更新SharedPreference的new_version 和 new_version_state 和 new_version_remote_url。
new_version=[new version]
new_version_state=0:incomplete
new_version_remote_url=http://zzzzzz/[new version]

6.开始更新。首先复制本地当前版本的资源文件夹,如果不存在(初次更新),就复制原始assets文件夹,复制到以最新版本号为名的文件夹内。

7.根据SharedPreference记录的new_version_remote_url,加载project.manifest。

8.比较本地资源文件夹内的project.manifest和最新的project.manifest。

  • 比对查找出本地所有不再使用的文件,等待删除。
  • 比对查找出所有有修改的文件和新增文件,等待下载。

9.从之前复制的最新版本文件夹内删除所有不再使用的文件。

10.下载所有有更新或者新增文件到之前复制的最新版本文件夹内,并派发下载进度。

11.当所有删除和下载任务完成之后,更新SharedPreference如下,并删除上一版本资源文件夹(初次更新除外)。

current_version=[new version]
new_version_state=1:update complete

12.重新初始化 Egret Native(参照step-4).

案例操作

1.进入游戏界面,查看当前版本号,输入最新版本号 和 远端资源服务器地址(这里手动输入版本信息实际上是模拟从服务器端获取来的版本信息),点击检查更新。

step-1.jpg

2.当前端判断有版本更新之后,就可以点击开始更新按钮。

step-2.jpg

3.更新开始后,会有进度变化,知道完成度达到100%,就可以点击重启Egret。

step-3.jpg

4.重启Egret,会在不关闭App的状态下完成Egret重启,重启后游戏版本号已经更新成最新版本。

step-4.jpg

Egret-Hotupdate 源码 + Demo

你可能感兴趣的:(Egret-Hotupdate 白鹭热更新-增量更新方案)