Visão geral dos projetos e fluxos de trabalho do Soong

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-project na 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-project ou selecione ASfP > Project > Export Config to Template para salvar um arquivo de modelo compartilhável.

    Exportar uma configuração de projeto do ASfP para um 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-project compartilhado 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_host e android_app): clique em Run ao lado de um módulo de teste ou declaração android_app para executar ou depurar o módulo. Os módulos android_test são depurados pelo atest, e os módulos cc_test* e rust_test* são iniciados no LLDB integrado.

Criar, executar e depurar módulos usando ícones de gutter do Android.bp

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, ou flashall.
  • 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.

Selecionar configurações de execução Adevice ou Flashall no ASfP

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.

Abrir a ação do menu de contexto do arquivo Android.bp correspondente

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 srcs ou soong_config_module_type para acessar a declaração. Dicas de N Usages clicáveis aparecem ao lado de nomes de módulos e destinos srcs compartilhados, 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.bp file—including architecture- or target-scoped properties under target, arch, and multilib—to view its Soong type signature and documentation inline.

Dicas de ferramentas de documentação de propriedades Android.bp e dicas de uso


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_TOP e $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.

Janela de ferramentas do Cuttlefish e espelhamento de multitelas no ASfP