O Android Automotive (AAOS) agora oferece suporte a um novo produto chamado trout
.
para implantação como máquina virtual (VM) convidada em ambientes compatíveis
VirtIO (em inglês)
padrão. trout
tem como base o
Cuttlefish (em inglês)
plataforma de referência virtual e está disponível como a configuração de dispositivo trout
. A
o código-fonte do espaço do usuário pode ser encontrado em device/google/trout
. A tabela
a seguir, descrevemos 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 estado dump | vsock/gRPC |
Sistema de visualização estendido (EVS, na sigla em inglês) | virtio-video |
Modo garagem | vsock/gRPC |
Gráficos | virtio-gpu |
Satélite de navegação global GNSS, na sigla em inglês | virtio-console |
HAL 2.0 do sensor | virtio-scmi and IIO |
Entrada na tela touch | virtio-input |
HAL do veículo | vsock/gRPC |
Truta para estender
trout
pode ser usado como ponto de partida para criar um novo infoentretenimento no veículo (IVI, na sigla em inglês)
Destinos do Android. A infraestrutura de build foi projetada para ser estendida 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árias HALs do Android podem ser substituídas individualmente por implementações personalizadas ou as
implementações padrão mantidas, mas alguns parâmetros de configuração são ajustados para estabelecer
comunicação adequada entre VMs no ambiente de destino. Esses HALs (incluindo HAL de veículo,
a HAL de controle de áudio e a HAL Dumpstate) são implementadas por meio de uma interface gRPC com suporte de uma
Conexão vsock
entre o convidado AAOS e um sistema host que fornece o
implementação de recursos subjacentes. Eles devem ser configurados fornecendo o devido
Parâmetros de conexão vsock
como propriedades do fornecedor. O código-fonte funciona como o
informações empíricas sobre quais propriedades estão disponíveis para configuração e a semântica delas.
Construir trutas
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 o trout
1.1, a base de código do kernel é fornecida no AOSP. O trout
é composto pelo mesmo código da 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 criar o kernel, execute:
BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
Seu fornecedor de hipervisor pode precisar de uma configuração de kernel diferente necessária ou módulos que precisam ser compilados. Siga estas orientações específicas, se fornecidas.
Compliance
Quando o AAOS é executado como uma VM convidada, nosso objetivo é ser uma implantação compatível do Android na
do framework da nuvem. Os problemas no lado do host são de responsabilidade de cada implementação e estão fora
escopo do trout
1.1.
Não realizamos outra validação xTS no trout
1.1. Continuar
para consultar a discussão abaixo sobre a compatibilidade do CTS no trout
1.0.
No trout
1.0, vários problemas de CTS permanecem. Os seguintes módulos CTS são conhecidos por
incluem falhas nos testes:
CtsStagedInstallHostTestCases CtsRollbackManagerHostTestCases CtsVideoTestCases CtsHostsideNetworkTests CtsActivityManagerBackgroundActivityTestCases CtsAdbHostTestCases CtsNativeHardwareTestCases CtsContentTestCases CasosdeTestedoCtsCarHost CtsOsTestCases CtsStatsdHostTestCases CtsVoiceInteractionTestCases CtsViewTestCases CtsCameraTestCases CtsLocationGnssTestCases CtsGraphicsTestCases CtsIncidentHostTestCases CtsInstallHostTestCases CasosdeTestedeInicializaçãoVerda.nNative CtsNetTestCases |
CtsWindowManagerDeviceTestCases CtsMediaStressTestCases CtsAppTestCases CtsUsbTests CtsAutoFillServiceTestCases CtsDisplayTestCases CtsMediaTestCases CtsDeqpTestCases CtsDumpsysHostTestCases CtsOpenGLTestCasesCtsLibcoreTestCases CtsSecurityHostTestCases CtsInputMethodTestCases CtsStatsdAtomHostTestCases CtsPermission4TestCases CtsNNAPIBenchmarkTestCases CtsSimpleperfTestCases CtsAccessibilityTestCases CtsAppSecurityHostTestCases CtsKeystoreTestCases |
Sabe-se que as seguintes áreas do CTS-V incluem falhas de teste:
Teste do acesso rápido do carro Teste do anunciante do Bluetooth de baixa energia (BLE) Verificador de qualidade de streaming de vídeo Teste do dispositivo Bluetooth HID Teste do microfone de ultrassom de alta fidelidade Teste do alto-falante de ultrassom de alta fidelidade |
Teste necessário para dispositivo desbloqueado Teste de descoberta do sensor dinâmico Teste do sensor corporal desativado Teste de movimento significativo Teste de notificação de roteamento de saída de áudio Teste de sugestão ou solicitação de rede |
Notas da versão
O trout
1.1 contém os seguintes problemas conhecidos:
- Os builds do usuário do
trout
não estão disponíveis. O sistema é construído-userdebug
, o que pode afetar alguns testes de CTS. - Não há suporte para a Inicialização verificada do Android (AVB).
- Alguns subsistemas do Android podem estar indisponíveis, incluindo o mundo seguro e o NNHAL.
- O acesso à rede para visitantes geralmente é fornecido por um adaptador Wi-Fi virtualizado e
um(a)
virtio-net
túnel do Cloud. A conectividade no lado do host depende da implantação específica do seu hipervisor. - Algumas implementações podem oferecer capacidade Bluetooth limitada ou inexistente.
- Uma injeção de eventos 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 do adb do convidado AAOS pode reinicializar todo o sistema.
- 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 do
trout
: