- 作者:彭老师
- 日期:2019-11-28
- 类型:Android
- 说明:本文源于彭老师手写摘要,如需转载请带上链接或注明出处!
BSDiff(增量更新),官网:http://www.daemonology.net/bsdiff/
依赖bzip2库:https://nchc.dl.sourceforge.net/project/gnuwin32/bzip2/1.0.5/bzip2-1.0.5-src.zip
- 核心思想
- 尽可能多的利用old文件中已有的内容,尽可能少的加入新的内容来构建new文件
- 通常的做法是对old文件和new文件做子字符串匹配或使用hash技术
- 提取公共部分,将new文件中剩余的部分打包成patch包
- 在Patch阶段中,用copying和insertion两个基本操作即可将old文件和patch包合成new文件
- BSDiff基本步骤
- 1.对old文件中所有字符串形成一个字典
- 2.对比old文件和new文件,产生diff string和extra string
- 3.将diff string和extra string以及相应的控制用zip压缩成一个patch包
观察一个应用是否使用过增量更新,最简单粗暴的方式:
把apk解压,打开lib
包,看看有没有libbspatch.so
文件
环境和工具,老鸟带过
- 服务器:CenterOS6.5+
- 连接工具:Xshell 5(百度一堆)
废话不多说,直接上服务器命令,演示如果在Liunx环境做差分包
1、BSDiff官网下载:bsdiff-4.3.tar.gz
或者点击此处下载:http://www.daemonology.net/bsdiff/bsdiff-4.3.tar.gz

2、登录服务器后,删除和创建命令
rm -rf bsdiff/ (删库到跑路) |
3、创建文件夹后进入文件夹
cd bsdiff |
4、上传 bsdiff-4.3.tar.gz
rz |
可能会碰到问题:服务器没有
rz
环境wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz(下载)
tar zxvf lrzsz-0.12.20.tar.gz && cd lrzsz-0.12.20(解压)
./configure && make && make install(安装)
cd /usr/bin(进入目录)
ln -s /usr/local/bin/lrz rz(创建软链接)
ln -s /usr/local/bin/lsz sz(创建软链接)再次执行
rz
命令上传bsdiff-4.3.tar.gz
到服务器指定目录
5、查看文件夹内容命令
ls (列表) |
6、解压 bsdiff-4.3.tar.gz
tar xvf bsdiff-4.3.tar.gz |
7、进入 bsdiff-4.3
解压后的目录中,执行编译
make |
可能会碰到问题:服务器
gcc
环境Makefile:13: *** missing separator. Stop.
编辑
Makefile
文件vim Makefile(进入编辑)
insert(只读切换成编辑)
esc(退出编辑)
:(进入命令行输入)
wq(保存退出)如果出现
vim
无法识别,说明服务器真的很丐版:vim: command not found
执行
vim
安装命令:rpm -qa | grep vim(查看vim命令在什么软件包)
结果显示:
vim-minimal-7.4.160-4.el7.x86_64(版本可能不同)
安装
vim
相关的软件包yum install -y vim*
rpm -qa | grep vim

2、

再次执行
make
命令编译可能会碰到问题:服务器
bzip2
环境yum -y install bzip2-devel.x86_64(在线安装)
再次执行
make
命令编译
8、直至通过,查看列表 ls
看到如下:

9、查看文件属性
file bsdiff |
10、帮助信息
./bsdiff |
最终差分包命令:
./bsdiff oldfile newfile patchfile
其中
oldfile
比如:old.apk
newfile
比如:app-release.apk
patchfile
差分包,可自定义