增量差分更新即将已安装apk与服务器端最新apk进行二进制对比,得到差分包,用户更新程序时,只需要下载差分包,并在本地使用差分包与已安装apk,合成新版apk安装即可。

apk文件的差分使用bsdiff工具中的bsdiff函数生成,差分包的合成使用bsdiff工具中的bspatch函数生成。

BSDiff通过引入diff string的概念,大大减少了要记录的指针控制字的数目,从而使得patch包更小。

Diff:

  1. 对old文件中所有子字符串形成一个字典
  2. 对比old文件和new文件,产生diff string和extra string
  3. 将diff string 和extra string 以及相应的控制字用zip压缩成一个patch包

HDiffPatch是一个高效的diff/patch实现,比bsdiff更快(只需1/4时间),占用的内存更小(2/3内存),更容易使用和集成,得到的diff结果压缩后也经常比bsdiff更小或相当(一般小10%以上)!

HDiffPatch项目地址

参考博客