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

news/2024/12/21 10:54:55/

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 -


http://www.ppmy.cn/news/485486.html

相关文章

这是一款走心的最新测评:英伟达史上最便宜AI硬件抗造不?

Raspberry Pi是制造商选择的单板计算机,但AI不是它的强项。 Nvidia新推出的99美元Jetson Nano开发套件可以让业余爱好者和程序员都有机会以实惠的价格玩深度学习和神经网络。 Nvidia多年来一直在生产其Jetson系列AI电脑,但它们的价格远远超出了大多数消…

【数据科学】使用Python建立你的数据处理肌肉记忆

数据预处理流程 在搜索语法时,您是否因为破坏数据分析流而感到沮丧?为什么你在第三次查找之后仍然不记得它?这是因为你还没有足够的练习来为它建立肌肉记忆。 现在,想象一下,当您编写代码时,Python语法和函…

利用opencv从USB摄像头获取图片 获得摄像头编号

本文转自博客园-Arkenstone 由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的。 安装opencv 安装的步骤可以按照之前这个文章操作。如果在测试的时候: cam cv2.VideoCapture(…

Forest

正常运行会遇到一些小麻烦,但只要使用前几个例程的解决方法就能解决。这里要讲的是如何把默认的DERBY数据库换成MySQL,为此需要修改几个地方,第一个是web.xml中的数据源配置,如下: <data-source> <name>java:global/ForestDataSource</name> …

Microsoft Teams Rooms Content Camera 革命性更新

原计划在下周一把这个文章分享给大家,不过好东西迫不及待想跟大家分享,就提前发这篇文章了!! 在完成上一次4.0.105.0的版本更新后我已经觉得Teams Rooms变得非常好用了,效果也非常棒,先来看下我们当前成都体验中心的Demo,开会体验棒棒哒

数据科学 python_如何使用Python为数据科学建立肌肉记忆

数据科学 python by Zhen Liu 刘震 首先&#xff1a;数据预处理 (Up first: data preprocessing) Do you feel frustrated by breaking your data analytics flow when searching for syntax? Why do you still not remember it after looking up it for the third time?? …

ORB_SLAM2运行TUM数据和实时数据

0.引用&#xff1a; &#xff08;1&#xff09;https://www.cnblogs.com/ifly-zhhades/p/7305572.html ( 2&#xff09;https://www.imooc.com/article/details/id/29136 &#xff08;3&#xff09;https://www.cnblogs.com/kekeoutlook/p/7693129.html ( 4&#xff09;htt…

Windows设备信息获取:(摄像头,声卡为例)Qt,WindowsAPI对比说明(2)

Windows设备信息获取&#xff1a;&#xff08;摄像头&#xff0c;声卡为例&#xff09;Qt,WindowsAPI对比说明 补充说明问题QT摄像头相关信息获取&#xff08;分辨率&#xff0c;图像格式&#xff09;WindowsAPI,win10&#xff0c;win7不兼容问题兼容代码解决方案其他相关 补充…