Android bsdiff/bspatch imgdiff/applypatch

Android系统提供bsdiff/bspatch用于二进制差分,但针对压缩文件效率不高。为解决此问题,Android引入imgdiff工具,针对boot.img/recovery.img等文件,将压缩部分划分为normal和GZIP类型,分别处理生成补丁。applypatch库和程序用于补丁应用,目前仅支持GZIP,未来可能扩展到EXT4等格式。分块处理能减少内存使用,适合内存受限设备。
摘要由CSDN通过智能技术生成

Google在Android系统了提供了自己的二进制差分工具,bsdiff/bspatch,代码位于external/bsdiff目录下。
在Ubuntu系统上可以直接通过apt进行安装。

sudo apt-get install bsdiff

使用方法如下:

diff:
bsdiff oldfile newfile patch
patch:
bspatch oldfile newfile patch

虽然针对普通文件bsdiff/bspatch效率非常高。但对于一些压缩文件,由于压缩前内容非常小的变化会导致压缩后整个二进制文件产生非常巨大的变化,这样patch文件会非常大。如Android系统中常用的boot.img/recovery.img,本质上就是一块包含压缩和非压缩数据的二进制文件。
为了解决这个问题,Android也提供了imgdiff工具(bootable/recovery/applypatch)。在source文件中搜索压缩部分(0x1f8b0800),将其划分成多个小块。
- 非压缩部分称为normal,直接使用bsdiff生成补丁。
- gzip压缩部分成为GZIP类型,先将内容解压缩,逐个文件使用bsdiff生成补丁,将这些补丁通过GZIP再压缩到一起。
最后将各部分的补丁合并到一起添加一个文件头生

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值