Настройте IDE для разработки SDV.

Android Studio for Platform (ASfP) — это рекомендуемая интегрированная среда разработки (IDE) для платформы программно-определяемых транспортных средств (SDV) на базе Android Automotive OS (AAOS). ASfP поддерживает все языки, используемые платформой AAOS SDV, включая Rust для пакетов сервисов SDV.

На этой странице описана только настройка, специфичная для SDV. Для получения дополнительной информации об общих функциях и рабочих процессах ASfP см. Android Studio for Platform .

ASfP работает только на 64-битных системах Linux с процессорами x86-64. Его можно использовать на локальной рабочей станции Linux или в облаке. Более подробную информацию о настройке облака см. в разделе «Разработка в облаке» .

Установите ASfP

Для получения дополнительной информации о загрузке и установке ASfP, а также о проверке системных требований, см. раздел «Установка Android Studio для платформы» .

Индексирование исходного кода платформы потребляет много памяти, особенно если на той же машине запущены многовиртуальные устройства Cuttlefish. Если ASfP работает медленно, увеличьте максимальный размер кучи в настройках памяти ASfP в соответствии с вашим проектом и машиной, и ограничьте область действия проекта только теми каталогами, с которыми вы работаете.

Создайте проект SDV

Перед началом работы инициализируйте, синхронизируйте и соберите свой репозиторий AAOS SDV. Дополнительную информацию о настройке репозитория см. в разделах «Расположение кода» и «Загрузка, сборка и запуск» .

Для создания проекта SDV выполните следующие шаги:

  1. Создайте новый проект в ASfP и выберите корневую папку вашего репозитория AAOS SDV в качестве папки для сохранения. Дополнительную информацию о шагах мастера см. в разделе «Создание или импорт проекта» .
  2. После создания проекта в ASfP выберите ASfP > Проект > Открыть конфигурацию , чтобы открыть файл .asfp-project .
  3. Замените содержимое файла следующим примером, а затем укажите путь к вашему репозиторию repo на путь к вашей копии репозитория:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Обновите lunch и directories для области, над которой вы работаете. Для обеспечения быстрой индексации и синхронизации включайте только те каталоги, которые вы активно изменяете. В следующей таблице перечислены распространенные целевые каталоги и каталоги SDV:

    Основное направление разработки SDV цель lunch Рекомендуемые directories
    Пакеты услуг SDV sdv_core_cf-aosp_current-userdebug Ваш каталог услуг и каталог пакетов, например, system/software_defined_vehicle/samples
    Интеграция платформы SDV Core sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware , system/software_defined_vehicle/automotive_services , device/google/sdv
    Шлюз SDV на SDV IVI sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway , system/software_defined_vehicle/samples/sdv_gateway , packages/services/Car
    Безопасность отображения на SDV Media sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety , device/google/sdv_display_safety
    Дисплей безопасности на SDV IVI sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI , packages/services/display_safety/service

    Если в вашем репозитории используется манифест trunk_staging , замените -aosp_current-userdebug на -trunk_staging-userdebug . Чтобы просматривать также код нативной платформы, добавьте cpp в other_languages . Для получения дополнительной информации обо всех параметрах конфигурации см. раздел «Параметры конфигурации» .

  5. Чтобы применить изменения, выберите Файл > Синхронизировать проект .

Разверните пакеты услуг SDV.

ASfP включает плагин SDV, который развертывает APEX-файл, содержащий ваши пакеты служб, непосредственно на работающем устройстве SDV. Плагин отключен по умолчанию. Чтобы использовать его, включите плагин SDV в разделе «Настройки» > «Плагины» . Дополнительную информацию о создании пакетов APEX см. в разделе « Создание и развертывание пакетов служб» .

Способ развертывания зависит от того, установлен ли APEX уже на устройстве:

  • Если APEX уже установлен , вы можете развернуть изменения непосредственно из ASfP.
  • Если APEX новый , сначала необходимо пересобрать и перезапустить образ системы или использовать образ системы, включающий ключ, использованный для подписи APEX. После этого можно развертывать систему из ASfP.

