Платформа Software Defined Vehicle (SDV) содержит множество каталогов VSIDL по всей кодовой базе. Файл CATALOG_UPDATE обеспечивает централизованную конфигурацию для каждого каталога, что позволяет как автоматически обновлять его, так и интегрировать с IDE.
Роль файла CATALOG_UPDATE
Файл CATALOG_UPDATE выполняет две основные функции:
- Автоматические обновления: Этот файл позволяет инструменту
regeneratorнаходить и перекомпилировать все каталоги в системе при изменении компилятора или зависимостей. - Поддержка протокола LSP (Language Server Protocol): Языковой сервер VSIDL использует этот файл для определения корневого каталога и разрешения зависимостей. Это обеспечивает такие функции, как «Перейти к определению», автозавершение и проверку в реальном времени для типов, определенных в других каталогах.
Настройте каталог
Для включения автоматических обновлений и поддержки LSP для каталога VSIDL создайте файл CATALOG_UPDATE в корневом каталоге каталога. Этот файл представляет собой текстовый файл protobuf .
Поля конфигурации каталога
-
output_path(строка, необязательно): Относительный путь от корня каталога до каталога, куда следует поместить сгенерированный код промежуточного ПО. -
dependency_catalog_paths(повторяющаяся строка): Список относительных путей к другим каталогам. LSP-сервер использует эти пути для разрешения внешних типов. -
vsidlc_gen_args(строка, необязательно): Аргументы, передаваемые вvsidlc. LSP-сервер проверяет их, чтобы применить правильные правила проверки (например,"--apex"). -
prebuilts_output_path(строка, необязательно): Путь к сгенерированным предустановленным конфигурациям среды выполнения. -
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 ), чтобы убедиться в совместимости изменений с остальной частью системы.