前言

在前几年,整体移动网络环境相比现在差很多,加之流量费用又相 对较高,因此每当我们发布新版本的时候,一些用户升级并不是很 积极,这就造成了新版本的升级率并不高。而 google 为了解决了 这个问题,提出了 Smart App Update,即增量更新(也叫做差分升级)。 尽管现在网络环境有了很大的提升,但一个不争的事实就是应用越 做越大,因此,增量更新在目前的仍然是一种解决 APP 更新包过 大的有效方案。今天,我们就来聊聊增量更新。

什么是增量更新?

增量更新的关键在于如何理解增量一词。来想想平时我们的开发过程,往往都是 今天在昨天的基础上修改一些代码,app 的更新也是类似的:往往都是在旧版本 的 app 上进行修改。这样看来,增量更新就是原有 app 的基础上只更新发生变 化的地方,其余保持原样。 与原来每次更新都要下载完整 apk 包的做法相比,这样做的好处显而易见:每次 变化的地方总是比较少,因此更新包的体积就会小很多。比如“师父说”安装包的 体积在 6m 左右,如果不采用增量更新,用户每次更新都需要下载大约 6m 左右 的安装包,而采用增量更新这种方案之后每次只需要下载 2m 左右的更新包即 可,相比原来做法大大减少了用户下载等待的时间。

增量升级优势在哪里?

  • 大小非常小
  • 安全-必须是特定的节点才能进行升级
  • 相对于整包来说更容易控制

为什么会减少升级代价?

例如旧版本的 APK 有 5M,新版的有 8M,更新的部分则可能只有 3M 左右(这里需要说明的是,得到的差分包大小并不是简单的相 减,因为其实需要包含一些上下文相关的东西),使用差分升级的 好处显而易见, 那么你不需要下载完整的 8M 文件,只需要下载更新部分就可以, 而更新部分可能只有 3、4M,可以很大程度上减少流量的损失。

增量更新原理

增量更新的原理非常简单,简单的说就是通过某种算法找出新版本和旧版本不一 样的地方(这个过程也叫做差分),然后将不一样的地方抽取出来形成所谓的更 新补丁(patch),也称之为差分包。客户端在检测到更新的时候,只需要下载 差分包到本地,然后将差分包合并至本地的安装包,形成新版本的安装包,文件 校验通过后再执行安装即可。本地的安装包通过提取当前已安装应用的 apk 得 到。