Для развертывания пакета сервисов APEX выполните следующие действия:

  1. Запустите устройство SDV с помощью плагина Cuttlefish. Для получения дополнительной информации см. раздел «Запуск устройств SDV в Cuttlefish» .
  2. Откройте файл apex/Android.bp вашего пакета сервисов и нажмите значок «Запустить» во боковой панели рядом с блоком apex { .
  3. В открывшемся меню выберите «Выполнить 'Развернуть APEX_NAME '» . Вы также можете собрать APEX без развертывания или изменить конфигурацию запуска из того же меню.

Запускайте устройства SDV на Cuttlefish.

ASfP включает в себя плагин для Cuttlefish, который создает и запускает локальные устройства Cuttlefish. Для работы плагина необходим хост-оркестратор Cuttlefish. Если хост-оркестратор недоступен, ASfP отображает инструкции по его настройке.

Для создания устройства SDV выполните следующие шаги:

  1. Выберите Инструменты > Диспетчер устройств , нажмите + и выберите Создать устройство Cuttlefish .
  2. Для создания многовиртуальной конфигурации выберите « Из канонической конфигурации» и создайте или импортируйте конфигурацию для вашей системы, например, SDV Core с SDV IVI или SDV Media с SDV IVI для Display Safety. Для создания одной виртуальной машины выберите «Из локального дерева исходного кода Android» .

Чтобы просмотреть все дисплеи виртуальной машины на одном экране и получить доступ к дополнительным параметрам устройства, используйте окно инструментов Cuttlefish . Чтобы открыть его, выберите значок "..." на боковой панели и выберите Cuttlefish , или найдите Cuttlefish в разделе "Справка" > "Найти действие" . Вы также можете просмотреть отдельные дисплеи в разделе "Запущенные устройства" . Поскольку SDV Core работает без дисплея, используйте Logcat и Терминал для его проверки.

Отладка и тестирование

Для получения дополнительной информации об отладке и тестировании в ASfP см. разделы «Отладка кода платформы» и «Тестирование кода платформы» . Для получения дополнительной информации о настройке CodeLLDB для отладки пакетов сервисов Rust см. раздел «Отладка Rust» .

При подключении отладчика к пакету служб подключайтесь к процессу, который его размещает. Имена процессов используют формат <bundle_name>:<instance_name> , например, OrchestratorSampleRustServiceBundle:sample-main-no-conditions . Следующая команда выводит список соответствующих процессов и их идентификаторов:

adb shell ps -A | grep <bundle_name>

Для получения дополнительной информации о рабочих процессах отладки SDV, таких как подключение к нескольким устройствам и просмотр журналов, см. раздел «Отладка SDV» .

Редактирование файлов VSIDL

ASfP включает в себя языковой сервер VSIDL ( vsidl-lsp ). Дополнительную информацию о настройке каталога для языкового сервера см. в разделе «Автоматическое обновление каталога и интеграция LSP» . Если ваш каталог содержит файл CATALOG_UPDATE , редактор предоставляет следующие возможности для файлов .vsidl :

  • Проверка в реальном времени : редактор выделяет ключевые слова VSIDL и отображает синтаксические ошибки, неразрешенные типы и ошибки проверки VSIDLC в окне « Проблемы» . Для получения дополнительной информации о правилах проверки и кодах ошибок см. спецификацию языка VSIDL .
  • Автозаполнение и документация : вы можете нажать Ctrl+Space для получения подсказок по ключевым словам, сообщениям, услугам, темам и каналам, а также нажать Ctrl+Q для просмотра комментариев к документации.
  • Навигация и форматирование : Вы можете нажать Ctrl+B, чтобы перейти к определениям файлов .vsidl или .proto , Alt+Shift+F7, чтобы найти ссылки, Ctrl+F12 , чтобы просмотреть структуру файла, и Ctrl+Alt+L, чтобы отформатировать файл.

Добавить контекст SDV для ИИ-помощников

ASfP включает Gemini в Android Studio. Для получения дополнительной информации о возможностях ASfP см. раздел «Знакомство с Android Studio для платформы» . Чтобы помочь Gemini или другому помощнику по программированию на основе ИИ следовать соглашениям SDV, добавьте файл AGENTS.md в корневой каталог вашего каталога SDV. Для получения дополнительной информации о файлах агентов см. раздел «Настройка Gemini с помощью файлов AGENTS.md» .

Следующий пример — это отправная точка, которую вы можете адаптировать под свой каталог:

# AAOS SDV service catalog rules

- Implement SDV service bundles in Rust under `services/<BundleName>/src/`.
- Keep `.proto` files limited to Protobuf `message`, `enum`, and `service` definitions. Define service bundles, APEX packaging, VM placement, and SOME/IP mappings in `.vsidl` files.
- Regenerate middleware with `vsidlc` after you change `.vsidl` or `.proto` files, and leave generated files unmodified.
- Use `PascalCase` for service bundle names and lowercase `kebab-case` for topic and channel names.
- Run `vsidlc --explain <CODE>` to look up a VSIDLC error code.