当前位置:操作系统 > 安卓/Android >>

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。

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


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

[plain] 
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的功能,嗯,我还得加油,早日做出个原型来。今天就到这里。


 

补充:移动开发 , Android ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,