Tramite un nuovo prodotto denominato trout, Android Automotive (AAOS) ora fornisce il supporto
per il deployment come macchina virtuale (VM) guest in ambienti compatibili con lo
standard
VirtIO. trout si basa sulla piattaforma di riferimento virtuale
Cuttlefish
ed è disponibile come configurazione del dispositivo trout. Il codice sorgente dello spazio utente è disponibile in device/google/trout. La tabella seguente descrive la tecnologia utilizzata per virtualizzare ciascuno dei sottosistemi in trout.
| Funzionalità | Tecnologia |
|---|---|
| HAL di controllo audio | vsock/gRPC |
| HAL audio | virtio-snd |
| Bluetooth | virtio-console |
| HAL Dumpstate | vsock/gRPC |
| Extended View System (EVS) | virtio-video |
| Modalità Garage | vsock/gRPC |
| Grafica | virtio-gpu |
| Sistema di navigazione satellitare globale (GNSS) | virtio-console |
| HAL sensore 2.0 | virtio-scmi and IIO |
| Input touchscreen | virtio-input |
| Vehicle HAL | vsock/gRPC |
Estendi trout
trout può essere utilizzato come punto di partenza per creare nuovi target Android per In-Vehicle Infotainment (IVI). L'infrastruttura di build è progettata per essere estesa e personalizzata.
Ad esempio:
# 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 ...]
Diversi HAL Android possono essere sostituiti singolarmente con implementazioni personalizzate oppure le implementazioni predefinite possono essere mantenute, ma alcuni parametri di configurazione possono essere modificati per stabilire una comunicazione inter-VM corretta nell'ambiente di destinazione. Questi HAL (inclusi Vehicle HAL, Audio Control HAL e Dumpstate HAL) vengono implementati tramite un'interfaccia gRPC supportata da una connessione vsock tra il guest AAOS e un sistema host che fornisce l'implementazione della funzionalità sottostante. Questi devono essere configurati fornendo i parametri di connessione vsock corretti come proprietà del fornitore. Il codice sorgente funge da verità di base definitiva su quali proprietà sono disponibili per la configurazione e sulla loro semantica.
Crea trout
Compila lo spazio utente
Per compilare lo spazio utente:
- Scarica l'albero dei sorgenti di Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Crea l'ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Crea il kernel
Per trout 1.1, il codebase del kernel è fornito in AOSP. Il trout
kernel è composto dallo stesso codice dell'ACK 5.10 upstream, con l'aggiunta di
trout-specifici moduli per i sottosistemi VirtIO.
- Per clonare il kernel, esegui:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Per creare il kernel, esegui:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Il fornitore dell'hypervisor potrebbe avere una configurazione del kernel diversa richiesta o moduli aggiuntivi che devono essere compilati. Assicurati di seguire queste indicazioni specifiche, se fornite.
Conformità
Quando AAOS viene eseguito come VM guest, il nostro obiettivo è avere un deployment Android compatibile dal punto di vista del framework. I problemi lato host sono di competenza di ogni implementazione e non rientrano nell'ambito di trout 1.1.
Non abbiamo eseguito un'ulteriore convalida xTS su trout 1.1. Continua
a fare riferimento alla discussione riportata di seguito sul supporto CTS in trout 1.0.
In trout 1.0 rimangono diversi problemi CTS. È noto che i seguenti moduli CTS includono errori di test:
| 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 |
È noto che le seguenti aree CTS-V includono errori di test:
| Test di Car Launcher Test di Bluetooth Low Energy (BLE) Advertiser Verificatore della qualità dello streaming video Test del dispositivo HID Bluetooth Test del microfono a ultrasuoni HiFi Test dell'altoparlante a ultrasuoni HiFi |
Test del dispositivo sbloccato richiesto Test di rilevamento dinamico dei sensori Test del sensore fuori dal corpo Test di movimento significativo Test di notifica del routing dell'output audio Test di richiesta o suggerimento di rete |
Note di rilascio
trout 1.1 contiene i seguenti problemi noti:
- Le build utente di
troutnon sono disponibili. Il sistema viene creato come-userdebug, il che può influire su alcuni test CTS. - Android Verified Boot (AVB) non è supportato.
- Alcuni sottosistemi Android potrebbero non essere disponibili, tra cui secure world e NNHAL.
- L'accesso alla rete guest viene generalmente fornito tramite una scheda Wi-Fi virtualizzata e
un
virtio-nettunnel. La connettività lato host dipende dal deployment dell'hypervisor specifico. - Alcune implementazioni potrebbero offrire funzionalità Bluetooth limitate o assenti.
- L'iniezione di eventi VHAL potrebbe non funzionare per alcuni sensori.
- Alcuni workload pesanti possono causare problemi di riproduzione audio.
- In alcune implementazioni, il riavvio adb del guest AAOS potrebbe riavviare l'intero sistema.
- STS può causare instabilità del sistema e richiedere un riavvio.
Per ulteriori dettagli, consulta le note di rilascio del partner per il deployment specifico di trout.