Plataforma de referência

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:

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

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