2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
カスタム デバイス開発
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
このページでは、自分のデバイス用にビルドを設定する場合に実行する必要があるタスクについて説明します。
カスタムのフラッシュ構成を作成する
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 以降にアップグレードしたことで、フラッシュ ロック / ロック解除機能をサポートするようになった場合に限り返されます。ブートローダー変更機能は、フラッシュ ロック ステータスを取得するうえで必要になります。
- 元々 Android 7.x 以降を搭載している新しいデバイスの場合、
FLASH_LOCK_LOCKED か FLASH_LOCK_UNLOCKED の状態になっている必要があります。
- Android 7.x 以降にアップグレードしたデバイスで、アップグレード後もフラッシュ ロック / ロック解除機能をサポートしていない場合は、
FLASH_LOCK_LOCKED 状態が返されます。
|
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
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-04-04 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-04-04 UTC。"],[],[],null,["# Custom device development\n\nThis page explains several tasks you might need to perform if you're\nsetting up a build for your own device.\n\nCreate a custom flash configuration\n-----------------------------------\n\nFastboot instructions are defined in an artifact called `fastboot-info.txt`. If\nyou build multiple targets, you'll have multiple `fastboot-info.txt` files in\nthe \u003cvar translate=\"no\"\u003e$OUT_DIR\u003c/var\u003e. And, `$ANDROID_PRODUCT_OUT` points to the\nmost current target you built. This page list the tasks for fastboot to execute\nand can be regenerated using `m fastboot_info`. You can introduce custom\nflashing logic by modifying the `fastboot-info.txt` file.\n\nThe `fastboot-info.txt` file supports these commands:\n\n- `flash %s`: Flashes a given partition. Optional arguments include `--slot-other,`\u003cvar translate=\"no\"\u003efilename_path\u003c/var\u003e`, and`--apply-vbmeta\\`.\n- `update-super`: Updates the super partition.\n- `if-wipe`: Conditionally runs some other component if a wipe is specified.\n- `erase %s`: Erases a given partition (can only be used in conjunction with `if-wipe` -\\\u003e eg. `if-wipe erase cache`).\n\nDetermine flash lock state\n--------------------------\n\nIf you're building a custom flashboot daemon (flashbootd) for a device, you need\nto be able to obtain bootloader and bootloader lock state. The\n`getFlashLockState()` `@SystemApi` transmits the bootloader\nstate and the `PersistentDataBlockManager.getFlashLockState()` system\nAPI returns the bootloader's lock status on compliant devices.\n\n| Return value | Conditions |\n|-----------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `FLASH_LOCK_UNKNOWN` | Returned only by devices upgrading to Android 7.x or higher that didn't previously support the bootloader changes required to get the flash lock status if they supported flashing lock/unlock capability. - New devices running Android 7.x or higher must be in either a `FLASH_LOCK_LOCKED` or `FLASH_LOCK_UNLOCKED` state. - Devices upgrading to Android 7.x or higher that don't support flashing unlock/lock capability should return a `FLASH_LOCK_LOCKED` state. |\n| `FLASH_LOCK_LOCKED` | Returned by any device that doesn't support flashing lock/unlock (that is, the device is always locked), or any device that supports flashing lock/unlock and is in the locked state. |\n| `FLASH_LOCK_UNLOCKED` | Returned by any device that supports flashing lock/unlock and is in the unlocked state. |\n\nManufacturers should test the values returned by devices with locked and\nunlocked bootloaders. For example, AOSP\ncontains a reference implementation that returns a value based on the\n`ro.boot.flash.locked` boot property. Example code is located in the\nfollowing directories:\n\n- `frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java`\n- `frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java`"]]