Проект в Android Studio for Platform (ASfP) содержит все, что определяет вашу рабочую область для базы кода AOSP, от исходного кода и ресурсов до тестового кода и конфигураций сборки Soong.
ASfP построен на основе модели рабочей области IntelliJ и позволяет создавать крупные проекты платформы и восстанавливать модель проекта из кешированных снимков при запуске. Содержимое каталога out/ и сгенерированные файлы gen исключаются из области поиска по проекту, чтобы навигация по символам и файлам оставалась быстрой.
Настройки проекта (.asfp-project)
Файл .asfp-project YAML, расположенный в корневом каталоге проекта, управляет конфигурацией проекта ASfP. Этот файл определяет, какие каталоги, модули Soong, языки и флаги сборки включены в рабочую область.
Вы можете открыть конфигурацию проекта в любое время, используя любой из следующих вариантов:
- В главном меню выберите ASfP > Project > Open Config (ASfP > Проект > Открыть конфигурацию).
- Нажмите дважды на значок
.asfp-projectв корневом уровне окна инструмента Project (Проект). - Нажмите Open Config (Открыть конфигурацию) на панели инструментов окна инструмента Soong.
После редактирования файла .asfp-project выполните синхронизацию проекта, чтобы изменения вступили в силу.
Общедоступные шаблоны проектов (экспорт и импорт)
Команды, работающие над одной и той же подсистемой (например, SystemUI, Settings, SurfaceFlinger или Automotive), могут использовать стандартную конфигурацию .asfp-project в качестве шаблона:
Экспорт в шаблон. Нажмите правой кнопкой мыши на вкладку редактора
.asfp-projectили выберите ASfP > Project (Проект) > Export Config to Template (Экспортировать конфигурацию в шаблон), чтобы сохранить файл шаблона, которым можно поделиться.
Импорт из шаблона. При создании проекта в мастере настройки выберите Импорт из шаблона и укажите общий YAML-файл
.asfp-project, чтобы автоматически заполнить каталоги, модули и настройки сборки.
Параметры конфигурации
Файл .asfp-project поддерживает следующие параметры:
repo
Обязательный параметр. Абсолютный путь к корню извлечения репозитория платформы Android.
repo: /path/to/aosp
lunch
Обязательно. Целевой обед, связанный с вашим проектом. Используется для всех действий Soong по сборке, синхронизации и развертыванию.
lunch: aosp_cf_x86_64_phone-aosp_current-userdebug
directories
Необязательно. Каталоги, которые нужно включить в проект или исключить из него (относительно корневого каталога repo). Поддерживаются каталоги с символическими ссылками и корневые каталоги источников.
directories:
include:
- frameworks/base
- packages/apps/Settings
exclude:
- vendor
- out/soong
modules
Необязательно. Укажите модули Soong, которые нужно включить в проект или исключить из него.
Работает в сочетании с directories. Поддерживаются как полные, так и сокращенные названия модулей.
modules:
include:
- SystemUI
- frameworks/base/services/core/java:services
exclude:
- UnusedModule
test_sources
Необязательно. Относительные пути, которые нужно отметить как корневые каталоги тестовых источников, если автоматические эвристические алгоритмы ASfP для определения тестовых источников требуют ручного переопределения.
test_sources:
- cts/tests/tests/example
- tests/mytests
other_languages
Необязательно. Поддержка Java, Kotlin и Android.bp включена по умолчанию. Добавьте cpp для поддержки C и C++ или rust для поддержки Rust:
other_languages:
- cpp
- rust
build_config
Необязательно. Пользовательские флаги или переменные среды, передаваемые вызовам сборки Soong, которые запускаются IDE (включая синхронизацию, сборку gutter и конфигурации запуска):
build_config:
flags:
- -j64
env:
SOONG_PARTIAL_COMPILE: true
SOONG_ALLOW_MISSING_DEPENDENCIES: true
Режимы синхронизации и окно инструмента Soong
ASfP предлагает несколько способов синхронизации проекта IDE с извлечением AOSP в зависимости от ваших потребностей. Эти действия доступны в меню ASfP > Sync (Синхронизация) или в окне инструмента Soong:
- Синхронизировать проект. Анализирует настроенные каталоги и модули и обновляет индексацию и зависимости IDE.
- Частичная синхронизация. Синхронизирует только целевой набор модулей или каталогов, экономя время при работе в локализованной области дерева.
- Синхронизация без сборки. Обновляет структуру проекта IDE и корневые каталоги исходного кода без запуска этапа сборки Soong. Это полезно, если вы добавили или переместили исходные файлы или уже выполнили сборку из терминала.
- Синхронизация и полная сборка. Сочетает синхронизацию проекта с полной сборкой Soong в один шаг.
В окне инструмента Soong (View > Tool Windows > Soong) в реальном времени отображаются индикаторы статуса для каждого узла задачи синхронизации, кнопки быстрой сборки и выполнение команд Soong.
Сборка, развертывание и навигация в редакторе Android.bp
ASfP поддерживает встроенный редактор для файлов Android.bp:
Создавайте, запускайте и отлаживайте цели на полях.
Откройте любой файл Android.bp в проекте, чтобы создать или запустить цели с помощью двух значков на полях:
- Значок сборки (все именованные модули). Появляется рядом с
name:на каждом именованном модуле (cc_library_shared,java_library,rust_binary,android_appи тестовые цели) для сборки этой цели Soong (Собрать "<module>"). - Значок запуска или отладки (
*_test,*_test_hostиandroid_app). Нажмите Run (Запустить) рядом с тестовым модулем или объявлениемandroid_app, чтобы запустить или отладить модуль. Отладка модулейandroid_testвыполняется черезatest, а модулиcc_test*иrust_test*запускаются во встроенном LLDB.

