Configurar um ambiente de desenvolvimento integrado para desenvolvimento de SDV

O Android Studio for Platform (ASfP) é o ambiente de desenvolvimento integrado (IDE) recomendado para o desenvolvimento de plataformas de veículos definidos por software (SDV) do Android Automotive OS (AAOS). O ASfP é compatível com todos os idiomas usados pela plataforma de SDV do AAOS, incluindo Rust para pacotes de serviços de SDV.

Esta página aborda apenas a configuração específica do SDV. Para mais informações sobre recursos e fluxos de trabalho gerais do ASfP, consulte Android Studio for Platform.

O ASfP é executado apenas no Linux de 64 bits com CPUs x86-64. É possível usá-lo em uma estação de trabalho Linux local ou na nuvem. Para mais informações sobre a configuração na nuvem, consulte Desenvolvimento na nuvem.

Instalar o ASfP

O ASfP usa como padrão um tamanho máximo de heap de 30 GB. A indexação de um checkout de plataforma usa muita memória, especialmente quando você também executa dispositivos Cuttlefish com várias VMs na mesma máquina. Mantenha o escopo do projeto limitado aos diretórios em que você trabalha e ajuste o tamanho máximo do heap nas configurações de memória do ASfP, se necessário.

O ASfP oferece suporte a atualizações automáticas no ambiente de desenvolvimento integrado. Para mais informações, consulte Atualizar o Android Studio para plataforma. Para mais informações sobre como baixar e instalar o ASfP e verificar os requisitos do sistema, consulte Instalar o Android Studio for Platform.

Criar um projeto de SDV

Inicialize, sincronize e crie o checkout do SDV do AAOS antes de começar. Para mais informações sobre como configurar o checkout, consulte Local do código e Fazer o download, criar e executar.

Para criar um projeto de SDV, siga estas etapas:

  1. Crie um novo projeto no ASfP e selecione a raiz do checkout do SDV do AAOS como o checkout do repositório. Para mais informações sobre as etapas do assistente, consulte Criar ou importar um projeto.
  2. Depois que o ASfP criar o projeto, selecione ASfP > Project > Open Config para abrir o arquivo .asfp-project.
  3. Substitua o conteúdo do arquivo pelo exemplo a seguir e defina repo como o caminho do seu checkout:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Atualize lunch e directories para a área em que você trabalha. Para manter a indexação e a sincronização rápidas, inclua apenas os diretórios que você modifica ativamente. A tabela a seguir lista os destinos e diretórios comuns de SDV:

    Foco no desenvolvimento de SDVs lunch meta Recomendação: directories
    Pacotes de serviços de SDV sdv_core_cf-aosp_current-userdebug Seu catálogo de serviços e diretório de pacotes, como system/software_defined_vehicle/samples
    Integração com a plataforma SDV Core sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    Gateway de SDV no IVI de SDV sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    Segurança da tela em mídia SDV sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Segurança da tela no SDV IVI sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Se a finalização de compra usar um manifesto trunk_staging, substitua -aosp_current-userdebug por -trunk_staging-userdebug. Para navegar também pelo código da plataforma nativa, adicione cpp a other_languages. Para mais informações sobre todas as opções de configuração, consulte Parâmetros de configuração.

  5. Para aplicar as mudanças, selecione ASfP > Sync > Sync Project. Para mais informações sobre os modos de sincronização (completa, parcial e sem build) e como exportar ou importar modelos compartilháveis do .asfp-project para sua equipe, consulte Modos de sincronização e janela de ferramentas do Soong e Modelos de projeto compartilháveis (exportação e importação).

Implantar pacotes de serviços de SDV

O ASfP inclui um plug-in de SDV que implanta um APEX contendo seus pacotes de serviço diretamente em um dispositivo SDV em execução. O plug-in fica desativado por padrão. Para usá-lo, ative o plug-in do SDV em Settings > Plugins. Para mais informações sobre o empacotamento APEX, consulte Criar e implantar pacotes de serviços.

A forma de implantação depende se o APEX já está no dispositivo:

  • Se o APEX já estiver instalado, você poderá implantar as mudanças diretamente do ASfP.
  • Se o APEX for novo, primeiro recrie e reinicie a imagem do sistema ou use uma imagem do sistema que inclua a chave usada para assinar o APEX. Depois disso, você poderá implantar pelo ASfP.

