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連線參數做為供應商屬性,才能設定這些參數。原始碼是可供設定的屬性及其語意最終的真實來源。
製作鱒魚
編譯使用者空間
如要編譯使用者空間:
- 下載 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 開放原始碼計畫 (AOSP) 提供核心程式碼集。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 事件。
- 某些高負載工作可能會導致音訊播放故障。
- 在某些實作方式中,重新啟動 AAOS 訪客的 adb 可能會重新啟動整個系統。
- STS 可能會導致系統不穩定,因此需要重新啟動。
如需更多詳細資料,請參閱trout特定部署的合作夥伴版本資訊。