このページでは、特定のデバイスでビルドを実行する方法を詳しく説明します。これは Android のビルドの情報を補足するものです。
fastboot と adb をビルドする
fastboot
と adb
をまだ所持していない場合は、通常のビルドシステムを使用してビルドできます。Android のビルドの手順に沿って、メインの make
コマンドを次のように置き換えます。
make fastboot adb
Android Debug Bridge(ADB)について詳しくは、Android Debug Bridge(ADB)をご覧ください。
Fastboot モードでブートする
デバイスは、fastboot
ブートローダー モードの場合にフラッシュできます。コールドブート中のデバイスを fastboot
モードにするには、Fastboot キーの組み合わせに記載されているキーの組み合わせを使用します。
adb reboot bootloader
コマンドを使用して、直接ブートローダーを再起動することもできます。詳しくは、フラッシュの手順をご覧ください。
ブートローダーのロック解除
カスタム システムをフラッシュできるのは、ブートローダーがそれを許可している場合に限られます。ただし、デフォルトではブートローダーはロックされています。ブートローダーのロックは解除できますが、その場合、プライバシー上の理由でユーザーデータが削除されます。ロックを解除すると、デバイス上のすべてのデータが消去されます。消去対象には、個人のアプリデータと、USB 経由でアクセスできる共有データ(写真や動画など)が含まれます。ブートローダーのロックを解除する前に、デバイス上にある重要なファイルをすべてバックアップしてください。
ブートローダーのロックを解除する必要があるのは 1 回だけです。必要に応じて再ロックすることもできます。
最近のデバイスのロックを解除する
2014 年以降にリリースされたすべての Nexus デバイスと Pixel デバイス(Nexus 6 および Nexus 9 以降)は、出荷時設定へのリセットに対する保護機能を備えています。そのため、ブートローダーのロックを解除するには、複数の手順を踏む必要があります。
- デバイスに対して OEM ロック解除を有効にする手順は以下のとおりです。
- [設定] で、[デバイス情報] をタップして、[ビルド番号] を 7 回タップします。
- 「デベロッパー設定が有効になりました」というメッセージが表示されたら、[戻る] ボタンをタップします。
- [設定] で、[システム]、[開発者向けオプション] の順にタップして、[OEM ロック解除] と [USB デバッグ] を有効にします([OEM ロック解除] が無効になっている場合は、インターネットに接続して、少なくとも 1 回デバイスをチェックインします。無効のままだと、デバイスは携帯通信会社によって SIM ロックされ、ブートローダーのロックを解除できなくなります)。
- ブートローダーを再起動し、
fastboot
を使用してブートローダーのロックを解除します。- 比較的新しいデバイスの場合(2015 年以降):
fastboot flashing unlock
- 古いデバイスの場合(2014 年以前):
fastboot oem unlock
- 比較的新しいデバイスの場合(2015 年以降):
- 画面でロックが解除されたことを確認します。
ブートローダーを再ロックする
ブートローダーを再ロックするには、次のコマンドを使用します。
- 比較的新しいデバイスの場合(2015 年以降):
fastboot flashing lock
- 古いデバイスの場合(2014 年以前):
fastboot oem lock
フラッシュ ロック状態を使用する
getFlashLockState()
システム API は、ブートローダーの状態を送信し、PersistentDataBlockManager.getFlashLockState()
システム API は、対応デバイスのブートローダーのロック ステータスを返します。
戻り値 | 条件 |
---|---|
FLASH_LOCK_UNKNOWN |
以前はブートローダー変更機能をサポートしていなかったデバイスを Android 7.x 以降にアップグレードしたことで、フラッシュ ロック / ロック解除機能をサポートするようになった場合に限り返されます。ブートローダー変更機能は、フラッシュ ロック ステータスを取得するうえで必要になります。
|
FLASH_LOCK_LOCKED |
フラッシュ ロック / ロック解除機能をサポートしていないデバイス(つまり、常にロックされているデバイス)の場合や、フラッシュ ロック / ロック解除機能をサポートしていて、ロック状態にあるデバイスの場合に返されます。 |
FLASH_LOCK_UNLOCKED |
フラッシュ ロック / ロック解除機能をサポートしていて、ロック解除状態にあるデバイスの場合に返されます。 |
メーカーは、ブートローダーがロック状態の場合とロック解除状態の場合にそれぞれデバイスから返される値をテストする必要があります。たとえば、Android オープンソース プロジェクト(AOSP)には、ro.boot.flash.locked
ブート プロパティに基づいて値を返すリファレンス実装が用意されています。サンプルコードは、以下のディレクトリにあります。
frameworks/base/services/core/java/com/android/server/PersistentDataBlockService.java
frameworks/base/core/java/android/service/persistentdata/PersistentDataBlockManager.java
デバイスビルドを選択する
lunch
メニューから、おすすめのデバイスビルドが利用できます。このメニューには、引数なしで lunch
コマンドを実行するとアクセスできます。
lunch
コマンドについて詳しくは、ターゲットを選択するをご覧ください。ビルド ターゲットの一覧については、ビルド ターゲットをご覧ください。
Google Pixel デバイスと Nexus デバイス用のファクトリー イメージとバイナリは、developers.google.com からダウンロードできます。ダウンロードについては、デバイス バイナリをご覧ください。詳細や追加リソースについては、プロプライエタリ バイナリを取得するをご覧ください。
デバイス | コードネーム | ビルド構成 |
---|---|---|
Google Pixel 7 Pro | cheetah | aosp_cheetah-userdebug |
Google Pixel 7 | panther | aosp_panther-userdebug |
Google Pixel 6 Pro | raven | aosp_raven-userdebug |
Google Pixel 6 | oriole | aosp_oriole-userdebug |
Google Pixel 5 | Redfin | aosp_redfin-userdebug |
Google Pixel 4a (5G) | Bramble | aosp_bramble-userdebug |
Google Pixel 4a | Sunfish | aosp_sunfish-userdebug |
Google Pixel 4 XL | Coral | aosp_coral-userdebug |
Google Pixel 4 | Flame | aosp_flame-userdebug |
Google Pixel 3a XL | Bonito | aosp_bonito-userdebug |
Pixel 3a | Sargo | aosp_sargo-userdebug |
Pixel 3 XL | Crosshatch | aosp_crosshatch-userdebug |
Pixel 3 | Blueline | aosp_blueline-userdebug |
Pixel 2 XL | Taimen | aosp_taimen-userdebug |
Pixel 2 | Walleye | aosp_walleye-userdebug |
Pixel XL | Marlin | aosp_marlin-userdebug |
Pixel | Sailfish | aosp_sailfish-userdebug |
HiKey | HiKey | hikey-userdebug |
Nexus 6P | Angler | aosp_angler-userdebug |
Nexus 5X | Bullhead | aosp_bullhead-userdebug |
Nexus 6 | Shamu | aosp_shamu-userdebug |
Nexus Player | Fugu | aosp_fugu-userdebug |
Nexus 9 | Volantis(flounder) | aosp_flounder-userdebug |
Nexus 5(GSM / LTE) | hammerhead | aosp_hammerhead-userdebug |
Nexus 7(Wi-Fi) | razor(flo) | aosp_flo-userdebug |
Nexus 7(モバイル) | Razorg(deb) | aosp_deb-userdebug |
Nexus 10 | Mantaray(Manta) | full_manta-userdebug |
Nexus 4 | Occam(Mako) | full_mako-userdebug |
Nexus 7(Wi-Fi) | Nakasi(grouper) | full_grouper-userdebug |
Nexus 7(モバイル) | Nakasig(tilapia) | full_tilapia-userdebug |
Galaxy Nexus(GSM / HSPA+) | Yakju(maguro) | full_maguro-userdebug |
Galaxy Nexus(Verizon) | Mysid(toro) | √aosp_toro-userdebug |
Galaxy Nexus(試験運用版) | Mysidspr(toroplus) | aosp_toroplus-userdebug |
Motorola Xoom(米国、Wi-Fi) | Wingray | full_wingray-userdebug |
Nexus S | Soju(crespo) | full_crespo-userdebug |
Nexus S 4G | Sojus(crespo4g) | full_crespo4g-userdebug |
デバイスをフラッシュする
1 つのコマンドで Android システム全体をフラッシュできます。このコマンドは、フラッシュ対象のシステムと、インストールされているブートローダーおよび無線通信との互換性を検証して、ブート用、リカバリ用、システム用のパーティションをすべて書き込み、システムをリブートします。フラッシュすると、fastboot oem
unlock
と同様、ユーザーデータはすべて消去されます。
デバイスをフラッシュする手順は次のとおりです。
- イメージ ファイルを専用のディレクトリに解凍します。
- ステップ 1 で使用された同じディレクトリを指すように
ANDROID_PRODUCT_OUT
環境変数を設定します。 - ブート時に適切なキーの組み合わせを長押しするか、次のコマンドを使用して、デバイスを
fastboot
モードにします。adb reboot bootloader
- デバイスが Fastboot モードになったら、次のコマンドを実行します。
fastboot flashall -w
-w
オプションは、デバイス上の/data
パーティションをワイプします。これは特定のデバイスを初めてフラッシュする際は便利ですが、それ以外の場合は不要です。
フラッシュ構成
fastboot 命令は fastboot-info.txt というアーティファクト($ANDROID_PRODUCT_OUT/*
にあります)に明記されています。この .txt ドキュメントには fastboot の実行タスクの一覧が記載されています。m fastboot_info
でドキュメントを再生成できます。このファイルを変更することで、カスタムのフラッシュ ロジックを導入できます。
サポートされているコマンド:
- flash %s : 特定のパーティションをフラッシュします。オプションの引数:
--slot-other, {filename_path}, --apply-vbmeta
- update-super : スーパー パーティションを更新します。
- if-wipe : if-wipe が指定されている場合に、その他の機能を条件付きで実行します
- erase %s : 特定のパーティションを消去します(if-wipe -> eg との併用のみ可能)
if-wipe erase cache
デバイスを出荷時の状態に復元する
Google デバイスのファクトリー イメージは、Nexus デバイスおよび Pixel デバイスのファクトリー イメージから入手できます。Motorola Xoom のファクトリー イメージは、直接 Motorola から入手できます。
権限拒否エラーを解決する
ほとんどの Linux システムでは、権限のないユーザーはデフォルトで USB ポートにアクセスできません。 権限拒否エラーが表示されたら、Android Studio の開発用デバイスのセットアップの手順に従ってください。
ADB がすでに実行されていてデバイスに接続できない場合は、adb kill-server
で ADB を停止できます。このコマンドを実行すると、ADB を新しい構成で再起動できます。