Um projeto no Android Studio para plataforma (ASfP, na sigla em inglês) contém tudo o que define seu espaço de trabalho para o código-fonte do AOSP, desde código-fonte e recursos até código de teste e configurações de build do Soong.
Criado no modelo de espaço de trabalho do IntelliJ, o ASfP cria grandes projetos de plataforma e restaura o modelo do projeto de snapshots armazenados em cache na inicialização. O conteúdo dentro do diretório out/ e os arquivos gen gerados são excluídos dos escopos de pesquisa do projeto para que a navegação de símbolos e arquivos permaneça rápida.
Configuração do projeto (.asfp-project)
O arquivo YAML .asfp-project, localizado na raiz do diretório do projeto, controla a configuração do projeto ASfP. Esse arquivo define quais diretórios, módulos Soong, linguagens e flags de build estão incluídos no seu espaço de trabalho.
Você pode abrir a configuração do projeto a qualquer momento usando uma das seguintes opções:
- Selecione ASfP > Project > Open Config no menu principal.
- Clique duas vezes em
.asfp-projectna raiz da janela de ferramentas Project. - Clique em Open Config na barra de ferramentas da janela de ferramentas Soong.
Depois de editar .asfp-project, execute uma sincronização do projeto para que as mudanças entrem em vigor.
Modelos de projeto compartilháveis (exportação e importação)
As equipes que trabalham no mesmo subsistema (como SystemUI, Settings, SurfaceFlinger ou Automotive) podem compartilhar uma configuração .asfp-project padrão como um modelo:
Exportar para modelo: clique com o botão direito do mouse na guia do editor
.asfp-projectou selecione ASfP > Project > Export Config to Template para salvar um arquivo de modelo compartilhável.
Importar do modelo: ao criar um novo projeto no assistente de configuração do projeto, selecione Import from template e escolha o arquivo YAML
.asfp-projectcompartilhado para preencher automaticamente diretórios, módulos e configurações de build.
Parâmetros de configuração
O arquivo .asfp-project oferece suporte aos seguintes parâmetros:
repo
Obrigatório: caminho absoluto para a raiz do checkout do repositório da plataforma Android.
repo: /path/to/aosp
lunch
Obrigatório: o destino do almoço associado ao seu projeto. Usado para todas as ações de build, sincronização e implantação do Soong.
lunch: aosp_cf_x86_64_phone-aosp_current-userdebug
directories
Opcional: diretórios a serem incluídos ou excluídos do projeto (relativos à raiz
repo). Há suporte para diretórios com links simbólicos e raízes de origem.
directories:
include:
- frameworks/base
- packages/apps/Settings
exclude:
- vendor
- out/soong
modules
Opcional: módulos Soong específicos a serem incluídos ou excluídos do projeto.
Funciona em conjunto com directories. Há suporte para nomes de módulos completos e abreviados.
modules:
include:
- SystemUI
- frameworks/base/services/core/java:services
exclude:
- UnusedModule
test_sources
Opcional: caminhos relativos a serem marcados como raízes de origem de teste quando a heurística de origem de teste automática do ASfP precisar de substituição manual.
test_sources:
- cts/tests/tests/example
- tests/mytests
other_languages
Opcional: o suporte a Java, Kotlin e Android.bp é ativado por padrão. Adicione cpp para C e C++ ou rust para suporte à linguagem Rust:
other_languages:
- cpp
- rust
build_config
Opcional: flags personalizadas ou variáveis de ambiente transmitidas para invocações de build do Soong acionadas pelo IDE (incluindo sincronizações, builds de gutter e configurações de execução):
build_config:
flags:
- -j64
env:
SOONG_PARTIAL_COMPILE: true
SOONG_ALLOW_MISSING_DEPENDENCIES: true
Modos de sincronização e janela de ferramentas do Soong
O ASfP oferece várias maneiras de sincronizar o projeto do IDE com o checkout do AOSP, dependendo das necessidades do fluxo de trabalho. Acesse essas ações no menu ASfP > Sync ou na janela de ferramentas Soong:
- Sincronizar Projeto: analisa os diretórios e módulos configurados e atualiza a indexação e as dependências do IDE.
- Sincronização Parcial: sincroniza apenas um subconjunto de módulos ou diretórios, economizando tempo ao trabalhar em uma área localizada da árvore.
- Sincronização sem build: atualiza a estrutura do projeto do IDE e as raízes de origem sem executar uma etapa de build do Soong. Isso é útil quando você adicionou ou moveu arquivos de origem ou já criou o build no terminal.
- Sincronização e Build Completo: Combina a sincronização do projeto com um build completo do Soong em uma única etapa.
A janela de ferramentas Soong (View > Tool Windows > Soong) mostra indicadores de status em tempo real para cada nó de tarefa de sincronização, botões de build de acesso rápido e execução de comandos do Soong.
Build, implantação e navegação Android.bp no editor
O ASfP oferece suporte integrado ao editor para arquivos Android.bp:
Criar, executar e depurar destinos no gutter
Abra qualquer arquivo Android.bp no projeto para criar ou iniciar destinos em dois ícones de gutter:
- Ícone de build (todos os módulos nomeados): aparece ao lado de
name:em cada módulo nomeado (cc_library_shared,java_library,rust_binary,android_app, e destinos de teste) para criar o destino do Soong (Build "<module>"). - Ícone de execução ou depuração (
*_test,*_test_hosteandroid_app): clique em Run ao lado de um módulo de teste ou declaraçãoandroid_apppara executar ou depurar o módulo. Os módulosandroid_testsão depurados peloatest, e os móduloscc_test*erust_test*são iniciados no LLDB integrado.

