リファレンス プラットフォーム

Android Automotive OS(AAOS)は、trout という新しいプロダクトを通じて、VirtIO 標準に対応している環境にゲスト仮想マシン(VM)としてデプロイするためのサポートを提供するようになりました。troutCuttlefish 仮想リファレンス プラットフォームに基づいており、trout デバイス設定として利用できます。ユーザー空間のソースコードは device/google/trout にあります。以下の表に、trout で各サブシステムの仮想化に使用されるテクノロジーを示します。

機能 テクノロジー
オーディオ コントロール HAL vsock/gRPC
オーディオ HAL virtio-snd
Bluetooth virtio-console
Dumpstate HAL vsock/gRPC
拡張ビューシステム(EVS) virtio-video
ガレージモード vsock/gRPC
グラフィック virtio-gpu
グローバル ナビゲーション衛星システム(GNSS) virtio-console
センサー HAL 2.0 virtio-scmi and IIO
タッチスクリーン入力 virtio-input
車両 HAL vsock/gRPC

trout の拡張

trout は、新しい車載インフォテインメント(IVI)Android ターゲットを作成する際のベースとして使用できます。ビルド インフラストラクチャは、拡張とカスタマイズができるように設計されています。次に例を示します。

# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)

# Customize HALs as needed
LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service
LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl

# Configure SELinux policy
BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem

# Configure properties
LOCAL_DUMPSTATE_PROPERTIES := \
    ro.vendor.dumpstate.server.cid=22 \
    ro.vendor.dumpstate.server.port=406 \
    ro.vendor.helpersystem.log_loc=/data/dumpstate

[... and more as needed ...]

複数の Android HAL を個別にカスタム実装に置き換えることができます。デフォルト実装は維持されますが、特定の構成パラメータは、ターゲット環境で適切な VM 間通信を確立するように調整されます。これらの HAL(車両 HAL、オーディオ コントロール HAL、Dumpstate HAL を含む)は、AAOS ゲストと基となる機能の実装を提供するホストシステムとの間の vsock 接続に基づく gRPC インターフェースによって実装されています。ベンダー プロパティとして適切な vsock 接続パラメータを指定して構成する必要があります。ソースコードは、設定とそのセマンティクスでプロパティが利用できる最終的なグラウンド トゥルースの役割を果たします。

trout のビルド

ユーザー空間のコンパイル

ユーザー空間をコンパイルするには:

  1. 以下のコマンドで、Android ソースツリーをダウンロードします。
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. 環境を構築します。
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

カーネルをビルドする

trout 1.1 の場合、カーネルのコードベースは AOSP で提供されています。trout カーネルは、アップストリームの ACK 5.10 と同じコードで構成され、VirtIO サブシステム用の trout 固有のモジュールが追加されています。

  1. カーネルのクローンを作成するには、次のコマンドを実行します。
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. カーネルをビルドするには、次のコマンドを実行します。
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

ハイパーバイザ サプライヤーによっては、異なるカーネル設定が必要となる場合や、コンパイルを必要とする追加モジュールがある場合があります。具体的なガイダンスが提供されている場合は、それに沿うようにしてください。

コンプライアンス

AAOS がゲスト VM として実行される場合の目標は、フレームワークの観点から互換性のある Android デプロイを提供することです。ホスト側の問題は各実装の範囲であり、trout 1.1 の範囲外です。

trout 1.1 では、追加の xTS 検証を実施していません。trout 1.0 での CTS サポートについての以下の説明を引き続きご参照ください。

trout 1.0 では、CTS に関するいくつかの問題が残っています。次の CTS モジュールには、テストの失敗が含まれることがわかっています。

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostTestCases
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
CtsUsbTests
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

次の CTS-V 領域には、テストの失敗が含まれることがわかっています。

自動車ランチャー テスト
Bluetooth Low Energy(BLE)広告主テスト
ストリーミング動画品質検証ツール
Bluetooth HID デバイステスト
Hifi 超音波マイクテスト
Hifi 超音波スピーカー テスト
デバイスのロック解除が必要なテスト
ダイナミック センサー検出テスト
オフボディ センサーのテスト
大きなモーション テスト
音声出力ルーティング通知テスト
ネットワーク リクエストまたは提案のテスト

リリースノート

trout 1.1 には、次の既知の問題があります。

  • trout のユーザービルドは使用できません。システムは -userdebug としてビルドされるため、一部の CTS テストに影響する可能性があります。
  • Android の確認付きブート(AVB)はサポートされません。
  • セキュア環境や NNHAL など、一部の Android サブシステムは使用できない場合があります。
  • 一般に、ゲスト ネットワークへのアクセスは、仮想化 Wi-Fi アダプターと virtio-net トンネルを使用して提供されます。ホスト側の接続は、特定のハイパーバイザ デプロイに応じて異なります。
  • 実装によっては、Bluetooth 機能が制限される、または提供されない場合があります。
  • VHAL イベント挿入は、一部のセンサーで機能しない場合があります。
  • 大量のワークロードが原因で、音声の再生が途切れる場合があります。
  • 一部の実装では、AAOS ゲストの adb 再起動によりシステム全体が再起動される場合があります。
  • STS が原因でシステムが不安定になり、再起動が必要になる場合があります。

詳細については、trout の特定のデプロイに関するパートナー リリースノートをご覧ください。