Конфигурации контекстного развертывания и запуска Flash
Для развертываемых модулей в файлах Android.bp можно создавать и запускать контекстные конфигурации Soong Deploy из желоба или контекстного меню, вызываемого нажатием правой кнопки мыши. Доступны следующие функции:
- Способы развертывания: Развертывание можно выполнить с помощью
adb, пользовательских сценариев командной оболочки,adeviceилиflashall. - Pre-run Soong build hooks (Предварительно запустить хуки сборки Soong). Автоматически собирать целевой модуль Soong перед развертыванием на подключенном устройстве или виртуальном устройстве Cuttlefish.

Переключение между исходным кодом и Android.bp
В окне инструмента Project (Проект), на вкладке редактора или в контекстном меню редактора нажмите правой кнопкой мыши на любой исходный файл или каталог и выберите Open Corresponding Android.bp File (Открыть соответствующий файл Android.bp). ASfP находит и выделяет объявление модуля Android.bp, который компилирует этот файл, разрешая блоки defaults, шаблоны подстановочных знаков srcs и символические ссылки.

Android.bp документацию по интеллектуальным функциям редактора и подсказкам;
- Навигация между файлами и счетчики использования. Нажмите Control и выберите ссылку на модуль, файл
srcsилиsoong_config_module_type, чтобы перейти к его объявлению. Рядом с названиями модулей и общими целямиsrcsпоявляются интерактивные подсказкиN Usages, а модули библиотек, на которые нет ссылок, визуально затемняются. - Подсказки с документацией по свойствам Soong. Наведите указатель на любое свойство в файле
Android.bp, включая свойства, относящиеся к архитектуре или целевому объекту, в разделахtarget,archиmultilib, чтобы просмотреть его сигнатуру типа Soong и встроенную документацию.

Управление виртуальными устройствами Cuttlefish и дублирование нескольких экранов
В ASfP есть встроенный плагин Cuttlefish для разработчиков платформы, Android Automotive OS (AAOS) и программно-определяемых автомобилей (SDV), работающих с локально созданными виртуальными устройствами Cuttlefish:
- Настройка нескольких устройств в Диспетчере устройств: Создавайте и управляйте конфигурациями нескольких виртуальных устройств Cuttlefish в Диспетчере устройств, используя локальную копию AOSP (
$ANDROID_BUILD_TOPи$ANDROID_PRODUCT_OUT). - Дублирование экрана на различных устройствах в окне инструмента Cuttlefish. Откройте View > Tool Windows > Cuttlefish, чтобы включить встроенное дублирование экрана на различных устройствах Cuttlefish и просматривать несколько автомобильных дисплеев одновременно для рабочих процессов AAOS и SDV.
