Por meio de um novo produto chamado trout
, o Android Automotive (AAOS) agora oferece suporte para implantação como uma máquina virtual (VM) convidada em ambientes compatíveis com o padrão VirtIO . trout
é baseada na plataforma de referência virtual Cuttlefish e está disponível como configuração do dispositivo trout
. O código-fonte do espaço do usuário pode ser encontrado em device/google/trout
. A tabela abaixo descreve a tecnologia usada para virtualizar cada um dos subsistemas do trout
.
Recurso | Tecnologia |
---|---|
Controle de áudio HAL | vsock/gRPC |
Áudio HAL | virtio-snd |
Bluetooth | virtio-console |
Despejo HAL | vsock/gRPC |
Sistema de Visão Estendida (EVS) | virtio-video |
Modo garagem | vsock/gRPC |
Gráficos | virtio-gpu |
Sistema global de navegação por satélite (GNSS) | virtio-console |
Sensor HAL 2.0 | virtio-scmi and IIO |
Entrada de tela sensível ao toque | virtio-input |
Veículo HAL | vsock/gRPC |
Estender truta
trout
pode ser usada como ponto de partida para criar novos alvos Android de Infotainment no Veículo (IVI). A infraestrutura de construção foi projetada para ser ampliada e customizada. Por exemplo:
# 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 ...]
Vários HALs do Android podem ser substituídos individualmente por implementações personalizadas ou as implementações padrão mantidas, mas determinados parâmetros de configuração ajustados para estabelecer comunicação adequada entre VMs no ambiente de destino. Esses HALs (incluindo Vehicle HAL, Audio Control HAL e Dumpstate HAL) são implementados por meio de uma interface gRPC apoiada por uma conexão vsock
entre o convidado AAOS e um sistema host que fornece a implementação do recurso subjacente. Eles devem ser configurados fornecendo os parâmetros de conexão vsock
adequados como propriedades do fornecedor. O código-fonte atua como a verdade fundamental sobre quais propriedades estão disponíveis para configuração e sua semântica.
Construir truta
Compilar o espaço do usuário
Para compilar o espaço do usuário:
- Baixe a árvore de origem do Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Construa o ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Construa o kernel
Para trout
1.1, a base de código do kernel é fornecida no AOSP. O kernel trout
é composto do mesmo código do ACK 5.10 upstream, com a adição de módulos específicos trout
para subsistemas VirtIO.
- Para clonar o kernel, execute:
repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
- Para construir o kernel, execute:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Seu fornecedor de hipervisor pode exigir uma configuração de kernel diferente ou módulos adicionais que precisam ser compilados. Certifique-se de seguir esta orientação específica, se fornecida.
Conformidade
Quando o AAOS é executado como uma VM convidada, nosso objetivo é ser uma implantação Android compatível do ponto de vista da estrutura. As questões do lado do host são da competência de cada implementação e estão fora do escopo da trout
1.1.
Não realizamos validação xTS adicional na trout
1.1. Continue a consultar a discussão abaixo sobre o suporte CTS na trout
1.0.
Na trout
1.0, vários problemas de CTS permanecem. Os seguintes módulos CTS são conhecidos por incluir falhas de teste:
CtsStagedInstallHostTestCases CtsRollbackManagerHostTestCases CtsVideoTestCasos CtsHostsideNetworkTestes CtsActivityManagerBackgroundActivityTestCases CtsAdbHostTestCases CtsNativeHardwareTestCases CtsContentTestCases CtsCarHostTestCases CtsOsTestCases CtsStatsdHostTestCases CtsVoiceInteractionTestCases CtsViewTestCases CtsCameraTestCasos CtsLocationGnssTestCases CtsGraphicsTestCases CtsIncidentHostTestCases CtsInstallHostTestCases CtsNativeVerifiedBootTestCases Casos CtsNetTest | CtsWindowManagerDeviceTestCases CtsMediaStressTestCases CtsAppTestCases CtsUsbTestes CtsAutoFillServiceTestCases CtsDisplayTestCases CtsMediaTestCases CtsDeqpTestCases CtsDumpsysHostTestCases CtsOpenGLTestCasesCtsLibcoreTestCases CtsSecurityHostTestCases CtsInputMethodTestCases CtsStatsdAtomHostTestCases CtsPermission4TestCases CtsNNAPIBenchmarkTestCases CtsSimpleperfTestCases Casos de teste de acessibilidade Cts CtsAppSecurityHostTestCases CtsKeystoreTestCases |
As seguintes áreas CTS-V são conhecidas por incluir falhas de teste:
Teste de lançador de carro Teste de anunciante Bluetooth Low Energy (BLE) Verificador de qualidade de streaming de vídeo Teste de dispositivo Bluetooth HID Teste de microfone de ultrassom de alta fidelidade Teste de alto-falante de ultrassom HiFi | Teste obrigatório de dispositivo desbloqueado Teste de descoberta de sensor dinâmico Teste de sensor fora do corpo Teste de movimento significativo Teste de notificação de roteamento de saída de áudio Teste de solicitação ou sugestão de rede |
Notas de lançamento
trout
1.1 contém os seguintes problemas conhecidos:
- As versões de
trout
do usuário não estão disponíveis. O sistema é construído como-userdebug
, o que pode afetar alguns testes CTS. - A inicialização verificada do Android (AVB) não é compatível.
- Alguns subsistemas Android podem estar indisponíveis, incluindo mundo seguro e NNHAL.
- O acesso à rede para convidados geralmente é fornecido por meio de um adaptador Wi-Fi virtualizado e um túnel
virtio-net
. A conectividade do lado do host depende da implantação específica do hipervisor. - Algumas implementações podem oferecer capacidade Bluetooth limitada ou inexistente.
- Uma injeção de evento VHAL pode não funcionar para alguns sensores.
- Algumas cargas de trabalho pesadas podem causar falhas na reprodução de áudio.
- Em algumas implementações, a reinicialização adb do convidado AAOS pode reinicializar todo o sistema.
- O STS pode causar instabilidade do sistema e exigir uma reinicialização.
Para obter detalhes adicionais, consulte as notas de versão do parceiro para sua implantação específica do trout
.