Para implantar um APEX de pacote de serviços, siga estas etapas:

  1. Inicie o dispositivo SDV com o plug-in Cuttlefish. Para mais informações, consulte Executar dispositivos SDV no Cuttlefish.
  2. Abra o arquivo apex/Android.bp do pacote de serviços e clique no ícone Run na medianiz ao lado do bloco apex {.
  3. No menu que é aberto, selecione Run 'Deploy APEX_NAME'. Você também pode criar o APEX sem implantá-lo ou mudar a configuração de execução no mesmo menu.

Executar dispositivos SDV no Cuttlefish

O ASfP inclui um plug-in do Cuttlefish que cria e executa dispositivos Cuttlefish locais. O plug-in precisa do orquestrador de host do Cuttlefish. Se o host não estiver disponível, o ASfP vai mostrar instruções para configurá-lo.

Para criar um dispositivo SDV, siga estas etapas:

  1. Selecione Tools > Gerenciador de dispositivos, clique em + e selecione Create Cuttlefish Device.
  2. Para criar uma configuração de várias VMs, selecione Da configuração canônica e crie ou importe uma configuração, como SDV Core com SDV IVI ou SDV Media com SDV IVI para segurança de exibição. Para criar uma única VM, selecione Do checkout da árvore de origem local do Android.

Para ver todas as telas de VM em uma única tela e acessar outras opções de dispositivo, use a janela de ferramentas do Cuttlefish. Para abrir, selecione o ícone ... no painel lateral e selecione Cuttlefish ou pesquise Cuttlefish em Help > Find Action. Também é possível conferir telas individuais em Running Devices. Como o SDV Core é executado sem uma tela, use o Logcat e o Terminal para inspecioná-lo.

Depurar e testar

O ASfP inclui um depurador LLDB integrado para código C++ e Rust. Para mais informações sobre depuração e testes no ASfP, consulte Depurar código de plataforma, Depurar código Rust, Testar código de plataforma com atest e Depurar destinos cc_test e rust_test no LLDB.

Ao anexar o depurador a um pacote de serviços, anexe-o ao processo que o hospeda. Os nomes de processos usam o formato <bundle_name>:<instance_name>, como OrchestratorSampleRustServiceBundle:sample-main-no-conditions. O comando a seguir lista os processos correspondentes e os IDs de processo deles:

adb shell ps -A | grep <bundle_name>

Para mais informações sobre fluxos de trabalho de depuração de SDV, como conectar-se a vários dispositivos e visualizar registros, consulte Depurar SDV.

Editar arquivos VSIDL

O ASfP inclui o servidor de linguagem VSIDL (vsidl-lsp). Para mais informações sobre como configurar seu catálogo para o servidor de linguagem, consulte Atualizações automáticas de catálogo e integração com LSP. Quando o catálogo inclui um arquivo CATALOG_UPDATE, o editor fornece os seguintes recursos para arquivos .vsidl:

  • Validação em tempo real: o editor destaca as palavras-chave da VSIDL e mostra erros de sintaxe, tipos não resolvidos e erros de validação da VSIDLC na janela Problemas. Para mais informações sobre as regras de validação e os códigos do erro, consulte a especificação da linguagem VSIDL.
  • Preenchimento automático e documentação: pressione Ctrl+Espaço para sugestões de palavras-chave, mensagens, serviços, tópicos e canais e pressione Ctrl+Q para ver os comentários da documentação.
  • Navegação e formatação: pressione Ctrl+B para acessar as definições de .vsidl ou .proto, Alt+Shift+F7 para encontrar referências, Ctrl+F12 para conferir a estrutura do arquivo e Ctrl+Alt+L para formatar o arquivo.

Adicionar contexto de SDV para assistentes de IA

O ASfP inclui IA no Android Studio e um agente integrado com o build do Soong e as ferramentas atest. Para mais informações sobre os recursos de IA do ASfP, consulte Conheça o Android Studio for Platform. Para ajudar o assistente de IA a seguir as convenções de SDV, adicione um arquivo AGENTS.md à raiz do seu catálogo VSIDL. Para mais informações sobre arquivos de agente, consulte Personalizar o Gemini usando arquivos AGENTS.md.

O exemplo a seguir é um ponto de partida que você pode adaptar ao seu catálogo:

# AAOS SDV service catalog rules

- Implement SDV service bundles in Rust under `services/<BundleName>/src/`.
- Keep `.proto` files limited to Protobuf `message`, `enum`, and `service` definitions. Define service bundles, APEX packaging, VM placement, and SOME/IP mappings in `.vsidl` files.
- Regenerate middleware with `vsidlc` after you change `.vsidl` or `.proto` files, and leave generated files unmodified.
- Use `PascalCase` for service bundle names and lowercase `kebab-case` for topic and channel names.
- Run `vsidlc --explain <CODE>` to look up a VSIDLC error code.