Configurações de execução de implantação e flash contextual
Para módulos implantáveis em arquivos Android.bp, você pode criar e iniciar configurações de execução Soong Deploy contextuais no gutter ou no menu de contexto do clique com o botão direito do mouse com os seguintes recursos:
- Métodos de implantação: implante usando
adb, scripts de shell personalizados,adevice, ouflashall. - Hooks de build do Soong pré-execução: crie o módulo de destino do Soong automaticamente antes de implantar no dispositivo conectado ou no dispositivo virtual Cuttlefish.

Alternar entre o código-fonte e Android.bp
Em qualquer arquivo de origem ou diretório na janela de ferramentas Project , na guia do editor ou no menu de contexto do editor, clique com o botão direito do mouse e selecione Open Corresponding Android.bp File. O ASfP localiza e destaca a declaração do módulo Android.bp que compila esse arquivo, resolvendo blocos defaults, padrões srcs curinga e links simbólicos.

Inteligência do editor Android.bp e documentação de dicas de ferramentas
- Navegação entre arquivos e contagens de uso: clique em qualquer referência de módulo
, arquivo
srcsousoong_config_module_typepara acessar a declaração. Dicas deN Usagesclicáveis aparecem ao lado de nomes de módulos e destinossrcscompartilhados, e os módulos de biblioteca não referenciados são visualmente esmaecidos. - Dicas de ferramentas de documentação de propriedades do Soong: mantenha o ponteiro sobre qualquer
propriedade em um
Android.bpfile—including architecture- or target-scoped properties undertarget,arch, andmultilib—to view its Soong type signature and documentation inline.

Gerenciamento de dispositivos virtuais Cuttlefish e espelhamento multitelas
O ASfP inclui um plug-in Cuttlefish integrado para desenvolvedores de plataforma, Android Automotive OS (AAOS) e veículos definidos por software (SDV) que trabalham com dispositivos virtuais Cuttlefish criados localmente:
- Configuração de vários dispositivos no Gerenciador de dispositivos: crie e gerencie configurações de dispositivos virtuais Cuttlefish em Device Manager usando o checkout do AOSP local (
$ANDROID_BUILD_TOPe$ANDROID_PRODUCT_OUT). - Espelhamento de tela múltipla na janela de ferramentas do Cuttlefish: abra View > Tool Windows > Cuttlefish para espelhamento de tela múltipla integrado do Cuttlefish para que você possa visualizar e interagir com várias telas automotivas ao mesmo tempo para fluxos de trabalho do AAOS e SDV.
