このページでは、自分のデバイス用にビルドを設定する場合に実行する必要があるタスクについて説明します。
カスタムのフラッシュ構成を作成する
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, and
--apply-vbmeta` が含まれます。update-super
: スーパー パーティションを更新します。if-wipe
: ワイプが指定されている場合に、条件付きでその他のコンポーネントを実行します。erase %s
: 指定されたパーティションを消去します(if-wipe
と組み合わせてのみ使用可能 -> 例:if-wipe erase cache
)。
フラッシュ ロック状態を判断する
デバイス用にカスタムの flashboot デーモン(flashbootd)をビルドする場合、ブートローダーとそのロック状態を取得できる必要があります。getFlashLockState()
@SystemApi
は、ブートローダーの状態を送信し、PersistentDataBlockManager.getFlashLockState()
システム API は、対応デバイスのブートローダーのロック ステータスを返します。
戻り値 | 条件 |
---|---|
FLASH_LOCK_UNKNOWN |
以前はブートローダー変更機能をサポートしていなかったデバイスを Android 7.x 以降にアップグレードしたことで、フラッシュ ロック / ロック解除機能をサポートするようになった場合に限り返されます。ブートローダー変更機能は、フラッシュ ロック ステータスを取得するうえで必要になります。
|
FLASH_LOCK_LOCKED |
フラッシュ ロック / ロック解除機能をサポートしていないデバイス(つまり、常にロックされているデバイス)の場合や、フラッシュ ロック / ロック解除機能をサポートしていて、ロック状態にあるデバイスの場合に返されます。 |
FLASH_LOCK_UNLOCKED |
フラッシュ ロック / ロック解除機能をサポートしていて、ロック解除状態にあるデバイスの場合に返されます。 |
メーカーは、ブートローダーがロック状態の場合とロック解除状態の場合にそれぞれデバイスから返される値をテストする必要があります。たとえば、AOSP には、ro.boot.flash.locked
ブート プロパティに基づいて値を返すリファレンス実装が用意されています。サンプルコードは、以下のディレクトリにあります。
frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java