在 Android 上创建签名配置
签名配置在 AVBDroid 和 AVBPowerTool2 两款软件之间通用,它指导软件如何生成 avbtool.py 签名命令,并提供签名所需的密钥。
准备工作
- 最新版 AVBDroid APP: GitHub Releases
- AOSP 测试密钥对:蓝奏云
- 下列镜像文件,需要保证该 ROM 的版本(或者其底包版本)大于等于你曾在你的设备上使用的最高系统版本,也就是这个 ROM 可以在你的未解锁设备上正常开机使用,你可以寻找救砖包或者使用 9008 从你的设备中读取活动插槽的分区的镜像:
- boot
- dtbo
- init_boot
- pvmfw
- recovery
- vendor_boot
- vbmeta
- vbmeta_system
TIP
如果你用 9008 或者其它分区备份工具直接备份镜像,为了后续配置管理的方便,请将 A/B 分区后缀去掉,例如将 boot_a.img 改名为 boot.img 。
准备文件
创建一个目录,这个目录将用于放置镜像文件:

将上述 8 个镜像文件以及测试密钥对
testkey_rsa2048.pem和testkey_rsa4096.pem都放置到这个文件夹中:
创建配置
打开 AVBDroid APP, 切换到
签名配置选项卡后点击新增配置按钮:
在弹出菜单中选择
新建配置后输入你的配置 ID (大小写字母和英文符号,更准确的讲,配置 ID 只接受 ASCII 符号)和配置名称:
点击
继续后应当可以成功创建配置:
导入密钥并复制密钥关键信息
创建配置之后必须先添加密钥再导入分区。点击
密钥库管理中的增加密钥后导入testkey_rsa4096.pem和testkey_rsa4028.pem:

(重要)确保当前的默认密钥是
testkey_rsa4096, 如果不是,长按 testkey_rsa4096 这个条目后选择激活密钥长按 testkey_rsa4096 和 testkey_rsa2048, 分别复制下它们的
公钥文件名,稍后要用。

导入分区信息
滑动到
输入映像部分,找到从工作区导入按钮并点击它,阅读并确认下面的提示:
选择刚刚创建的文件夹后点击
使用此文件夹,让应用能够读取其中的镜像信息:
应用应当能自动解析全部镜像包含的 AVB 信息,并呈现下面的界面:

NOTE
如果提示有镜像解析失败,可能是这个镜像不具备 AVB 签名,请检查你的镜像是否完好。
编辑分区信息
长按对应分区条目可以呼出菜单,点按
更改镜像配置可以更改这个分区的签名配置。
先长按
vbmeta_system分区一行,并打开编辑页面,做下面的更改:- 签名算法改为
SHA256_RSA2048 - 签名密钥改为
testkey_rsa2048
也就是下面这样:

- 签名算法改为
展开
vbmeta_system配置编辑对话框的高级配置并找到包含的分区一行:
点击
包含的分区一行,像下面这样勾选分区,保证只有pvmfw分区被勾选后点击确定:
保存
vbmeta_system分区的配置。长按
vbmeta一行打开它的配置编辑页面,做下面的更改:- VBMeta 标志位改为 1
也就是下面这样:

展开
vbmeta配置编辑对话框的高级配置并找到包含的分区一行。点击
包含的分区一行,像下面这样勾选分区,保证只有dtbo,init_boot,vendor_boot分区被勾选后点击确定:
找到
链分区一行,点击打开对话框,看到现在三个链式分区都使用默认密钥进行匹配:
使用刚刚复制的公钥文件名修改链式分区信息后点击确定:
boot和recovery的公钥文件名从default.bin替换为testkey_rsa4096.pem.binvbmeta_system的公钥文件名从default.bin替换为testkey_rsa2048.pem.bin- 或者直接使用下面编辑好的配置整段替换链式分区配置:text
boot:3:testkey_rsa4096.pem.bin recovery:1:testkey_rsa4096.pem.bin vbmeta_system:2:testkey_rsa2048.pem.bin
保存
vbmeta分区的配置。
检验分区配置
按照下表依次检查分区配置:
| 分区名 | 算法 | 签名密钥 | 回滚索引 | 标志 |
|---|---|---|---|---|
| boot | SHA256_RSA4096 | testkey_rsa4096 | UNIX 时间戳,如 1736035200 | 0 |
| dtbo | NONE | 不签名,任意密钥均可 | 0 | 0 |
| init_boot | NONE | 不签名,任意密钥均可 | 0 | 0 |
| pvmfw | NONE | 不签名,任意密钥均可 | 0 | 0 |
| recovery | SHA256_RSA4096 | testkey_rsa4096 | 1 | 0 |
| vendor_boot | NONE | 不签名,任意密钥均可 | 0 | 0 |
| vbmeta | SHA256_RSA4096 | testkey_rsa4096 | 0 | 1 |
| vbmeta_system | SHA256_RSA2048 | testkey_rsa2048 | UNIX 时间戳,如 1783209600 | 0 |
| 分区名 | 链式分区名:回滚索引位置:公钥 SHA1 | 包含分区 |
|---|---|---|
| vbmeta | recovery:1:2597c218aae470a130f61162feaae70afd97f011, vbmeta_system:2:cdbb77177f731920bbe0a0f94f84d9038ae0617d, boot:3:2597c218aae470a130f61162feaae70afd97f011 | dtbo, init_boot, vendor_boot |
| vbmeta_system | / | pvmfw |
导出配置
回到签名配置屏幕的最上方,点击 编辑配置 按钮,选择 导出配置 后导出即可:
