透過名為 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
編譯使用者空間
如何編譯使用者空間:
- 下載 Android 來源樹狀結構:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- 建構環境:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
建構核心
trout
1.1 的核心程式碼集會在 Android 開放原始碼計畫中提供。trout
核心是由與上游 ACK 5.10 相同的程式碼組成,並新增 VirtIO 子系統的 trout
專屬模組。
- 如要複製核心,請執行:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- 如要建構核心執行作業,請按照下列步驟操作:
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
。