Descripción general de los proyectos y los flujos de trabajo de Soong

Un proyecto en Android Studio for Platform (ASfP) contiene todo lo que define tu espacio de trabajo para tu base de código de AOSP, desde el código fuente y los recursos hasta el código de prueba y las configuraciones de compilación de Soong.

Basado en el modelo de espacio de trabajo de IntelliJ, ASfP construye proyectos de plataformas grandes y restablece tu modelo de proyecto a partir de instantáneas almacenadas en caché durante el inicio. El contenido dentro del directorio out/ y los archivos gen generados se excluyen de los alcances de búsqueda del proyecto para que la navegación de símbolos y archivos siga siendo rápida.

Configuración de proyectos (.asfp-project)

El archivo YAML .asfp-project, que se encuentra en la raíz del directorio de tu proyecto, controla la configuración del proyecto de ASfP. Este archivo define qué directorios, módulos de Soong, lenguajes y marcas de compilación se incluyen en tu espacio de trabajo.

Puedes abrir la configuración de tu proyecto en cualquier momento con cualquiera de las siguientes opciones:

  • Selecciona ASfP > Project > Open Config en el menú principal.
  • Haz doble clic en .asfp-project en la raíz de la ventana de herramientas Project.
  • Haz clic en Open Config en la barra de herramientas de la ventana de herramientas Soong.

Después de editar .asfp-project, ejecuta una sincronización del proyecto para que los cambios surtan efecto.

Plantillas de proyectos compartibles (exportación e importación)

Los equipos que trabajan en el mismo subsistema (como SystemUI, Settings, SurfaceFlinger o Automotive) pueden compartir una configuración .asfp-project estándar como plantilla:

  • Exportar a plantilla: Haz clic con el botón derecho en la pestaña del editor .asfp-project o selecciona ASfP > Project > Export Config to Template para guardar un archivo de plantilla compartible.

    Cómo exportar la configuración de un proyecto de ASfP a una plantilla compartible

  • Importar de plantilla: Cuando crees un proyecto nuevo en el asistente de configuración del proyecto, selecciona Importar de plantilla y elige el archivo YAML compartido .asfp-project para completar previamente los directorios, los módulos y la configuración de compilación.

Parámetros de configuración

El archivo .asfp-project admite los siguientes parámetros:

repo

Obligatorio: Ruta de acceso absoluta a la raíz de la confirmación de tu repositorio de la plataforma de Android.

repo: /path/to/aosp

lunch

Obligatorio: El destino de lunch junto con tu proyecto. Se usa para todas las acciones de compilación, sincronización e implementación de Soong.

lunch: aosp_cf_x86_64_phone-aosp_current-userdebug

directories

Opcional: Directorios para incluir o excluir de tu proyecto (en relación con la raíz repo). Se admiten directorios con vínculos simbólicos y raíces de origen.

directories:
  include:
    -   frameworks/base
    -   packages/apps/Settings
  exclude:
    -   vendor
    -   out/soong

modules

Opcional: Módulos de Soong específicos para incluir o excluir de tu proyecto. Funciona en conjunto con directories. Se admiten nombres de módulos completos y abreviados.

modules:
  include:
    -   SystemUI
    -   frameworks/base/services/core/java:services
  exclude:
    -   UnusedModule

test_sources

Opcional: Rutas de acceso relativas para marcar como raíces de origen de prueba cuando la heurística de origen de prueba automática de ASfP's necesite una anulación manual.

test_sources:
  -   cts/tests/tests/example
  -   tests/mytests

other_languages

Opcional: La compatibilidad con Java, Kotlin y Android.bp está habilitada de forma predeterminada. Agrega cpp para C y C++ o rust para la compatibilidad con el lenguaje Rust:

other_languages:
  -   cpp
  -   rust

build_config

Opcional: Marcas personalizadas o variables de entorno que se pasan a las invocaciones de compilación de Soong que activa el IDE (incluidas las sincronizaciones, las compilaciones de medianil y las configuraciones de ejecución):

build_config:
  flags:
    -   -j64
  env:
    SOONG_PARTIAL_COMPILE: true
    SOONG_ALLOW_MISSING_DEPENDENCIES: true

Modos de sincronización y ventana de herramientas de Soong

