当前位置: 代码迷 >> Android >> Android增量晋级功能
  详细解决方案

Android增量晋级功能

热度:13   发布时间:2016-05-01 12:46:28.0
Android增量升级功能

Google I/O 2012大会上Google预览了Jelly Bean 4.1系统的一些新功能,由于是x.1的版本号,所以改进不是很大,但是还是有一些给力的内容,其中的一条就是Smart app updates,也就是增量升级,你可以只下载应用升级的数据,而不必下载整个应用了。在2012年9月29号,腾讯的应用宝也退出了增量更新功能,举个例子来说,比如你现在要更新微信,旧版有10M,新版有14M,那么你不需要下载完整的14M文件,只需要下载更新部分就可以,而更新部分可能只有5、6M(不是14减10)。腾讯发来一份他们对增量升级的研究报告:


现在就能大概知道增量升级的原理了:服务器端比较差异生成patch,用户下载的是patch文件,手机上的商店程序需要把data/app下面的相应apk拷贝到sd卡上然后与patch合成,最后生成新的apk。

网上搜索到大神写的一篇博客,大家可以参考:http://blog.csdn.net/hmg25/article/details/8100896。

这里借用一个小实验,实验材料请大家去http://download.csdn.net/detail/hmg25/4676737下载。我这里把实验步骤演示一下(在win7下)。

首先模拟服务器端的生成patch的过程:

bsdiff.exe   ..\iReader1.6.2.0(v35).apk   ..\iReader1.8.0.1(v40).apk   ..\iReader.patch
然后是手机上的组装过程:

bspatch.exe  ..\iReader1.6.2.0(v35).apk   ..\new.apk    ..\iReader.patch
最后散列,比较一下iReader1.8.0.1(v40).apk和new.apk文件:

文件名称:test\iReader1.8.0.1(v40).apk
 文件大小:3400660 字节
 修改时间:2012年10月22日 23:48:38
 MD5     :4DBCE86AAE8987A8B115670D1AC2364D
 SHA1    :DE249C9C3A961F8A5FF86073BA4EDEFE4627F1B1
 CRC32   :285E9531
 
 
 文件名称:test\new.apk
 文件大小:3400660 字节
 修改时间:2012年11月22日 14:53:08
 MD5     :4DBCE86AAE8987A8B115670D1AC2364D
 SHA1    :DE249C9C3A961F8A5FF86073BA4EDEFE4627F1B1
 CRC32   :285E9531

可以看出散列值是一样的,说明生成的新的apk是OK的。

这里面涉及的知识还是比较多的,比如服务器端使用脚本语言编写自动化脚本比较差异,手机上需要使用JNI去调用bspatch的功能,嗯,我还得加油,早日做出个原型来。今天就到这里。




  相关解决方案