android app整包更新,Android App应用包增量升级(one)

Android增量升级这东西很不错,当时我们这运营的人把百度的一个管理软件拿过来说他们这个升级包提示可以节省流量是怎么回事,当时各种猜测,难道是有什么特殊算法将包压缩了?特意试了一下压缩,根本大小就没变化~后来开发的人找到是增量升级,文章抛给我研究下。拿过来后发现如果单纯的用命令处理真的很简单,当时想法也是很简单,就是让开发把bspatch这个命令内嵌到Apk包里,反正它不大,但后来我在Android模拟器里试了一下,发现根本不行,在继续看参考的那篇文章,发现下面还有,c++这部分要弄成so包,然后在通过javah 去生成一个中间的class才能执行bspatch(另一个开发研究的,在参考的那篇文章里也有这个处理方法)

bsdiff网站:http://www.daemonology.net/bsdiff/下载bsdiff: 百度网盘

windows:

http://sites.inka.de/tesla/download/bsdiff4.3-win32.zip (32bit)

http://sites.inka.de/tesla/download/bsdiff4.3-win32-src.zip (32bit)

linux:

http://www.daemonology.net/bsdiff/bsdiff-4.3.tar.gz

执行

tar -zxvf bsdiff-4.3.tar.gz

cd bsdiff-4.3

编辑Makefile,因为编译器的问题多数编译会出问题(Makefile:13: *** 遗漏分隔符 。 停止。)

原因是:目标体下一行的,命令要用TAB键开头,且不能隔一行。

也就是说在.ifndef的前面要有TAB开头才可以~因为他是安装的下一个子集命令。

修改文件为:

[root@kinggoo.com bsdiff-4.3]# cat Makefile

CFLAGS += -O3 -lbz2

PREFIX ?= /usr/local

INSTALL_PROGRAM ?= ${INSTALL} -c -s -m 555

INSTALL_MAN ?= ${INSTALL} -c -m 444

all: bsdiff bspatch

bsdiff: bsdiff.c

bspatch: bspatch.c

install:

${INSTALL_PROGRAM} bsdiff bspatch ${PREFIX}/bin

.ifndef WITHOUT_MAN

${INSTALL_MAN} bsdiff.1 bspatch.1 ${PREFIX}/man/man1

.endif

开始编译安装bsdiff和bspatch

[root@kinggoo.com bsdiff-4.3]# make

[root@kinggoo.com bsdiff-4.3]# ls

bsdiff bsdiff.1 bsdiff.c bspatch bspatch.1 bspatch.c Makefile

好了,我们要得到的两个文件bsdiff、bspatch都有了

由于测试一下,所以我就直接传到这台机器上两个apk文件,名为v1.1.apk、v1.0.apk

先来看下当前文件夹内文件信息(因为是测试,所以是直接在bsdiff源码目录下直接操作的)

注意一下,那两个apk文件的大小

[root@kinggoo.com bsdiff-4.3]# ls -l

总计 11260

-rwxr-xr-x 1 root root 14102 05-28 14:25 bsdiff

-rw-r--r-- 1 1001 1002 2226 2005-08-17 bsdiff.1

-rw-r--r-- 1 1001 1002 10107 2005-08-17 bsdiff.c

-rwxr-xr-x 1 root root 11463 05-28 14:25 bspatch

-rw-r--r-- 1 1001 1002 2038 2005-08-17 bspatch.1

-rw-r--r-- 1 1001 1002 5996 2005-08-17 bspatch.c

-rw-r--r-- 1 1001 1002 324 05-28 14:25 Makefile

-rwxr-xr-x 1 root root 3805331 05-28 14:53 v1.0.apk

-rwxr-xr-x 1 root root 3740504 05-28 14:53 v1.1.apk

v1.0.apk大小3805331(3.8M)

v1.1.apk大小3740504(3.7M)

由于1.1有版本优化,所以反而小了。不用管他,执行如下操作:

[root@kinggoo.com bsdiff-4.3]# ./bsdiff v1.0.apk v1.1.apk diff.patch

格式: bsdiff 上一版本apk包 本版本 对比增量差异部分

通过ls -l查看发现多出 diff.patch文件,大小为1842353(1.8M),用户也就只需要下载这1.8M大小的增量包即可

在使用bspatch,将其增量部分与上一版本包合成

[root@kinggoo.com bsdiff-4.3]# ./bspatch v1.0.apk v1.1_diff_patch.apk ./diff.patch

对合成升级版本的apk包及最新版本apk包进行MD5、SHA1效验

md5效验

[root@kinggoo.com bsdiff-4.3]# md5sum v1.1_diff_patch.apk #合成包

a7d9af832a5e546e3fdce2d1b29c930e v1.1_diff_patch.apk

[root@kinggoo.com bsdiff-4.3]# md5sum v1.1.apk #原始升级包

a7d9af832a5e546e3fdce2d1b29c930e v1.1.apk

sha1效验

[root@kinggoo.com bsdiff-4.3]# sha1sum v1.1_diff_patch.apk

94fe99bc40bab8908bccce70aa6a68c5a4fd11b1 v1.1_diff_patch.apk

[root@kinggoo.com bsdiff-4.3]# sha1sum v1.1.apk

94fe99bc40bab8908bccce70aa6a68c5a4fd11b1 v1.1.apk

以上均无问题

最后将合成包安装到2.3.3系统上是没有任何问题!

下步是生成给android应用内调用的.so包,下篇文章会介绍,暂时没时间。

- THE END -

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值