ASfP proporciona varias formas de sincronizar tu proyecto de IDE con tu confirmación de AOSP según las necesidades de tu flujo de trabajo. Accede a estas acciones desde el menú ASfP > Sync o la ventana de herramientas Soong:

  • Sincronizar proyecto: Analiza los directorios y módulos configurados y actualiza la indexación y las dependencias del IDE.
  • Sincronización parcial: Sincroniza solo un subconjunto de módulos o directorios específicos, lo que ahorra tiempo cuando se trabaja en un área localizada del árbol.
  • Sincronización sin compilación: Actualiza la estructura del proyecto del IDE y las raíces de origen sin ejecutar un paso de compilación de Soong, lo que resulta útil cuando agregaste o moviste archivos fuente o ya compilaste desde la terminal.
  • Sincronización y compilación completa: Combina la sincronización del proyecto con una compilación completa de Soong en un solo paso.

La ventana de herramientas Soong (View > Tool Windows > Soong) muestra indicadores de estado en tiempo real para cada nodo de tarea de sincronización, botones de compilación de acceso rápido y ejecución de comandos de Soong.


Compilación, implementación y navegación de Android.bp en el editor

ASfP proporciona compatibilidad con el editor integrado para archivos Android.bp:

Compila, ejecuta y depura destinos desde el medianil

Abre cualquier archivo Android.bp en tu proyecto para compilar o iniciar destinos desde dos íconos de medianil:

  • Ícono de compilación (todos los módulos con nombre): Aparece junto a name: en cada módulo con nombre (cc_library_shared, java_library, rust_binary, android_app, y destinos de prueba) para compilar ese destino de Soong (Build "<module>").
  • Ícono de ejecución o depuración (*_test, *_test_host, y android_app): Haz clic en Run junto a un módulo de prueba o una declaración android_app para ejecutar o depurar el módulo. Los módulos android_test se depuran a través de atest, y los módulos cc_test* y rust_test* se inician en LLDB integrado.

Íconos de margen de Android.bp para compilar, ejecutar y depurar módulos

Implementación contextual y configuraciones de ejecución de flash

Para los módulos implementables en archivos Android.bp, puedes crear y lanzar configuraciones de ejecución contextuales de Soong Deploy desde el medianil o el menú contextual al hacer clic con el botón derecho con las siguientes funciones:

  • Métodos de implementación: Implementa con adb, secuencias de comandos de shell personalizadas, adevice, o flashall.
  • Hooks de compilación de Soong previos a la ejecución: Compila el módulo de Soong de destino automáticamente antes de implementarlo en tu dispositivo conectado o dispositivo virtual Cuttlefish.

Selecciona las configuraciones de ejecución Adevice o Flashall en ASfP

Salta entre el código fuente y Android.bp

Desde cualquier archivo fuente o directorio en la ventana de herramientas Project , la pestaña del editor o el menú contextual del editor, haz clic con el botón derecho y selecciona Open Corresponding Android.bp File. ASfP ubica y destaca la declaración del módulo Android.bp que compila ese archivo, resuelve los bloques defaults, los patrones srcs de comodín y los vínculos simbólicos.

Acción del menú contextual Open Corresponding Android.bp File

Inteligencia del editor Android.bp y documentación de la información sobre herramientas

  • Navegación entre archivos y recuentos de uso: Haz clic con la tecla Control presionada en cualquier referencia de módulo , archivo srcs o soong_config_module_type para saltar a su declaración. Las sugerencias de inserción N Usages en las que se puede hacer clic aparecen junto a los nombres de los módulos y los destinos srcs compartidos, y los módulos de biblioteca sin referencias se atenúan visualmente.
  • Información sobre herramientas de documentación de propiedades de Soong: Mantén el puntero sobre cualquier propiedad en un Android.bp archivo, incluidas las propiedades con alcance de arquitectura o destino en target, arch, y multilib, para ver su firma de tipo Soong y la documentación intercalada.

Sugerencias sobre el uso y la documentación de propiedades de Android.bp


Administración de dispositivos virtuales Cuttlefish y duplicación multipantalla

ASfP incluye un complemento de Cuttlefish integrado para desarrolladores de plataformas, SO Android Automotive (AAOS) y vehículos definidos por software (SDV) que trabajan con dispositivos virtuales Cuttlefish compilados de forma local:

  • Configuración de varios dispositivos en el Administrador de dispositivos: Crea y administra configuraciones de dispositivos virtuales Cuttlefish de varios dispositivos en el Administrador de dispositivos con tu confirmación de AOSP local ($ANDROID_BUILD_TOP y $ANDROID_PRODUCT_OUT).
  • Duplicación de pantallas múltiples en la ventana de herramientas de Cuttlefish: Abre View > Tool Windows > Cuttlefish para la duplicación de pantallas múltiples de Cuttlefish integrada, de modo que puedas ver e interactuar con varias pantallas automotrices a la vez para los flujos de trabajo de AAOS y SDV.

Ventana de herramientas de Cuttlefish y duplicación de pantalla múltiple en ASfP