#file-format #sparse #android #image #raw #convert

bin+lib android-sparse

Android 稀疏文件格式的实现

8 个版本 (5 个重大变更)

0.6.0 2021 年 12 月 8 日
0.5.0 2018 年 8 月 19 日
0.4.0 2018 年 8 月 5 日
0.3.1 2017 年 11 月 11 日
0.1.1 2017 年 10 月 22 日

#293压缩

每月 50 次下载

MIT 许可证

35KB
824

android-sparse

Rust 中 Android 稀疏文件格式的实现。

稀疏是一种简单的文件压缩格式。Android 的 fastboot 协议支持它作为处理一次无法装入设备内存的图像的手段。Android 图像通常以稀疏格式提供,必须在进一步检查之前对其进行解码。

稀疏格式没有官方文档。然而,libsparse 是 Android 开源项目 (AOSP) 的一部分。它提供了从原始到稀疏图像以及反向转换的实用程序,分别称为 img2simgsimg2img。不幸的是,这些工具不是 Android SDK 的一部分。要使用它们,必须下载 AOSP 并从源代码构建,这可能是一项相当耗时的工作。

此项目在 Rust 中重新实现了部分 libsparse,以便使用稀疏图像更加方便。虽然 android-sparse 并没有实现 libsparse 的所有功能,但它支持以下主要用例:

  • 将原始图像转换为稀疏图像(img2simg
  • 将稀疏图像转换为原始图像(simg2img

此外,由于是用 Rust 实现的,它具有一些相对于 libsparse 的优势,即保证内存安全以及所有主流操作系统上显著更简单的构建过程。

安装

要构建 android-sparse,您需要一个有效的 Rust 安装。有关说明,请访问 https://www.rustup.rs

最新的稳定版本 android-sparse 可在 crates.io 上找到。您可以使用 cargo 安装它

$ cargo install android-sparse

这将把 android-sparse 工具安装到 cargo 的 bin 目录中。如果您通过 rustup 安装了 Rust,则该目录位于

  • $HOME/.cargo/bin(Unix 系统)
  • %USERPROFILE%\.cargo\bin 在 Windows 上

使用方法

编码

将原始图像编码为稀疏图像

$ img2simg <raw_image> <sparse_image>

-c/--crc 标志使 img2simg 将校验和写入稀疏图像

$ img2simg --crc <raw_image> <sparse_image>

解码

将稀疏图像解码为原始图像

$ simg2img <sparse_image> <raw_image>

也可以通过指定以逗号分隔的多个稀疏图像将它们解码为单个原始图像

$ simg2img <sparse_image>,<sparse_image>,... <raw_image>

-c/--crc 标志使 simg2img 检查稀疏图像中包含的校验和。如果它们不匹配,则解码中断。

$ simg2img --crc <sparse_image> <raw_image>

许可协议

本项目采用 MIT 许可协议(LICENSEhttp://opensource.org/licenses/MIT)。

除非您明确表示,否则您有意提交以包含在 android-sparse 中的任何贡献,均应按照上述协议许可,不附加任何额外条款或条件。

依赖项

~1MB