Piattaforma di riferimento

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:

  1. Scarica la struttura del codice sorgente di Android:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. 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.

  1. Per clonare il kernel, esegui:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. 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.