Plataforma de referencia

Android Automotive (AAOS) ahora ofrece compatibilidad con un producto nuevo llamado trout. para implementarlas como máquina virtual (VM) invitada en entornos compatibles con el VirtIO estándar. trout se basa en el Cuttlefish de referencia virtual y está disponible como la configuración del dispositivo trout. El del código fuente del espacio de usuario en device/google/trout. La tabla a continuación, se describe la tecnología que se utiliza para virtualizar cada uno de los subsistemas de trout.

Función Tecnología
HAL de control de audio vsock/gRPC
HAL de audio virtio-snd
Bluetooth virtio-console
HAL de estado inactivo vsock/gRPC
Sistema de vista extendida (EVS) virtio-video
Modo garaje vsock/gRPC
Gráficos virtio-gpu
Satélite de navegación global (GNSS) virtio-console
HAL del sensor 2.0 virtio-scmi and IIO
Entrada de pantalla táctil virtio-input
HAL del vehículo vsock/gRPC

Extender trucha

trout se puede usar como punto de partida para crear un nuevo infoentretenimiento en el vehículo (IVI) Orientaciones de Android. La infraestructura de compilación se diseñó para extenderse y personalizarse. Por ejemplo:

# 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 ...]

Varias HAL de Android pueden reemplazarse de manera individual con implementaciones personalizadas. se mantienen las implementaciones predeterminadas, pero se ajustan ciertos parámetros de configuración para establecer una comunicación adecuada entre VM en el entorno de destino. Estas HAL (incluidas las HAL de vehículos, HAL de control de audio y HAL de estado de volcado) se implementan a través de una interfaz gRPC respaldada por un vsock entre el invitado AAOS y un sistema host que proporciona la implementación de la función subyacente. Estas se deben configurar proporcionando los datos Parámetros de conexión de vsock como propiedades del proveedor El código fuente es la clave verdades fundamentales sobre qué propiedades están disponibles para la configuración y sus semánticas.

Crear truchas

Compila el espacio del usuario

Para compilar el espacio de usuario, haz lo siguiente:

  1. Descarga el árbol de fuentes de Android:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. Compila el entorno:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

Cómo compilar el kernel

Para trout 1.1, AOSP proporciona la base de código del kernel. El trout está compuesto por el mismo código que el ACK posterior 5.10, con la adición de Módulos específicos de trout para subsistemas de VirtIO

  1. Para clonar el kernel, ejecuta lo siguiente:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. Para compilar el kernel, ejecuta lo siguiente:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

Tu proveedor de hipervisor podría tener una configuración de kernel diferente requerida o adicional módulos que deben compilarse. Asegúrate de seguir esta guía específica, si se proporciona.

Cumplimiento

Cuando AAOS se ejecuta como una VM invitada, nuestro objetivo es ser una implementación de Android compatible desde el desde la perspectiva del framework. Los problemas del host son para el ámbito de cada implementación y están fuera del el alcance de trout 1.1.

No realizamos una validación adicional de xTS en trout 1.1. Continuar para consultar la siguiente explicación sobre la compatibilidad de CTS en trout 1.0.

En trout 1.0, quedan varios problemas de CTS. Los siguientes módulos de CTS son conocidos por incluir pruebas fallidas:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
Casos de prueba de CtsVideo
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
Casos de prueba de CtsAdbHost
Casos de prueba de hardwarenativos de Cts
Casos de prueba de contenido de Cts
Casos de prueba de host de CtsCar
Casos de prueba de CtsOs
CtsStatsdHostTestCases
CtsVoiceInteractionTestCases
Casos de prueba de CtsView
Casos de prueba de la cámara de Cts
Casos de prueba de CtsLocationGnss
Casos de prueba de CtsGraphics
Casos de prueba de host de CtsIncident
Casos de instalación de prueba de host de Cts
Casos de prueba de inicio verificadodeCtsNative
Casos de prueba de CtsNet
CtsWindowManagerDeviceTestCases
Casos de prueba de CtsMediaStress
Casos de prueba de CtsApp
Pruebas de CtsUsb
CtsAutoFillServiceTestCases
Casos de prueba de CtsDisplay
CtsMediaTestCases
Casos de prueba de CtsDeqp
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
Casos de prueba de CtsSecurityHost
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
Casos de prueba de CtsAppSecurityHostTest
Casos de prueba de CtsKeystore

Se sabe que las siguientes áreas de CTS-V incluyen pruebas fallidas:

Prueba del Selector de vehículos
Prueba de Bluetooth de bajo consumo (BLE) para anunciantes
Verificador de calidad de video de transmisión
Prueba de dispositivo Bluetooth HID
Prueba del micrófono ultrasonido de alta fidelidad
Prueba de ultrasonido de alta fidelidad con bocinas
Prueba obligatoria de dispositivo desbloqueado
Prueba de descubrimiento del sensor dinámico
Prueba del sensor de lejanía
Prueba de movimiento significativo
Prueba de notificación de enrutamiento de salida de audio
Prueba de solicitud o sugerencia de red

Notas de la versión

trout 1.1 contiene los siguientes problemas conocidos:

  • Las compilaciones de usuario de trout no están disponibles. El sistema se compila -userdebug, que puede afectar algunas pruebas del CTS
  • El inicio verificado de Android (AVB) no es compatible.
  • Es posible que algunos subsistemas de Android no estén disponibles, como Secure World y NNHAL.
  • El acceso a la red para invitados generalmente se proporciona a través de un adaptador de Wi-Fi virtualizado y un virtio-net por túnel. La conectividad del lado del host depende de la implementación específica de tu hipervisor.
  • Algunas implementaciones podrían ofrecer capacidad limitada o nula de Bluetooth.
  • Es posible que una inyección de eventos de VHAL no funcione con algunos sensores.
  • Algunas cargas de trabajo pesadas pueden causar fallas en la reproducción de audio.
  • En algunas implementaciones, el reinicio de adb del invitado AAOS podría reiniciar todo el sistema.
  • STS puede causar inestabilidad del sistema y requerir un reinicio.

Para obtener información adicional, consulta las notas de la versión del socio correspondientes a tu implementación específica de trout