Обзор проектов и рабочих процессов Soong

Проект в 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 (Экспортировать конфигурацию в шаблон), чтобы сохранить файл шаблона, которым можно поделиться.

    Экспорт конфигурации проекта ASfP в шаблон, которым можно поделиться

  • Импорт из шаблона. При создании проекта в мастере настройки выберите Импорт из шаблона и укажите общий 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.

Создание, запуск и отладка модулей с помощью значков на полях Android.bp.

Конфигурации контекстного развертывания и запуска Flash

Для развертываемых модулей в файлах Android.bp можно создавать и запускать контекстные конфигурации Soong Deploy из желоба или контекстного меню, вызываемого нажатием правой кнопки мыши. Доступны следующие функции:

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

Выбор конфигураций запуска Adevice или Flashall в ASfP

Переключение между исходным кодом и Android.bp

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

Действие контекстного меню &quot;Открыть соответствующий файл Android.bp&quot;

Android.bp документацию по интеллектуальным функциям редактора и подсказкам;

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

Подсказки с документацией по свойствам Android.bp и встроенные подсказки по использованию.


Управление виртуальными устройствами 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.

Окно инструмента Cuttlefish и дублирование экрана на различных устройствах в ASfP