简述Android增量更新及bsdiff工具的使用

一、Android 增量更新简介
首先需要明确,Android增量更新与热修复是不同的技术概念。

热修复一般是用于当已经发布的app有Bug需要修复的时候,开发者修改代码并发布补丁,让应用能够在不需要重新安装的情况下实现更新,主流方案有Tinker、AndFix等。

而增量更新的目的是为了减少更新app所需要下载的包体积大小,常见如手机端游戏,apk包体积为几百M,但有时更新只需下载十几M的安装包即可完成更新。

增量更新原理简单来讲,就是通过二进制算法找出新版本和旧版本安装包的差异,并将差异提取出来生成所谓的补丁包(差分包)。移动端检查更新时,只需要向服务器申请下载相对应的补丁包,然后将差分包与自身旧版本apk合并生成最新版本的apk。最终安装合并生成的apk即可完成版本更新。

二、增量更新过程的演示
增量更新主要有两个过程,第一是后台将最新的apk(v1.0.1)与旧版本(v1.0.0)做对比,并生成差分包。第二步是移动端下载相对应的差分包,并在本地合并生成完整的最新apk,并引导用户安装。

对于apk包的差分和合并,需要借助bsdiff工具来实现

下载bsdiff_win_exe.zip并解压到本地


111.jpg

其中bsdiff.exe是window用来生成差分包的工具,而bspatch是用来合成差分包的工具

2.1 生成差分包

首先,分别打一个旧的apk(v1.0.0.apk),和一个新的apk(v1.0.1.apk),并存放在之前解压的目录。

然后打开Windows命令行工具,切换到该目录,打入命令bsdiff v1.0.0.apk v1.0.1.apk patch.patch

就能在目录下看见生成的差分包patch.patch

2.2 合成差分包

保持在当前目录,命令行输入bspatch v1.0.0.apk new.apk patch.patch

就能在当前目录下看见合成的完整安装包new.apk

生成的new.apk与v1.0.1.apk是完全相同的,安装即可。

文章来源于:https://zhuanlan.zhihu.com/p/87506124

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一,背景 在我们项目上架到各大应用市场平台后,这时我们的APP修改了一下bug后,这时一般我们需要重新上架新版本,...
    8ba406212441阅读 7,523评论 0 27
  • 在前几年,整体移动网络环境相比现在差很多,加之流量费用又相对较高,因此每当我们发布新版本的时候,一些用户升级并不是...
    涅槃1992阅读 10,827评论 2 39
  • 前言: 增量更新已经出来几年了,而一些大的公司早就实现了增量更新。增量更新相较于全量更新的好处不言而喻,利用差分算...
    CaoMeng阅读 5,274评论 0 2
  • 1、概述 Android很多应用没有使用到NDK开发,但想要开发更高级的应用,NDK的学习是必然之路。NDK的好处...
    自然like阅读 5,682评论 1 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 12,735评论 28 53