參考平台

透過名為 trout 的新產品,Android Automotive (AAOS) 現已支援在與 VirtIO 標準相容的環境中,以訪客虛擬機器 (VM) 的形式進行部署。trout 是以 Cuttlefish 虛擬參考平台為基礎,可做為 trout 裝置設定。您可以在 device/google/trout 中找到使用者空間原始碼。下表說明用於將 trout 中的每個子系統虛擬化的技術。

功能 科技
Audio Control HAL vsock/gRPC
Audio HAL virtio-snd
藍牙 virtio-console
Dumpstate HAL vsock/gRPC
Extended View System (EVS) virtio-video
車庫模式 vsock/gRPC
圖像 virtio-gpu
全球導航衛星系統 (GNSS) virtio-console
Sensor HAL 2.0 virtio-scmi and IIO
觸控螢幕輸入 virtio-input
車輛 HAL vsock/gRPC

延長鯔

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 (包括 Vehicle HAL、Audio Control HAL 和 Dumpstate HAL) 是透過 gRPC 介面實作,該介面由 AAOS 訪客和主機系統之間的 vsock 連線支援,提供基礎功能實作。您必須透過提供適當的 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 的核心程式碼集會在 Android 開放原始碼計畫中提供。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 區域已知包含測試失敗:

車輛啟動器測試
藍牙低功耗 (BLE) 廣告客戶測試
串流影片品質驗證工具
藍牙 HID 裝置測試
高保真超音波麥克風測試
高保真超音波喇叭測試
需要解鎖裝置的測試
動態感應器偵測測試
人體感應器測試
重大動作測試
音訊輸出路徑通知測試
網路要求或建議測試

版本資訊

trout 1.1 包含下列已知問題:

  • 無法使用 trout 的使用者版本。系統是以 -userdebug 建構,可能會影響部分 CTS 測試。
  • 不支援 Android 驗證啟動 (AVB)。
  • 部分 Android 子系統可能無法使用,包括安全世界和 NNHAL。
  • 訪客網路存取權通常是透過虛擬化的 Wi-Fi 轉接器和 virtio-net 隧道提供。主機端連線功能取決於您部署的特定管理程序。
  • 部分實作方式可能提供有限的藍牙功能,甚至完全不提供。
  • 部分感應器可能無法使用 VHAL 事件注入功能。
  • 部分工作負載量過大時,可能會導致音訊播放出現異常。
  • 在某些實作中,ADB 重新啟動 AAOS 訪客可能會重新啟動整個系統。
  • STS 可能會導致系統不穩定,需要重新啟動。

如需更多詳細資訊,請參閱合作夥伴版本資訊,瞭解您具體部署的 trout