參考平台

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

功能 科技
音訊控制 HAL vsock/gRPC
音訊 HAL virtio-snd
藍牙 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可用於建立新的車載資訊娛樂 (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) 是透過 gRPC 介面實作,並由 AAOS 訪客與主機系統之間的 vsock 連線提供支援,主機系統則提供基礎功能實作。您必須提供適當的vsock連線參數做為供應商屬性,才能設定這些參數。原始碼是可供設定的屬性及其語意最終的真實來源。

製作鱒魚

編譯使用者空間

如要編譯使用者空間:

  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 開放原始碼計畫 (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 區域會發生測試失敗情形:

車輛啟動器測試
藍牙低功耗 (BLE) 廣告主測試
串流影片品質驗證器
藍牙 HID 裝置測試
高傳真超音波麥克風測試
高傳真超音波喇叭測試
需要解鎖裝置測試
動態感應器探索測試
脫離身體感應器測試
大幅動作測試
音訊輸出路徑通知測試
網路要求或建議測試

版本資訊

trout 1.1 有下列已知問題:

  • 無法使用 trout 的使用者版本。這個系統是建構為 -userdebug,可能會影響部分 CTS 測試。
  • 不支援 Android 驗證開機程序 (AVB)。
  • 部分 Android 子系統可能無法使用,包括安全世界和 NNHAL。
  • 訪客網路存取權通常是透過虛擬 Wi-Fi 介面卡和 virtio-net 通道提供。主機端連線取決於您部署的特定管理程序。
  • 部分實作項目可能僅提供有限的藍牙功能,或不提供藍牙功能。
  • 部分感應器可能無法注入 VHAL 事件。
  • 某些高負載工作可能會導致音訊播放故障。
  • 在某些實作方式中,重新啟動 AAOS 訪客的 adb 可能會重新啟動整個系統。
  • STS 可能會導致系統不穩定,因此需要重新啟動。

如需更多詳細資料,請參閱trout特定部署的合作夥伴版本資訊。