什么是增量更新?
现在的APP安装包体积越来越大,几百兆甚至上G的,当APP更新时不再是消耗大量的流量下载一个完整安装包,而是消耗相对很少的流量下载一个增量包(差分包),采用谷歌Smart App Updates更新机制,就能实现APP的更新了。
用户手机上已经安装着某个APP,然后只需下载一个增量包,手机上的APP和增量包合并生成完整的新APP,并引导用户安装,这个过程就是增量更新。
很多APP都采用了谷歌Smart App Updates更新机制,例如 :微信,支付宝,Play商店,豌豆荚等等。谷歌官方称采用Smart App Updates更新机制,可以使用户下载的apk是完整apk的三分之一,也就是说可以帮用户节省三分之二的下载流量。

据上图所示,更新一个APP,传统方式下载apk需要30M流量,而采用增量更新机制,只需下载10M的patch文件(增量包)就可以了。
如何用工具生成增量文件?
1.下载bsdiff_win_exe.zip并解压到本地。
2.打一个旧版本安装包(例如:v6.3.8.apk),再打一个新版本的安装包(例如:v6.3.9.apk),并一同放在刚才解压的目录下。
3.打开Windows命令行工具,进入到解压目录,输入 bsdiff.exe v6.3.8.apk v6.3.9.apk.apk v6patch.patch,然后回车可以看到下图:

bsdiff.exe 是用来生成增量包的,还有一个bspacth.exe是用来生成新的安装包的,v6patch.patch文件就是我们刚刚生成的增量包。
如何用工具生成新的安装包?
现在我们有了patch文件,和旧的安装包,就可以生成新的安装包了,下面介绍两种方式生成新的安装包。
方式一:
用工具生成的方法。打开Windows命令行工具,进入到解压目录,输入 bspacth.exe v6.3.8.apk new.apk v6patch.patch ,然后回车可以看到下图:

这个new.apk就是我们生成的新的安装包了。
方式二:
用移动端代码生成,也就是Android代码实现增量更新。增量文件服务端生成好后,当APP运行启动时,我们开始检查版本更新,如果有更新就开个子线程去下载增量文件,下载完成再与当前运行的APP进行合并生成新的APP,并安装.
1.在project的build.gradle添加如下代码(如下图)

2. 在Module的build.gradle添加依赖(如下图)

3.添加权限

4.集成代码(如下图)


以上就是android实现增量更新的代码,通过代码的方式就能像方式一那样生成新的APP安装包了。
最后记得将增量包上传至服务器,然后供移动端下载此包。就可以测试增量更新的功能了!
今天的分享结束了,再见~
网友评论