浅析 android 应用增量升级(差分升级)
(2013-03-19 13:05:52)
标签:
增量
省流量
分包
升级
差分
很久没有更新博客了,真是堕落啊,几次想提起笔,却总是被各种琐事耽搁,以后会多写
文章记录点滴。随着 应用体积的不断增大,以及应用版本发布的不断
更迭,用户的升级成了一个问题, 也意识到不断更新应用对用户流量的损耗,在
上提及的,即应用增量升级,或者叫做差分升级的做法,
并在新版本的 中得到支持,某天在和群友聊天是扯到这方面的话题,好奇就
稍微研究了一下。
增量升级的原理
今天我们就来实现类似的应用的增量升级。其实增量升级的原理很简单,即首先将应
用的旧版本 与新版本 做差分,得到更新的部分的补丁,例如旧版本的 有
,新版的有 ,更新的部分则可能只有 左右这里需要说明的是,得到的差分包
大小并不是简单的相减,因为其实需要包含一些上下文相关的东西,使用差分升级的好处
显而易见,那么你不需要下载完整的 文件,只需要下载更新部分就可以,而更新部分
可能只有 、 ,可以很大程度上减少流量的损失。
在用户下载了差分包之后,需要在手机端将他们组合起来。可以参考的做法是先将
手机端的旧版本软件多半在下,复制到 ! 卡或者 ""# 中,将它们和之前的差
分 "# 进行组合,得到一个新版本的 应用,如果不出意外的话,这个生成的
和你之前做差分的 是一致的。
增量升级的操作
在了解基本的原理之后,我们来逐步解决其中的各个难点。首先是差分包 "# 的生
成。如果做过 手机 $ 升级的同学应该注意到,在 %& 中的 "# 文
件夹中有需要与系统文件同名但是以 '''%为后缀的文件,他们就是生成的差分 "# 文
件。我们可以借鉴 $ 系统升级的差分生成工具来生成我们单个应用 的差分 "#
文件。$ 系统差分包的制作,使用命令:
%()))*+**,)--.旧包/.新包/.差分包名
/
在查阅 *+**,)的代码可知,是在函数
0"$" 里生成差分包的,在这个函数里边创建了