APFTool升级版
瑞芯微固件解包工具

apftool-rs是基于Rust开发的现代化apftool替代方案,专为瑞芯微(RockChip)固件解包而设计。相比传统apftool,提供更好的性能、安全性和跨平台支持。支持RKFW和RKAF格式,是专业的apftool升级版工具。

核心功能

内容直接同步 apftool-rs README,覆盖所有官方特性

解包 RKFW 固件

原生支持 RKFW 固件签名识别,可直接展开分区内容。

提取嵌入的 RKAF 镜像

可将 RKFW 中的 embedded-update.img 再次解包为独立分区镜像。

打包 RKFW / RKAF

提供 pack-rkfw 与 pack-rkaf 命令,配合元数据可重新生成固件。

芯片家族支持

覆盖 RK29xx、RK30xx、RK31xx、RK32xx、RK3368、RK3326、RK3566、RK3562、PX30 等芯片。

跨平台

Windows、macOS、Linux 均提供二进制,亦可在本地 Cargo 构建。

CI/CD 构建

GitHub Actions 自动为 Linux / macOS / Windows 多架构生成制品。

构建指南

README 中列出的三种官方构建方式

标准构建 (cargo build --release)

推荐

使用 Rust 工具链从源码构建可执行文件,生成 target/release/apftool-rs。

  • 克隆仓库并进入目录
  • 运行 cargo build --release
  • 在 target/release 下找到二进制
git clone https://github.com/suyulin/apftool-rs.git
cd apftool-rs
cargo build --release

通用 macOS 二进制

macOS

按照 README 使用脚本生成同时兼容 Intel 与 Apple Silicon 的通用版本。

  • 确保 build.sh 可执行
  • 脚本会输出 Universal Binary
./build.sh

GitHub Actions 构建矩阵

CI/CD

README 中列出的流水线会在推送版本标签时生成所有平台的产物并创建 Releases。

  • Linux x86_64 / ARM64 (aarch64)
  • macOS x86_64 / ARM64 / Universal
  • Windows x86_64 自动打包
推送标签示例:git tag v1.0.0 && git push origin v1.0.0

使用步骤

来自 README 的 CLI 流程示例

1

解包 RKFW 固件

执行 README 的示例命令,工具会提示签名、版本、芯片等元数据。

Terminal
afptool-rs unpack rk.img ./out
2

提取嵌入的 RKAF

继续处理 embedded-update.img,README 示例展示了分区映射输出。

Terminal
afptool-rs unpack ./out/embedded-update.img ./out
3

准备重新打包

使用 partition-metadata.txt 以及 README 中的参数(--chip、--version、--timestamp、--code)。

Terminal
afptool-rs pack-rkfw ./out ./repacked.img --chip RK3562 --version 1.0.0 --timestamp 1762435994 --code 0x02000000

使用说明

紧贴 README Usage 章节的命令

解包 RKFW

最常用的命令:传入固件与输出目录,工具会自动识别签名并打印版本、日期、芯片。

afptool-rs unpack <input_file> <output_directory>
  • 示例:afptool-rs unpack rk.img ./out
  • 输出中可看到 version / code / family 等字段
  • embedded-update.img 会被写入输出目录

提取嵌入的 RKAF

对 embedded-update.img 再运行一次 unpack,README 提供了完整的分区清单示例。

afptool-rs unpack ./out/embedded-update.img ./out
  • 自动打印 manufacturer / model
  • 生成 partition-metadata.txt,方便后续打包
  • 所有 ./out/*.img 均来自 README 示例

重新打包

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
  • pack-rkfw 需要 --chip / --version / --timestamp / --code
  • pack-rkaf 需要 --model 与 --manufacturer
  • README 建议使用正确的 partition-metadata.txt

效果展示

README 中的真实终端输出

RKFW解包输出

执行 afptool-rs unpack rk.img ./out 时打印的元数据与分区:

$ 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)

RKAF解包输出

继续解包 embedded-update.img 后输出的分区映射:

$ afptool-rs unpack ./out/embedded-update.img ./out
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一致。

  • 覆盖 Windows / macOS / Linux 平台
  • 自动检测 RKFW / RKAF 格式,无需额外参数
  • 兼容旧脚本:命令行接口保持一致
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 流程,几条命令即可完成。

  • 安装 Rust 工具链 (rustup)
  • 克隆仓库后执行 cargo build --release
  • 构建产物位于 target/release/apftool-rs
git clone https://github.com/suyulin/apftool-rs.git
cd apftool-rs
cargo build --release

文档章节

UI 与 README 对应,方便快速跳转原文档。

  • 功能特性、支持的芯片和固件格式
  • 终端输出示例与详细使用步骤
  • 最佳实践、FAQ 与未来规划
# 查看完整帮助
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
打包 RKFWafptool-rs pack-rkfw ./out ./repacked.img --chip RK3562 --version 1.0.0 --timestamp 1762435994 --code 0x02000000
打包 RKAFafptool-rs pack-rkaf ./out repacked-update.img --model RK3562 --manufacturer RK3562

文档与资源

整合 README 附录内容与站内指南

常见问题(摘自 README FAQ)

解包 RKAF 会生成哪些辅助文件?

README 指出会生成 partition-metadata.txt,用于后续 pack-rkaf,还会把所有 *.img 写入输出目录。

如何保持时间戳一致?

使用 --timestamp 参数即可复刻原固件的 Unix 时间戳,从而获得字节级匹配。

需要提前准备固件样本吗?

tests/advanced_tests.rs 与 tests/cli_tests.rs 会自动生成 RKFW/RKAF 模拟文件,不需要额外资源。

保持与主仓库同步

本页面内容直接映射 README,小版本更新后仅需刷新即可查看最新说明。

前往 GitHub 文档

运行忽略的集成测试

README 中的 tests/advanced_tests.rs 与 tests/cli_tests.rs

高级场景 (tests/advanced_tests.rs)

包含更复杂的 RKFW/RKAF 场景,运行前准备可写的 tests/data/integration 目录即可。

cargo test advanced_tests -- --ignored

CLI 级联测试 (tests/cli_tests.rs)

调用完整 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

开源社区驱动

加入社区,共同参与项目开发

8+
星标
3
贡献者
3
发布版本

支持的格式和芯片

文件格式

  • RKFW - 瑞芯微固件包装格式
  • RKAF - 瑞芯微Android固件包格式

芯片系列

rk29xx0x50
rk30xx0x60
rk31xx0x70
rk32xx0x80
rk33680x41
RK33260x36
RK35620x32
RK35660x38
PX300x30