參考平台

透過名為trout的新產品,Android Automotive (AAOS) 現在支援在與VirtIO標準相容的環境中部署為來賓虛擬機器 (VM)。 trout基於Cuttlefish虛擬參考平台,可作為trout設備配置使用。使用者空間原始碼可以在device/google/trout找到。下表描述了用於虛擬化trout中每個子系統的技術。

特徵科技
音訊控制HAL vsock/gRPC
音訊哈爾virtio-snd
藍牙virtio-console
轉儲狀態 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 可以單獨替換為自訂實現,或保留預設實現,但調整某些配置參數以在目標環境中建立正確的虛擬機間通訊。這些 HAL(包括 Vehicle 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,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 模組包含測試失敗:

CtsStagingInstallHost測試用例
CtsRollbackManagerHostTestCases
CtsVideo測試用例
CtsHostside網路測試
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHost測試用例
CtsNative硬體測試用例
Cts內容測試案例
CtsCarHost測試用例
CtsOs測試案例
CtsStatsdHostTestCases
CtsVoiceInteraction測試用例
CtsView測試用例
CtsCamera測試案例
CtsLocationGnss測試用例
CtsGraphics測試案例
CtsIncidentHost測試案例
CtsInstallHost測試案例
CtsNativeVerifiedBoot測試用例
中旅網測試用例
CtsWindowManagerDeviceTestCases
CtsMedia壓力測試用例
CtsApp測試用例
CtsUsb測試
CtsAutoFillService測試用例
Cts顯示測試用例
CtsMedia測試用例
CtsDeqp測試用例
CtsDumpsysHost測試用例
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHost測試案例
CtsInputMethod測試用例
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPI 基準測試案例
CtsSimpleperf測試用例
Cts輔助使用測試用例
CtsAppSecurityHost測試案例
CtsKeystore測試用例

已知以下 CTS-V 區域包含測試失敗:

汽車發射器測試
藍牙低功耗 (BLE) 廣告主測試
串流視訊品質驗證器
藍牙 HID 裝置測試
Hifi超音波麥克風測試
Hifi超音波波音箱測試
解鎖設備所需的測試
動態感測器發現測試
離體感測器測試
顯著運動測試
音訊輸出路由通知測試
網路請求或建議測試

發行說明

trout 1.1 包含以下已知問題:

  • trout的使用者版本不可用。系統建置為-userdebug ,這可能會影響一些 CTS 測試。
  • 不支援 Android 驗證啟動 (AVB)。
  • 某些 Android 子系統可能無法使用,包括 secure world 和 NNHAL。
  • 訪客網路存取通常透過虛擬化 Wi-Fi 適配器和virtio-net隧道提供。主機端連線取決於您的特定虛擬機器管理程式部署。
  • 某些實現可能提供有限的藍牙功能或不提供藍牙功能。
  • VHAL 事件注入可能不適用於某些感測器。
  • 一些繁重的工作負載可能會導致音訊播放故障。
  • 在某些實作中,AAOS 來賓的 adb restart 可能會重新啟動整個系統。
  • STS 可能會導致系統不穩定並需要重新啟動。

有關其他詳細信息,請參閱針對您的特定trout部署的合作夥伴發行說明。