Платформа SDV содержит множество каталогов VSIDL в базе кода. Файл CATALOG_UPDATE обеспечивает централизованную конфигурацию для каждого каталога, позволяя выполнять автоматические обновления и интеграцию с IDE.
Роль файла CATALOG_UPDATE
Файл CATALOG_UPDATE служит двум основным целям:
- Автоматические обновления. Файл позволяет инструменту
regeneratorнаходить и перекомпилировать все каталоги в системе при изменении компилятора или зависимостей. - Поддержка Language Server Protocol (LSP). Языковой сервер VSIDL использует этот файл, чтобы найти корневой каталог и разрешить зависимости. Это позволяет использовать такие функции, как "Перейти к определению", автозаполнение и проверка в реальном времени для типов, определенных в других каталогах.
Как настроить каталог
Чтобы включить автоматические обновления и поддержку LSP для каталога VSIDL, создайте файл CATALOG_UPDATE в корневом каталоге. Это файл text protobuf.
Поля конфигурации каталога
output_path(строка, необязательно) – относительный путь от корня каталога к каталогу, в котором должен быть размещен сгенерированный код промежуточного ПО.dependency_catalog_paths(повторяющаяся строка) – список относительных путей к другим каталогам. Сервер LSP использует эти пути для разрешения внешних типов.vsidlc_gen_args(строка, необязательно) – аргументы, передаваемые вvsidlc. Сервер LSP проверяет их, чтобы применить правильные правила проверки (например,"--apex").prebuilts_output_path(string, необязательно) – путь к сгенерированным предварительным сборкам конфигурации среды выполнения.prebuilts_filegroup(строка, необязательно): названиеfilegroupSoong для предварительно собранных модулей.
Пример конфигурации
# proto-file: //system/software_defined_vehicle/tools/regenerator/proto/catalog.proto
# proto-message: Catalog
output_path: ".."
dependency_catalog_paths: "../../../../../automotive_services/diagnostics/vsidl/v1"
vsidlc_gen_args: "--apex"
Зачем нужны автоматические обновления
Поддерживать сгенерированный код для каждого каталога вручную проблематично по нескольким причинам:
- Обновления компилятора. Когда в компиляторе исправляются ошибки или появляются новые функции, весь сгенерированный код и файлы, не охваченные
genruleв файлеAndroid.bp, должны быть обновлены для обеспечения согласованности. - Управление зависимостями. Изменения в базовом каталоге часто требуют повторного создания дочерних каталогов.
- Точность. Автоматические обновления снижают риск человеческой ошибки при указании путей и зависимостей.
Как запустить инструмент регенерации
Инструмент regenerator проходит по дереву каталогов, начиная с корневого каталога SDV, и ищет файлы с точным названием CATALOG_UPDATE.
Чтобы обновить все настроенные каталоги, выполните следующие действия:
Создайте инструмент:
m regeneratorЗапустите инструмент:
regeneratorПри необходимости запустите ее рекурсивно для определенного каталога:
console regenerator --root /path/to/directory
Инструмент обновляет сгенерированные файлы и выполняет полную сборку (m droid), чтобы проверить, совместимы ли изменения с остальной частью системы.