apftool-rs是基于Rust开发的现代化apftool替代方案,专为瑞芯微(RockChip)固件解包而设计。相比传统apftool,提供更好的性能、安全性和跨平台支持。支持RKFW和RKAF格式,是专业的apftool升级版工具。
内容直接同步 apftool-rs README,覆盖所有官方特性
原生支持 RKFW 固件签名识别,可直接展开分区内容。
可将 RKFW 中的 embedded-update.img 再次解包为独立分区镜像。
提供 pack-rkfw 与 pack-rkaf 命令,配合元数据可重新生成固件。
覆盖 RK29xx、RK30xx、RK31xx、RK32xx、RK3368、RK3326、RK3566、RK3562、PX30 等芯片。
Windows、macOS、Linux 均提供二进制,亦可在本地 Cargo 构建。
GitHub Actions 自动为 Linux / macOS / Windows 多架构生成制品。
README 中列出的三种官方构建方式
使用 Rust 工具链从源码构建可执行文件,生成 target/release/apftool-rs。
git clone https://github.com/suyulin/apftool-rs.git cd apftool-rs cargo build --release
按照 README 使用脚本生成同时兼容 Intel 与 Apple Silicon 的通用版本。
./build.sh
README 中列出的流水线会在推送版本标签时生成所有平台的产物并创建 Releases。
推送标签示例:git tag v1.0.0 && git push origin v1.0.0
来自 README 的 CLI 流程示例
执行 README 的示例命令,工具会提示签名、版本、芯片等元数据。
afptool-rs unpack rk.img ./out
继续处理 embedded-update.img,README 示例展示了分区映射输出。
afptool-rs unpack ./out/embedded-update.img ./out
使用 partition-metadata.txt 以及 README 中的参数(--chip、--version、--timestamp、--code)。
afptool-rs pack-rkfw ./out ./repacked.img --chip RK3562 --version 1.0.0 --timestamp 1762435994 --code 0x02000000
紧贴 README Usage 章节的命令
最常用的命令:传入固件与输出目录,工具会自动识别签名并打印版本、日期、芯片。
afptool-rs unpack <input_file> <output_directory>
对 embedded-update.img 再运行一次 unpack,README 提供了完整的分区清单示例。
afptool-rs unpack ./out/embedded-update.img ./out
README 展示了 pack-rkfw 与 pack-rkaf 的参数组合,可保持时间戳和代码字段一致。
afptool-rs pack-rkfw ./out ./repacked.img --chip RK3562 --version 1.0.0 --timestamp 1762435994 --code 0x02000000 afptool-rs pack-rkaf ./out repacked-update.img --model RK3562 --manufacturer RK3562
README 中的真实终端输出
执行 afptool-rs unpack rk.img ./out 时打印的元数据与分区:
RKFW signature detected version: 1.0.0 code: 0x02000000 date: 2025-11-06 13:33:14 (Unix timestamp: 1762435994) family: RK3562 00000066-00072a25 BOOT (size: 469440) 00072a26-10495a29 embedded-update.img (size: 272773124)
继续解包 embedded-update.img 后输出的分区映射:
Filesize: 272773124 manufacturer: RK3562 model: RK3562 00000800-000000fb ./out/package-file 00001000-0000021d ./out/parameter.txt 00001800-000729c0 ./out/MiniLoaderAll.bin 00074800-00400000 ./out/uboot.img 00474800-0000c000 ./out/misc.img 00480800-01084800 ./out/boot.img 01505000-0df1e000 ./out/rootfs.img 0f423000-00800000 ./out/oem.img 0fc23000-00800000 ./out/userdata.img Partition metadata saved to: ./out/partition-metadata.txt
从GitHub Releases下载适用于Windows、macOS和Linux的版本
cargo build --release来自 GitHub 最新 README 的高频操作和说明
直接下载二进制并运行,命令保持与传统apftool一致。
curl -L https://github.com/suyulin/apftool-rs/releases/latest/download/afptool-rs-linux-x86_64 -o afptool-rs chmod +x afptool-rs ./afptool-rs firmware.img ./output
README 中推荐的标准 Cargo 流程,几条命令即可完成。
git clone https://github.com/suyulin/apftool-rs.git cd apftool-rs cargo build --release
UI 与 README 对应,方便快速跳转原文档。
# 查看完整帮助 afptool-rs --help # 阅读README https://github.com/suyulin/apftool-rs
实时同步主仓库 README,确保信息与工具版本一致。
阅读GitHub完整文档聚合 README 中最常用的命令,便于复制粘贴
| 操作 | 命令 |
|---|---|
| 解包 RKFW 固件 | afptool-rs unpack <input_file> <output_directory> |
| 提取嵌入的 RKAF 镜像 | afptool-rs unpack ./out/embedded-update.img ./out |
| 打包 RKFW | afptool-rs pack-rkfw ./out ./repacked.img --chip RK3562 --version 1.0.0 --timestamp 1762435994 --code 0x02000000 |
| 打包 RKAF | afptool-rs pack-rkaf ./out repacked-update.img --model RK3562 --manufacturer RK3562 |
整合 README 附录内容与站内指南
解包 RKAF 会生成哪些辅助文件?
README 指出会生成 partition-metadata.txt,用于后续 pack-rkaf,还会把所有 *.img 写入输出目录。
如何保持时间戳一致?
使用 --timestamp 参数即可复刻原固件的 Unix 时间戳,从而获得字节级匹配。
需要提前准备固件样本吗?
tests/advanced_tests.rs 与 tests/cli_tests.rs 会自动生成 RKFW/RKAF 模拟文件,不需要额外资源。
README 中的 tests/advanced_tests.rs 与 tests/cli_tests.rs
包含更复杂的 RKFW/RKAF 场景,运行前准备可写的 tests/data/integration 目录即可。
cargo test advanced_tests -- --ignored
调用完整 CLI 二进制进行断言,README 建议在需要验证参数解析时运行。
cargo test cli_tests -- --ignored
两个测试套件都会自动生成临时 RKFW/RKAF 模拟文件,无需额外固件。
直接引用 README Testing 章节
| 运行单元测试 | cargo test |
| 包含 #[ignore] 的所有测试 | cargo test -- --include-ignored |
| 运行特定测试 | cargo test test_update_header_from_bytes |