A través de un nuevo producto llamado trout, Android Automotive (AAOS) ahora proporciona compatibilidad
para la implementación como una máquina virtual (VM) invitada en entornos compatibles con el
estándar
VirtIO. trout se basa en la
plataforma de referencia virtual
Cuttlefish y está disponible como la configuración del dispositivo trout. El código fuente del espacio de usuario se puede encontrar 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 por satélite (GNSS) | virtio-console |
| HAL de sensores 2.0 | virtio-scmi and IIO |
| Entrada de pantalla táctil | virtio-input |
| HAL de vehículo | vsock/gRPC |
Extiende trout
trout se puede usar como punto de partida para crear nuevos destinos de Android para sistemas de 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 ...]
Se pueden reemplazar individualmente varios HAL de Android por implementaciones personalizadas, o bien se pueden mantener las implementaciones predeterminadas, pero se ajustan ciertos parámetros de configuración para establecer una comunicación adecuada entre VMs en el entorno de destino. Estos HAL (incluidos el HAL de vehículo, el HAL de control de audio y el HAL de Dumpstate) se implementan por medio 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 subyacente. Estos se deben configurar proporcionando los parámetros de conexión vsock adecuados como propiedades del proveedor. El código fuente actúa como la verdad fundamental definitiva sobre qué propiedades están disponibles para la configuración y su semántica.
Compila trout
Compila el espacio de usuario
Para compilar el espacio de 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 trout
kernel se compone del mismo código que el ACK 5.10 ascendente, con la adición de
trout-specific módulos 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 de tu hipervisor tenga una configuración de kernel diferente requerida o módulos adicionales que deban 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 la perspectiva del framework. Los problemas del host son competencia de cada implementación y están fuera del alcance de trout 1.1.
No realizamos validaciones xTS adicionales en trout 1.1. Sigue consultando el debate sobre la compatibilidad con CTS en trout 1.0 que se incluye a continuación.
En trout 1.0, aún quedan varios problemas de CTS. Se sabe que los siguientes módulos de CTS incluyen fallas en las pruebas:
| 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 en las pruebas:
| Prueba del selector de auto Prueba del anunciante de Bluetooth de bajo consumo (BLE) Verificador de calidad de video en transmisión Prueba del dispositivo HID de Bluetooth Prueba del micrófono de ultrasonido de alta fidelidad Prueba del altavoz de ultrasonido de alta fidelidad |
Prueba de dispositivo desbloqueado requerido Prueba de detección 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
troutno están disponibles. El sistema se compila como-userdebug, lo que puede afectar algunas pruebas de CTS. - No se admite Android Verified Boot (AVB).
- Es posible que algunos subsistemas de Android no estén disponibles, incluidos el mundo seguro y NNHAL.
- Por lo general, el acceso a la red para invitados se proporciona por medio de un adaptador Wi-Fi virtualizado y
un
virtio-nettúnel. La conectividad del host depende de la implementación específica del hipervisor. - Es posible que algunas implementaciones ofrezcan capacidades de Bluetooth limitadas o nulas.
- Es posible que la inyecció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.
- STS puede causar inestabilidad en el sistema y requerir un reinicio.
Para obtener más detalles, consulta las notas de la versión del socio para tu implementación específica de trout.