Attraverso un nuovo prodotto denominato trout
, Android Automotive (AAOS) fornisce ora il supporto per l'implementazione come macchina virtuale (VM) ospite 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 può essere trovato su device/google/trout
. La tabella seguente descrive la tecnologia utilizzata per virtualizzare ciascuno dei sottosistemi in trout
.
Caratteristica | Tecnologia |
---|---|
Controllo audio HAL | vsock/gRPC |
AudioHAL | virtio-snd |
Bluetooth | virtio-console |
HAL discarica | vsock/gRPC |
Sistema di visualizzazione estesa (EVS) | virtio-video |
Modalità garage | vsock/gRPC |
Grafica | virtio-gpu |
Sistema globale di navigazione satellitare (GNSS) | virtio-console |
Sensore HAL 2.0 | virtio-scmi and IIO |
Ingresso sul touchscreen | virtio-input |
Veicolo HAL | vsock/gRPC |
Estendi la trota
trout
può essere utilizzata come punto di partenza per creare nuovi target Android di infotainment di bordo (IVI). L'infrastruttura di costruzione è progettata per essere estesa e personalizzata. Per 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 individualmente con implementazioni personalizzate oppure è possibile mantenere le implementazioni predefinite ma alcuni parametri di configurazione possono essere modificati per stabilire una corretta comunicazione tra VM nell'ambiente di destinazione. Questi HAL (inclusi HAL veicolo, HAL controllo audio e HAL Dumpstate) sono 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
appropriati come proprietà del fornitore. Il codice sorgente funge da verità fondamentale su cui le proprietà sono disponibili per la configurazione e la loro semantica.
Costruisci trote
Compila lo spazio utente
Per compilare lo spazio utente:
- Scarica l'albero dei sorgenti Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Costruisci l'ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Costruisci 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 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 compilare il kernel eseguire:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Il tuo fornitore di hypervisor potrebbe richiedere una configurazione del kernel diversa o moduli aggiuntivi da compilare. Assicurati di seguire questa guida specifica, se fornita.
Conformità
Quando AAOS viene eseguito come VM ospite, il nostro obiettivo è quello di essere una distribuzione Android compatibile dal punto di vista del framework. Le questioni lato host sono di competenza di ciascuna implementazione e esulano dall'ambito di trout
1.1.
Non abbiamo eseguito un'ulteriore convalida xTS su trout
1.1. Continuare a fare riferimento alla discussione seguente sul supporto CTS in trout
1.0.
In trout
1.0 permangono 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 CtsUsbTest 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:
Prova del lanciatore per auto Test dell'inserzionista Bluetooth Low Energy (BLE). Verificatore di qualità video in streaming Test del dispositivo HID Bluetooth Test del microfono ad ultrasuoni HiFi Test degli altoparlanti ad ultrasuoni HiFi | Dispositivo sbloccato Test richiesto Test di rilevamento dinamico del sensore Test del sensore del corpo spento Test di movimento significativo Test di notifica del 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 è costruito come-userdebug
, che può influenzare alcuni test CTS. - L'avvio verificato Android (AVB) non è supportato.
- Alcuni sottosistemi Android potrebbero non essere disponibili, inclusi Secure World 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 dalla distribuzione specifica dell'hypervisor. - Alcune implementazioni potrebbero offrire funzionalità Bluetooth limitate o assenti.
- Un'iniezione di eventi VHAL potrebbe non funzionare per alcuni sensori.
- Alcuni carichi di lavoro pesanti possono causare problemi nella riproduzione audio.
- In alcune implementazioni, il riavvio adb del guest AAOS potrebbe riavviare l'intero sistema.
- STS può causare instabilità del sistema e richiedere il riavvio.
Per ulteriori dettagli, fare riferimento alle note sulla versione del partner per la distribuzione specifica di trout
.