A través de un nuevo producto llamado trout
, Android Automotive (AAOS) ahora brinda compatibilidad para la implementación como máquina virtual (VM) invitada en entornos compatibles con el estándar VirtIO. trout
se basa en la plataforma de referencia virtual de Cuttlefish y está disponible como configuración del dispositivo trout
. Puedes encontrar el código fuente del espacio de usuario en device/google/trout
. En la siguiente tabla, se describe la tecnología que se usa para virtualizar cada uno de los subsistemas en trout
.
Función | Tecnología |
---|---|
HAL de control de audio | vsock/gRPC |
HAL de audio | virtio-snd |
Bluetooth | virtio-console |
HAL de Dumpstate | vsock/gRPC |
Sistema de vista extendida (EVS) | virtio-video |
Modo de cochera | vsock/gRPC |
Gráficos | virtio-gpu |
Sistema global de navegación satelital (GNSS) | virtio-console |
Sensor HAL 2.0 | virtio-scmi and IIO |
Entrada de la pantalla táctil | virtio-input |
HAL de vehículo | vsock/gRPC |
Extender trucha
trout
se puede usar como punto de partida para crear nuevos destinos de Android para infoentretenimiento en el vehículo (IVI). La infraestructura de compilación está diseñada 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 ...]
Varios HAL de Android se pueden reemplazar de forma individual por implementaciones personalizadas, o bien se pueden mantener las implementaciones predeterminadas, pero se deben ajustar ciertos parámetros de configuración para establecer una comunicación adecuada entre las VMs en el entorno de destino. Estos HAL (incluidos el HAL de vehículos, el HAL de control de audio y el HAL de Dumpstate) se implementan a través de una interfaz gRPC respaldada por una conexión vsock
entre el invitado de AAOS y un sistema host que proporciona la implementación de funciones subyacentes. Para ello, debes proporcionar los parámetros de conexión vsock
correctos como propiedades del proveedor. El código fuente actúa como la fuente de información definitiva en la que las propiedades están disponibles para la configuración y su semántica.
Compila trout
Compila el espacio del usuario
Para compilar el espacio del usuario, haz lo siguiente:
- Descarga el árbol de fuentes de Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Compila el entorno:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Cómo compilar el kernel
Para trout
1.1, la base de código del kernel se proporciona en AOSP. El kernel de trout
se compone del mismo código que el ACK 5.10 upstream, con la adición de módulos específicos de trout
para los subsistemas de VirtIO.
- Para clonar el kernel, ejecuta lo siguiente:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Para compilar el kernel, ejecuta lo siguiente:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Es posible que el proveedor del hipervisor requiera una configuración de kernel diferente o módulos adicionales que se deban compilar. Asegúrate de seguir esta guía específica, si se proporciona.
Cumplimiento
Cuando AAOS se ejecuta como una VM de invitado, nuestro objetivo es que sea una implementación de Android compatible desde la perspectiva del framework. Los problemas del host son responsabilidad de cada implementación y están fuera del alcance de trout
1.1.
No realizamos una validación adicional de xTS en trout
1.1. Sigue refiriéndote a la siguiente discusión sobre la compatibilidad con CTS en trout
1.0.
En trout
1.0, aún quedan varios problemas de CTS. Se sabe que los siguientes módulos de CTS incluyen fallas de prueba:
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 |
Se sabe que las siguientes áreas de CTS-V incluyen fallas de prueba:
Prueba de Car Launcher Prueba de anunciante de Bluetooth de bajo consumo (BLE) Verificador de calidad de video de transmisión Prueba de dispositivo HID Bluetooth Prueba de micrófono de ultrasonido HiFi Prueba de bocina de ultrasonido HiFi |
Prueba de dispositivo desbloqueado obligatorio Prueba de descubrimiento de sensores dinámicos Prueba de sensor fuera del cuerpo 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 como-userdebug
, lo que puede afectar algunas pruebas de CTS. - No se admite el inicio verificado de Android (AVB).
- Es posible que algunos subsistemas de Android no estén disponibles, incluidos el entorno seguro y NNHAL.
- Por lo general, el acceso a la red para invitados se proporciona a través de un adaptador Wi-Fi virtualizado y un túnel
virtio-net
. La conectividad del host depende de la implementación específica del hipervisor. - Algunas implementaciones pueden ofrecer capacidades limitadas de Bluetooth o no tenerlas.
- Es posible que una inserción de eventos de VHAL no funcione para 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 de AAOS puede reiniciar todo el sistema.
- El STS puede causar inestabilidad en el sistema y requerir un reinicio.
Para obtener más detalles, consulta las notas de la versión para socios de tu implementación específica de trout
.