Plataforma de referência

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:

  1. Faça o download da árvore de origem do Android:
    repo init -u https://android.googlesource.com/platform/manifest -b main
    repo sync -j8
    
  2. 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.

  1. Para clonar o kernel, execute:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. 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: