Über ein neues 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 trout
-Gerätekonfiguration verfügbar. Den Quellcode für den Userspace finden Sie unter device/google/trout
. In der folgenden Tabelle wird die Technologie beschrieben, mit der die einzelnen Subsysteme in trout
virtualisiert werden.
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 |
Global Navigation Satellite System (GNSS) | virtio-console |
Sensor HAL 2.0 | virtio-scmi and IIO |
Touchscreen-Eingabe | virtio-input |
Fahrzeug-HAL | vsock/gRPC |
Extend trout
trout
kann als Ausgangspunkt für die Erstellung neuer Android-IVi-Ziele (In-Vehicle Infotainment) verwendet werden. Die Build-Infrastruktur kann erweitert und angepasst werden.
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 oder die Standardimplementierungen beibehalten, aber bestimmte Konfigurationsparameter angepasst werden, um eine ordnungsgemäße VM-Kommunikation in der Zielumgebung herzustellen. Diese HALs (einschließlich Vehicle HAL, Audio Control HAL und Dumpstate HAL) werden über eine gRPC-Schnittstelle implementiert, die von einer 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 richtigen vsock
-Verbindungsparameter als Anbietereigenschaften angegeben werden. Der Quellcode ist die ultimative Quelle für Informationen dazu, welche Properties für die Konfiguration verfügbar sind und welche Bedeutung sie haben.
Build trout
Userspace kompilieren
So kompilieren Sie den Userspace:
- Laden Sie den Android-Quellbaum herunter:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Umgebung erstellen:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Kernel erstellen
Für trout
1.1 wird die Kernel-Codebase 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 zum Klonen des Kernels Folgendes aus:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Führen Sie zum Erstellen des Kernels Folgendes aus:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Möglicherweise ist für Ihren Hypervisor eine andere Kernelkonfiguration erforderlich oder es müssen zusätzliche Module kompiliert werden. Beachten Sie gegebenenfalls die spezifischen Hinweise.
Compliance
Wenn AAOS als Gast-VM ausgeführt wird, ist unser Ziel eine kompatible Android-Bereitstellung aus der Perspektive des Frameworks. Hostseitige Probleme liegen in der Zuständigkeit der jeweiligen Implementierung und fallen nicht in den Geltungsbereich von trout
1.1.
Wir haben keine zusätzliche xTS-Validierung für trout
1.1 durchgeführt. Lesen Sie weiter unten die Informationen zum CTS-Support in trout
1.0.
In trout
1.0 sind noch einige CTS-Probleme vorhanden. Bei den folgenden CTS-Modulen sind Testfehler bekannt:
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 |
In den folgenden CTS-V-Bereichen treten bekanntermaßen Testfehler auf:
Test für Auto-Launcher Bluetooth Low Energy (BLE)-Werbetreibender-Test Streaming Video Quality Verifier Bluetooth HID-Gerätetest Hifi-Ultraschallmikrofontest Hifi-Ultraschalllautsprechertest |
Test, ob das Gerät entsperrt ist Test der dynamischen Sensorerkennung Test des Sensors außerhalb des Körpers Test für signifikante Bewegungen Test der Benachrichtigung zum Audioausgabe-Routing Test für Netzwerkanfragen oder -vorschläge |
Versionshinweise
trout
1.1 enthält die folgenden bekannten Probleme:
- Nutzerversionen von
trout
sind nicht verfügbar. Das System ist als-userdebug
aufgebaut, was sich auf einige CTS-Tests auswirken kann. - Android Verified Boot (AVB) wird nicht unterstützt.
- Einige Android-Subsysteme sind möglicherweise nicht verfügbar, darunter Secure World und NNHAL.
- Der Zugriff auf das Gastnetzwerk erfolgt in der Regel über einen virtualisierten WLAN-Adapter und einen
virtio-net
-Tunnel. Die hostseitige Konnektivität hängt von Ihrer spezifischen Hypervisor-Bereitstellung ab. - Einige Implementierungen bieten möglicherweise nur eingeschränkte oder gar keine Bluetooth-Funktionen.
- Die VHAL-Ereignis-Injection funktioniert bei einigen Sensoren möglicherweise nicht.
- Bei einigen hohen Arbeitslasten kann es zu Audiowiedergabefehlern kommen.
- Bei einigen Implementierungen kann der Neustart des AAOS-Gasts mit adb das gesamte System neu starten.
- STS kann zu Systeminstabilität führen und einen Neustart erfordern.
Weitere Informationen finden Sie in den Partner-Versionshinweisen für Ihre spezifische Bereitstellung von trout
.