痛点:

1.当一个APK大到接近30MB,或者更大的时候,比如有些游戏可能就几百M,全量更新是一件特别浪费流量和时间的行为,而实际上你非常清楚,你也就改了几百行或是添加了几个资源文件,甚至可能就是一行bug修复,这些变动对于整个包大小来说太微不足道,而这个时候你还要下个30M的包,挺不值得的、

2.传统的bsdiff/bspatch算法,对于某些apk包来讲,是有一些用的,毕竟确实降低了包大小,但当修改内容少于3M时候,意义就不大了,但实际上呢,增量包还能更小的

关于增量更新的理解-LMLPHP

因为:

1.apk在打包生成的时候是有混淆打包压缩的,这个时候把一个整体来diff,是不恰当的,因为压缩算法就破坏了现场,正确的做法应该将解压后的源体 进行diff/patch。

以下是积于解压后源体对比生成的diff。

关于增量更新的理解-LMLPHP关于增量更新的理解-LMLPHP

对比老的bsdiff/patch 小得太太太多了。

以下是对我们产品作的diff patch

通过图例,对比bsdiff/或是源包 新的patch 真的非常滴小,(上述是基于1M=1000K来算的,实际1M=1024k 就是说实际更小)

用户更新最小下载个 91KB大小的patch文件就可以完成新版本的安装。

最多也就2.5M,这样带来的体验会好很多。

03-11 07:43