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:
- 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.
- Depois que o ASfP criar o projeto, selecione ASfP > Project > Open Config para
abrir o arquivo
.asfp-project. Substitua o conteúdo do arquivo pelo exemplo a seguir e defina
repocomo 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: - rustAtualize
lunchedirectoriespara 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 lunchmetaRecomendação: directoriesPacotes de serviços de SDV sdv_core_cf-aosp_current-userdebugSeu catálogo de serviços e diretório de pacotes, como system/software_defined_vehicle/samplesIntegração com a plataforma SDV Core sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvGateway de SDV no IVI de SDV sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/CarSegurança da tela em mídia SDV sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetySegurança da tela no SDV IVI sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceSe a finalização de compra usar um manifesto
trunk_staging, substitua-aosp_current-userdebugpor-trunk_staging-userdebug. Para navegar também pelo código da plataforma nativa, adicionecppaother_languages. Para mais informações sobre todas as opções de configuração, consulte Parâmetros de configuração.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-projectpara 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:
- Inicie o dispositivo SDV com o plug-in Cuttlefish. Para mais informações, consulte Executar dispositivos SDV no Cuttlefish.
- Abra o arquivo
apex/Android.bpdo pacote de serviços e clique no ícone Run na medianiz ao lado do blocoapex {. - 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:
- Selecione Tools > Gerenciador de dispositivos, clique em + e selecione Create Cuttlefish Device.
- 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
.vsidlou.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.