Com um novo produto chamado trout
, o Android Automotive (AAOS) agora oferece suporte
à implantação como uma máquina virtual (VM) de convidado em ambientes compatíveis com o
padrão VirtIO. O trout
é baseado na plataforma de referência virtual
Cuttlefish
e está disponível como a 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 em trout
.
Recurso | Tecnologia |
---|---|
HAL de controle de áudio | vsock/gRPC |
HAL de áudio | virtio-snd |
Bluetooth | virtio-console |
HAL de dumpstate | vsock/gRPC |
Sistema de visualização estendida (EVS) | virtio-video |
Modo garagem | vsock/gRPC |
Gráficos | virtio-gpu |
Sistema global de navegação por satélite (GNSS) | virtio-console |
HAL 2.0 de sensores | virtio-scmi and IIO |
Entrada de tela touch | virtio-input |
HAL veicular | vsock/gRPC |
Extend trout
O trout
pode ser usado como ponto de partida para criar novos destinos de infoentretenimento
no veículo (IVI, na sigla em inglês) do Android. A infraestrutura de build foi projetada para ser ampliada e personalizada.
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 são mantidas, mas alguns parâmetros de configuração são ajustados para estabelecer
a comunicação adequada entre VMs no ambiente de destino. Esses HALs (incluindo o HAL do veículo,
o HAL de controle de áudio e o HAL de dumpstate) são implementados por uma interface gRPC com suporte de uma
conexão vsock
entre o convidado AAOS e um sistema host que fornece a
implementação do recurso. Elas precisam ser configuradas fornecendo os parâmetros de conexão
vsock
adequados como propriedades do fornecedor. O código-fonte funciona como a verdade
absoluta sobre quais propriedades estão disponíveis para configuração e a semântica delas.
Criar trout
Compilar o espaço do usuário
Para compilar o espaço do usuário:
- Faça o download da árvore de origem do Android:
repo init -u https://android.googlesource.com/platform/manifest -b main repo sync -j8
- Crie o ambiente:
source build/envsetup.sh lunch aosp_trout_arm64-userdebug make -j24
Criar o kernel
Para a trout
1.1, a base de código do kernel é fornecida no AOSP. O kernel trout
é composto pelo mesmo código do ACK 5.10 upstream, com a adição de
módulos específicos de 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 criar o kernel, execute o seguinte:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
O fornecedor do hipervisor pode exigir uma configuração de kernel diferente ou módulos adicionais que precisam ser compilados. Siga essas orientações específicas, se fornecidas.
Compliance
Quando o AAOS é executado como uma VM de convidado, nosso objetivo é ser uma implantação do Android compatível do ponto de vista
do framework. Os problemas do host são de responsabilidade de cada implementação e estão fora do
escopo da trout
1.1.
Não realizamos outra validação do xTS na trout
1.1. Continue
a consultar a discussão abaixo sobre o suporte ao CTS no trout
1.0.
Na trout
1.0, vários problemas do CTS ainda existem. Os seguintes módulos do CTS incluem falhas de teste:
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 |
As seguintes áreas do CTS-V incluem falhas de teste:
Teste do iniciador de carro Teste de publicidade Bluetooth de baixa energia (BLE) Verificador de qualidade de vídeo de streaming Teste de dispositivo HID Bluetooth Teste de microfone de ultrassom Hi-Fi Teste de alto-falante de ultrassom Hi-Fi |
Teste de desbloqueio do dispositivo necessário Teste de descoberta de sensores dinâmicos 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 da versão
O trout
1.1 apresenta os seguintes problemas conhecidos:
- As builds do usuário de
trout
não estão disponíveis. O sistema é criado como-userdebug
, o que pode afetar alguns testes do CTS. - O Android Verified Boot (AVB) não é compatível.
- Alguns subsistemas do Android podem estar indisponíveis, incluindo o mundo seguro e o NNHAL.
- O acesso à rede de visitantes geralmente é fornecido por um adaptador Wi-Fi virtualizado e
um túnel
virtio-net
. A conectividade do host depende da implantação específica do hipervisor. - Algumas implementações podem oferecer recursos limitados ou nenhum recurso de Bluetooth.
- A injeção de eventos do VHAL pode não funcionar para alguns sensores.
- Alguns trabalhos pesados podem causar falhas na reprodução de áudio.
- Em algumas implementações, a reinicialização do adb do convidado do AAOS pode reiniciar o sistema inteiro.
- O STS pode causar instabilidade no sistema e exigir uma reinicialização.
Para mais detalhes, consulte as notas da versão do parceiro para sua implantação específica de
trout
.