O Android Studio for Platform (ASfP) é o ambiente de desenvolvimento integrado (IDE) recomendado para o desenvolvimento da plataforma de veículos definidos por software (SDV) do Android Automotive OS (AAOS). O ASfP é compatível com todos os idiomas usados pela plataforma SDV do AAOS, incluindo Rust para pacotes de serviços de SDV.
Esta página aborda apenas a configuração específica da 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 usar em uma estação de trabalho Linux local ou na nuvem. Para mais informações sobre a configuração da nuvem, consulte Desenvolvimento na nuvem.
Instalar o ASfP
Para mais informações sobre como baixar e instalar o ASfP e verificar os requisitos do sistema, consulte Instalar o Android Studio for Platform.
A indexação de um checkout de plataforma usa muita memória, principalmente quando você também executa dispositivos Cuttlefish de várias VMs na mesma máquina. Se o ASfP estiver lento, aumente o tamanho máximo do heap nas configurações de memória do ASfP para se adequar ao seu projeto e máquina, e mantenha o projeto no escopo dos diretórios em que você trabalha.
Criar um projeto de SDV
Inicialize, sincronize e crie seu checkout do SDV do AAOS antes de começar. Para mais informações sobre como configurar o checkout, consulte Localização do código e Fazer o download, criar e executar.
Para criar um projeto do SDV, siga estas etapas:
- Crie um projeto no ASfP e selecione a raiz do seu 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 > Projeto > Abrir configuração 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 destinos e diretórios comuns do SDV:Foco no desenvolvimento de SDV lunchmetaRecomendado: directoriesPacotes de serviços do SDV sdv_core_cf-aosp_current-userdebugSeu catálogo de serviços e diretório de pacotes, como system/software_defined_vehicle/samplesIntegração da plataforma principal do SDV sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvGateway SDV no SDV IVI sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/CarSegurança de exibição na mídia SDV sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetySegurança de exibição 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 File > Sync Project.
Implantar pacotes de serviços do SDV
O ASfP inclui um plug-in 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 usar, ative o plug-in SDV em Configurações > Plug-ins. Para mais informações sobre o pacote APEX, consulte Criar e implantar pacotes de serviços.
A implantação depende de 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 reconstrua e reinicie a imagem do sistema ou use uma imagem do sistema que inclua a chave usada para assinar o APEX. Depois disso, você pode fazer a implantação no 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 Executar no gutter ao lado do blocoapex {. - No menu que aparece, selecione Executar "Implantar 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 orquestrador de host não estiver disponível, o ASfP vai mostrar instruções para configurar.
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 com várias VMs, selecione Da configuração canônica e crie ou importe uma configuração para sua 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 check-out 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 Cuttlefish. Para abrir, selecione o ícone ... no painel lateral e escolha Cuttlefish ou pesquise Cuttlefish em Ajuda > Encontrar ação. Também é possível conferir telas individuais em Dispositivos em execução. Como o SDV Core é executado sem uma tela, use o Logcat e o Terminal para inspecioná-lo.
Depurar e testar
Para mais informações sobre depuração e testes no ASfP, consulte Depurar código da plataforma e Testar código da plataforma. Para mais informações sobre como configurar o CodeLLDB para depurar pacotes de serviços Rust, consulte Depuração do Rust.
Ao anexar o depurador a um pacote de serviços, anexe 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 deles:
adb shell ps -A | grep <bundle_name>
Para mais informações sobre fluxos de trabalho de depuração de SDV, como conexão com vários dispositivos e visualização de 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 do LSP. Quando o catálogo inclui um arquivo
CATALOG_UPDATE, o editor oferece os seguintes recursos para
arquivos .vsidl:
- Validação dinâmica: o editor destaca palavras-chave do VSIDL e mostra erros de sintaxe, tipos não resolvidos e erros de validação do VSIDLC na janela Problemas. Para mais informações sobre as regras de validação e os códigos de erro, consulte a especificação da linguagem VSIDL.
- Preenchimento automático e documentação: pressione Ctrl+Espaço para receber sugestões de palavras-chave, mensagens, serviços, temas e canais. Pressione Ctrl+Q para ver comentários de 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 ver a estrutura do arquivo e Ctrl+Alt+L para formatar o arquivo.
Adicionar contexto de SDV para assistentes de IA
O ASfP inclui o Gemini no Android Studio. Para mais informações sobre os recursos do ASfP, consulte Conheça o Android Studio para plataforma. Para ajudar o Gemini ou outro assistente de programação de IA a seguir as convenções do SDV, adicione um arquivo AGENTS.md à raiz do catálogo do SDV. 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.