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-projecten 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-projecto selecciona ASfP > Project > Export Config to Template para guardar un archivo de 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-projectpara 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, yandroid_app): Haz clic en Run junto a un módulo de prueba o una declaraciónandroid_apppara ejecutar o depurar el módulo. Los módulosandroid_testse depuran a través deatest, y los móduloscc_test*yrust_test*se inician en LLDB integrado.

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, oflashall. - 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.

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.

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
srcsosoong_config_module_typepara saltar a su declaración. Las sugerencias de inserciónN Usagesen las que se puede hacer clic aparecen junto a los nombres de los módulos y los destinossrcscompartidos, 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.bparchivo, incluidas las propiedades con alcance de arquitectura o destino entarget,arch, ymultilib, para ver su firma de tipo Soong y la documentación intercalada.

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_TOPy$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.
