Mit einem neuen Produkt namens trout unterstützt Android Automotive (AAOS) jetzt die Bereitstellung
als Gast-VM (virtuelle Maschine) in Umgebungen, die mit dem
VirtIO
Standard kompatibel sind. trout basiert auf der
virtuellen Referenzplattform
Cuttlefish und ist als Gerätekonfiguration trout verfügbar. Der Quellcode für den Nutzerbereich befindet sich unter device/google/trout. In der folgenden Tabelle wird die Technologie beschrieben, die zum Virtualisieren der einzelnen Subsysteme in trout verwendet wird.
| Funktion | Technologie |
|---|---|
| Audio Control HAL | vsock/gRPC |
| Audio HAL | virtio-snd |
| Bluetooth | virtio-console |
| Dumpstate HAL | vsock/gRPC |
| Extended View System (EVS) | virtio-video |
| Garagenmodus | vsock/gRPC |
| Grafik | virtio-gpu |
| Globales Navigationssatelliten system (GNSS) | virtio-console |
| Sensor HAL 2.0 | virtio-scmi and IIO |
| Touchscreen-Eingabe | virtio-input |
| Fahrzeug-HAL | vsock/gRPC |
`trout` erweitern
trout kann als Ausgangspunkt zum Erstellen neuer Android-Ziele für Infotainmentsysteme im Fahrzeug verwendet werden. Die Build-Infrastruktur ist so konzipiert, dass sie erweitert und angepasst werden kann.
Beispiel:
# 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 ...]
Mehrere Android-HALs können einzeln durch benutzerdefinierte Implementierungen ersetzt werden. Alternativ können die Standardimplementierungen beibehalten, aber bestimmte Konfigurationsparameter angepasst werden, um eine ordnungsgemäße VM-übergreifende Kommunikation in der Zielumgebung zu ermöglichen. Diese HALs (einschließlich Fahrzeug-HAL, Audio Control HAL und Dumpstate HAL) werden mithilfe einer gRPC-Schnittstelle implementiert, die durch eine vsock-Verbindung zwischen dem AAOS-Gast und einem Hostsystem unterstützt wird, das die zugrunde liegende Funktionsimplementierung bereitstellt. Diese müssen konfiguriert werden, indem die entsprechenden vsock-Verbindungsparameter als Anbietereigenschaften angegeben werden. Der Quellcode ist die ultimative Informationsquelle für die verfügbaren Konfigurationseigenschaften und deren Semantik.
`trout` erstellen
Nutzerbereich kompilieren
So kompilieren Sie den Nutzerbereich:
- Laden Sie die Android-Quellstruktur herunter:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Erstellen Sie die Umgebung:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Kernel erstellen
Für trout 1.1 wird die Kernel-Codebasis in AOSP bereitgestellt. Der trout
Kernel besteht aus demselben Code wie der Upstream-ACK 5.10, ergänzt um
trout-spezifische Module für VirtIO-Subsysteme.
- Führen Sie den folgenden Befehl aus, um den Kernel zu klonen:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Führen Sie den folgenden Befehl aus, um den Kernel zu erstellen:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Ihr Hypervisor-Anbieter hat möglicherweise eine andere Kernel-Konfiguration oder zusätzliche Module, die kompiliert werden müssen. Folgen Sie gegebenenfalls dieser spezifischen Anleitung.
Compliance
Wenn AAOS als Gast-VM ausgeführt wird, ist es unser Ziel, aus Framework-Sicht eine kompatible Android-Bereitstellung zu sein. Probleme auf Hostseite fallen in den Zuständigkeitsbereich der jeweiligen Implementierung und liegen außerhalb des Umfangs von trout 1.1.
Wir haben keine zusätzliche xTS-Validierung für trout 1.1 durchgeführt. Beachten Sie weiterhin die folgende Diskussion zur CTS-Unterstützung in trout 1.0.
In trout 1.0 bestehen weiterhin mehrere CTS-Probleme. Die folgenden CTS-Module enthalten bekanntermaßen
Testfehler:
| 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 |
Die folgenden CTS-V-Bereiche enthalten bekanntermaßen Testfehler:
| Car Launcher-Test Bluetooth Low Energy (BLE) Advertiser-Test Streaming Video Quality Verifier Bluetooth HID Device-Test Hifi Ultrasound Microphone-Test Hifi Ultrasound Speaker-Test |
Test „Entsperrtes Gerät erforderlich“ Test „Dynamische Sensorenerkennung“ Test „Sensor außerhalb des Körpers“ Test „Erhebliche Bewegung“ Test „Benachrichtigung zur Audioausgaberouting“ Test „Netzwerkanfrage oder -vorschlag“ |
Versionshinweise
trout 1.1 enthält die folgenden bekannten Probleme:
- Nutzer-Builds von
troutsind nicht verfügbar. Das System wird als-userdebug, was sich auf einige CTS-Tests auswirken kann, erstellt. - Android Verified Boot (AVB) wird nicht unterstützt.
- Einige Android-Subsysteme sind möglicherweise nicht verfügbar, darunter Secure World und NNHAL.
- Der Gastnetzwerkzugriff wird in der Regel über einen virtualisierten WLAN-Adapter und
einen
virtio-netTunnel bereitgestellt. Die Konnektivität auf Hostseite hängt von Ihrer spezifischen Hypervisor-Bereitstellung ab. - Einige Implementierungen bieten möglicherweise nur eingeschränkte oder keine Bluetooth-Funktionen.
- Die VHAL-Ereigniseinfügung funktioniert möglicherweise nicht für einige Sensoren.
- Bei einigen hohen Arbeitslasten kann es zu Fehlern bei der Audiowiedergabe kommen.
- In einigen Implementierungen kann ein Neustart des AAOS-Gasts über adb das gesamte System neu starten.
- STS kann zu Systeminstabilität führen und einen Neustart erfordern.
Weitere Informationen finden Sie in den Versionshinweisen für Partner für Ihre spezifische Bereitstellung von trout.