Attraverso 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 all'indirizzo device/google/trout
. La tabella riportata di seguito 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 |
Global Navigation Satellite System (GNSS) | virtio-console |
Sensor HAL 2.0 | virtio-scmi and IIO |
Input touchscreen | virtio-input |
HAL del veicolo | vsock/gRPC |
Prolunga trota
trout
può essere utilizzato come punto di partenza per creare nuovi target Android per l'intrattenimento in auto (IVI). L'infrastruttura di compilazione è 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) sono implementati tramite un'interfaccia gRPC supportata da una
vsock
connessione tra il guest AAOS e un sistema host che fornisce l'implementazione della funzionalità di base. Questi devono essere configurati fornendo i parametri di connessione vsock
appropriati come proprietà del fornitore. Il codice sorgente funge da verità fattuale definitiva sulle proprietà disponibili per la configurazione e sulla loro semantica.
Crea trota
Compilare lo spazio utente
Per compilare lo spazio utente:
- Scarica la struttura del codice sorgente 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
Compila il kernel
Per trout
1.1, la base di codice del kernel è fornita in AOSP. Il kernel trout
è composto dallo stesso codice dell'ACK 5.10 upstream, con l'aggiunta di moduli specifici per trout
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 eseguire la corsa del kernel:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Il fornitore dell'hypervisor potrebbe richiedere una configurazione del kernel diversa o moduli aggiuntivi da compilare. Assicurati di seguire queste indicazioni specifiche, se fornite.
Conformità
Quando AAOS viene eseguito come VM guest, il nostro obiettivo è avere un deployment di 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 ulteriori convalide xTS su trout
1.1. Continua
a fare riferimento alla discussione riportata di seguito sull'assistenza CTS in trout
1.0.
In trout
1.0 persistono diversi problemi relativi alla 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 inserzionisti Bluetooth Low Energy (BLE) Verificatore della qualità video in streaming Test del dispositivo HID Bluetooth Test del microfono a ultrasuoni Hi-Fi Test dell'altoparlante a ultrasuoni Hi-Fi |
Test di verifica del dispositivo sbloccato Test di rilevamento dei sensori dinamici Test del sensore lontano dal corpo Test di movimento significativo Test di notifica di routing dell'uscita audio Test di richiesta o suggerimento di rete |
Note di rilascio
trout
1.1 contiene i seguenti problemi noti:
- Le build utente di
trout
non sono disponibili. Il sistema è stato creato come-userdebug
, il che può influire su alcuni test CTS. - Il Boot verificato Android (AVB) non è supportato.
- Alcuni sottosistemi Android potrebbero non essere disponibili, tra cui il mondo sicuro e NNHAL.
- L'accesso alla rete ospite viene generalmente fornito tramite un adattatore Wi-Fi virtualizzato e un tunnel
virtio-net
. 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 carichi di lavoro pesanti possono causare problemi di riproduzione audio.
- In alcune implementazioni, il riavvio adb dell'ospite 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 tuo deployment specifico di
trout
.