ダウンロード、ビルド、実行

このページでは、Cuttlefish で AAOS SDV をダウンロード、ビルド、実行する方法について説明します。

Repo クライアントの初期化

クライアントを設定して Android ソース リポジトリにアクセスします。

  1. 作業ディレクトリ(sdv など)を作成し、そこに移動します。

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
  2. ソース コントロールの作業ディレクトリを初期化します。

    この例では、ブランチ 26Q2-fs-release を使用しています。

    RELEASE=26Q2-fs-release
    repo 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_cflunch ターゲットを拡張するイメージをビルドします。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 を使用してビルドをテストします。

  1. ビルドで Cuttlefish を起動するには:

    cvd create

    Cuttlefish はビルドされたターゲット(sdv_core_cf-trunk_staging-userdebug)を使用して実行されます。Cuttlefish が起動すると、次のメッセージが表示されます。

    VIRTUAL_DEVICE_BOOT_COMPLETED
    Virtual device booted successfully
  2. adb を実行して Cuttlefish に接続します。

  3. adb devices を実行して、ビルドが実行されていることを確認します。次のような結果が表示されます。

    List of devices attached
    0.0.0.0:6520 device
  4. cvd stop を実行してデバイスをシャットダウンします。

異なるビルドの Cuttlefish の複数のインスタンスを実行するには、Cuttlefish: マルチテナンシーをご覧ください。

トラブルシューティング

このセクションでは、AAOS SDV のダウンロード、ビルド、実行中に発生する可能性のあるエラーのトラブルシューティング方法について説明します。

RBE エラー

リモート ビルド実行(RBE)エラーが発生した場合は、.bashrc または .zshrc から USE_RBEENABLE_RBE_BOOTSTRAP の定義を削除します。

cvd: VM マネージャー crosvm はこのマシンではサポートされていません

Cuttlefish が VM マネージャー crosvm がマシンでサポートされていないと報告した場合は、次のコマンドを実行して Cuttlefish をインストールします。

sudo apt install cuttlefish-common

cvd が見つかりません

cvd not found エラーが表示された場合:

  1. ビルドをもう一度セットアップします。
  2. 続いて ターゲットを選択するを操作します。

Cuttlefish のクラッシュ ループ

Cuttlefish がクラッシュ ループに入った場合:

  1. すべての Cuttlefish インスタンスを停止するには、cvd stop を実行します。
  2. Cuttlefish を使用してビルドを再テストする