本页面介绍了为您自己的设备设置 build 时可能需要执行的几项任务。
创建自定义刷写配置
Fastboot 指令在一个名为 fastboot-info.txt
的工件中定义。如果您构建多个目标,则在 $OUT_DIR 中将有多个 fastboot-info.txt
文件。$ANDROID_PRODUCT_OUT
指向您构建的最新目标。此页面列出了 fastboot 要执行的任务,并且可以使用 m fastboot_info
重新生成。您可以通过修改 fastboot-info.txt
文件来引入自定义刷写逻辑。
fastboot-info.txt
文件支持以下命令
flash %s
:刷写给定的分区。可选参数包括--slot-other,
filename_path, 和
--apply-vbmeta`。update-super
:更新 super 分区。if-wipe
:如果指定了 wipe 操作,则有条件地运行其他组件。erase %s
:擦除给定的分区(只能与if-wipe
结合使用 -> 例如,if-wipe erase cache
)。
确定刷写锁定状态
如果您要为设备构建自定义 flashboot 守护程序 (flashbootd),则需要能够获取 bootloader 和 bootloader 锁定状态。getFlashLockState()
@SystemApi
会传输 bootloader 状态,而 PersistentDataBlockManager.getFlashLockState()
系统 API 会返回兼容设备上 bootloader 的锁定状态。
返回值 | 条件 |
---|---|
FLASH_LOCK_UNKNOWN |
仅由升级到 Android 7.x 或更高版本的设备返回,如果这些设备支持刷写锁定/解锁功能,但之前不支持获取刷写锁定状态所需的 bootloader 更改。
|
FLASH_LOCK_LOCKED |
由任何不支持刷写锁定/解锁(即设备始终处于锁定状态)的设备或任何支持刷写锁定/解锁且处于锁定状态的设备返回。 |
FLASH_LOCK_UNLOCKED |
由任何支持刷写锁定/解锁且处于解锁状态的设备返回。 |
制造商应测试具有锁定和解锁 bootloader 的设备返回的值。例如,AOSP 包含一个参考实现,该实现根据 ro.boot.flash.locked
启动属性返回值。示例代码位于以下目录中
frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java