android增量更新

今天学习了一下增量更新,这个技术已经出现很长时间了,但是现实中,估计只有大厂才利用了这一技术在做产品!
国内有些第三方服务平台,像友盟提供自动更新的服务,也是用的增量方式!
其他的像QQ,Sina微博,陌陌,蘑菇街等都用到了,解压一下它们的apk,看一下lib目录:
QQ:libbspatch.so
微博:libbsdiffjni.so
陌陌:libbsdiff.so
蘑菇街:libpatcher.so
这些只不过so的名字不一样而已,但都用到了增量更新.
其它的一些主流app解包后,都看到了libandfix.so这个库,这个是阿里推出的一个支持ART和Dalvik的热修复的框架,在线修复bug.

今天学习增量更新而非热更新
主角:http://www.daemonology.net/bsdiff
官方说明:
(1)bsdiff 和 bspatch是编译,安装补丁到二进制文件的一个工具,
(2)这个工具用到了bzip2的压缩功能,所以补丁的大小小于新旧版本的一个差值
(3)bsdiff非常吃内存

1.编译生成工具

开干,我用的是ubuntu,点击here下源代码,编译

解压,可以看到一共5个文件

shone@Dell:~/Soft/bsdiff-4.3$ ls
bsdiff.1  bsdiff.c  bspatch.1  bspatch.c  Makefile

然后编译make,报错

Makefile:13: *** missing separator.  Stop.

查看一下Makefile

无奈,在网上找了一下,找到了解决方法.
http://kinggoo.com/bsdiffupdate.htm#respond
原因是:目标体下一行的,命令要用TAB键开头,且不能隔一行。
也就是说在.ifndef的前面要有TAB开头才可以~因为他是安装的下一个子集命令。

接着编译,结果报错,找不到头文件

bsdiff.c:33:19: fatal error: bzlib.h: No such file or directory
 #include <bzlib.h>
                   ^
compilation terminated.

先前说过bsdiff依赖bzip2,有图

好,下载bzip2,解压
http://www.bzip.org/downloads.html
make
sudo make install
安装的时候,会创建一些文件,所以给权限
然后编译

cc -O3  -lbz2    bsdiff.c   -o bsdiff
/tmp/cctTxPKV.o: In function `main':
bsdiff.c:(.text.startup+0x2aa): undefined reference to `BZ2_bzWriteOpen'
bsdiff.c:(.text.startup+0x9e9): undefined reference to `BZ2_bzWrite'
bsdiff.c:(.text.startup+0xb2c): undefined reference to `BZ2_bzWrite'
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值