透過名為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
連接參數作為供應商屬性來配置這些參數。原始碼充當最終的基本事實,其屬性可用於配置及其語義。
建造鱒魚
編譯使用者空間
編譯使用者空間:
- 下載 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,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 模組包含測試失敗:
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
部署的合作夥伴發行說明。