このページでは、Cuttlefish で AAOS SDV をダウンロード、ビルド、実行する方法について説明します。
Repo クライアントの初期化
クライアントを設定して Android ソース リポジトリにアクセスします。
作業ディレクトリ(
sdvなど)を作成し、そこに移動します。mkdir WORKING_DIRECTORYcd WORKING_DIRECTORYソース コントロールの作業ディレクトリを初期化します。
この例では、ブランチ
26Q2-fs-releaseを使用しています。RELEASE=26Q2-fs-releaserepo init -u https://partner-android.googlesource.com/platform/vendor/pdk/generic/fs/manifest/ -b $RELEASE-uオプションは必須で、マニフェスト ファイルを指定します。マニフェスト ファイルとは、Android ソースのさまざまな Git プロジェクトを作業ディレクトリ内のどこに置くかを指定する XML ファイルです。この例では、マニフェスト ファイルの名前は指定されていないので、コマンドはデフォルトのマニフェスト ファイル(default.xml)を使用します。-bオプションは、初期化するブランチを識別します。出力には、以下のメッセージが含まれます。
repo has been initialized in path_to_working_directory
AAOS SDV ソースをダウンロードする
次のコマンドを実行して、作業ディレクトリに Android ソースツリーをダウンロードします。
repo sync -c -j8-c 引数で、Repo にサーバーから現在のマニフェスト ブランチを取得するよう指示します。-j8 コマンドは、早く完了するために同期をスレッド間で分割します。
ビルド環境を設定する
作業ディレクトリ内から、envsetup.sh スクリプトをソースとしてビルド環境を設定します。
source build/envsetup.shこのスクリプトは、Android ソースコードの操作を可能にする複数のコマンド(このページで使用するコマンドを含む)をインポートします。スクリプトのソースを表示するには、platform/build/envsetup.sh をご覧ください。組み込みヘルプを表示するには、hmm と入力してください。
ターゲットを選択する
SDV をビルドする前に、ビルドするターゲットを特定します。ビルドするターゲットを特定するには、lunch コマンドの後に、ビルドするターゲットを表す文字列を指定します。たとえば、次のコマンドを使用して、Cuttlefish エミュレータのターゲットをビルドします。
lunch sdv_core_cf-trunk_staging-userdebugこのコマンドは、ビルドするプロダクト、リリース構成、バリアントを選択し、選択内容を環境に保存します。
SDV の lunch ターゲットは、devices/google/sdv ディレクトリにある別の Git プロジェクトで提供されます。利用可能なターゲットの詳細については、device/google/sdv/README.md をご覧ください。主な Cuttlefish(cf)ターゲットは次のとおりです。
sdv_core_cf-trunk_staging-userdebug- Cuttlefish(cf)で実行される AAOS SDV Core(sdv_core)のイメージをビルドします。sdv_media_cf-trunk_staging-userdebug- virtIO 仮想化メディア API(sdv_media)を使用して AAOS SDV Core のイメージをビルドします。sdv_media_har_cf-trunk_staging-userdebug- 高可用性レンダラ(HAR)を含むように AAOS SDV メディア(sdv_media_cf)lunchターゲットを拡張するイメージをビルドします。HAR は起動時に自動的に実行されます。sdv_ivi_cf-trunk_staging-userdebug- SDV Gateway と Java サンプルアプリを含む車載インフォテインメント(IVI)のイメージをビルドします。sdv_ivi_cf_ds-trunk_staging-userdebug- AAOS SDV IVI ターゲット(sdv_ivi_cf)を拡張し、Display Safety の DriverUI とインストルメント クラスタの実装を含むイメージをビルドします。
AAOS SDV をビルドする
ターゲットをビルドするには、次のコマンドを実行します。初回ビルドにかかる時間はワークステーションの仕様によって異なり、30 ~ 60 分ほどかかります。その後のビルドでは、所要時間は大幅に短縮されます。
mビルドの出力は $OUT_DIR に保存されます。いくつかのターゲットをビルドする場合、それぞれのビルドは $OUT_DIR に保存されます。
Cuttlefish を使用してビルドをテストする
AAOS SDV をビルドしたら、Cuttlefish を使用してビルドをテストします。
ビルドで Cuttlefish を起動するには:
cvd createCuttlefish はビルドされたターゲット(
sdv_core_cf-trunk_staging-userdebug)を使用して実行されます。Cuttlefish が起動すると、次のメッセージが表示されます。VIRTUAL_DEVICE_BOOT_COMPLETED Virtual device booted successfullyadbを実行して Cuttlefish に接続します。adb devicesを実行して、ビルドが実行されていることを確認します。次のような結果が表示されます。List of devices attached 0.0.0.0:6520 devicecvd stopを実行してデバイスをシャットダウンします。
異なるビルドの Cuttlefish の複数のインスタンスを実行するには、Cuttlefish: マルチテナンシーをご覧ください。
トラブルシューティング
このセクションでは、AAOS SDV のダウンロード、ビルド、実行中に発生する可能性のあるエラーのトラブルシューティング方法について説明します。
RBE エラー
リモート ビルド実行(RBE)エラーが発生した場合は、.bashrc または .zshrc から USE_RBE と ENABLE_RBE_BOOTSTRAP の定義を削除します。
cvd: VM マネージャー crosvm はこのマシンではサポートされていません
Cuttlefish が VM マネージャー crosvm がマシンでサポートされていないと報告した場合は、次のコマンドを実行して Cuttlefish をインストールします。
sudo apt install cuttlefish-commoncvd が見つかりません
cvd not found エラーが表示された場合:
- ビルドをもう一度セットアップします。
- 続いて ターゲットを選択するを操作します。
Cuttlefish のクラッシュ ループ
Cuttlefish がクラッシュ ループに入った場合:
- すべての Cuttlefish インスタンスを停止するには、
cvd stopを実行します。 - Cuttlefish を使用してビルドを再テストする。