La plataforma de vehículos definidos por software (SDV) contiene numerosos catálogos de VSIDL en toda la base de código. El archivo CATALOG_UPDATE proporciona una configuración centralizada para cada catálogo, lo que permite tanto las actualizaciones automáticas como la integración del IDE.
Función del archivo CATALOG_UPDATE
El archivo CATALOG_UPDATE tiene dos propósitos principales:
- Actualizaciones automatizadas: El archivo permite que la herramienta
regeneratorencuentre y vuelva a compilar todos los catálogos del sistema cuando cambia el compilador o las dependencias. - Compatibilidad con el Protocolo de servidor de lenguaje (LSP): El servidor de lenguaje de VSIDL usa este archivo para descubrir la raíz del catálogo y resolver las dependencias. Esto habilita funciones como "Ir a la definición", autocompletado y validación en tiempo real para los tipos definidos en otros catálogos.
Configura un catálogo
Para habilitar las actualizaciones automáticas y la compatibilidad con LSP para un catálogo de VSIDL, crea un archivo CATALOG_UPDATE en el directorio raíz del catálogo. Este archivo es un archivo protobuf de texto.
Campos de configuración del catálogo
output_path(cadena, opcional): Es la ruta de acceso relativa desde la raíz del catálogo hasta el directorio en el que se debe colocar el código de middleware generado.dependency_catalog_paths(cadena repetida): Es una lista de rutas relativas a otros directorios del catálogo. El servidor del LSP usa estas rutas para resolver tipos externos.vsidlc_gen_args(cadena, opcional): Son los argumentos que se pasan avsidlc. El servidor LSP los inspecciona para aplicar las reglas de validación correctas (por ejemplo,"--apex").prebuilts_output_path(cadena, opcional): Es la ruta de acceso para los módulos precompilados de configuración del tiempo de ejecución generados.prebuilts_filegroup(cadena, opcional): Es el nombre defilegroupde Soong para los elementos precompilados.
Configuración de ejemplo
# 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"
Por qué son necesarias las actualizaciones automáticas
Mantener manualmente el código generado para cada catálogo es problemático por varios motivos:
- Actualizaciones del compilador: Cuando el compilador se actualiza con correcciones de errores o funciones nuevas, se deben actualizar todos los archivos y el código generados que no estén cubiertos por un
genruleen un archivoAndroid.bppara mantener la coherencia. - Administración de dependencias: Los cambios en un catálogo base a menudo requieren que se regeneren los catálogos descendentes.
- Precisión: Las actualizaciones automáticas reducen el riesgo de errores humanos cuando se especifican rutas y dependencias.
Ejecuta la herramienta de regeneración
La herramienta regenerator recorre el árbol de directorios a partir de la raíz del SDV y busca archivos llamados exactamente CATALOG_UPDATE.
Para actualizar todos los catálogos configurados, haz lo siguiente:
Compila la herramienta:
m regeneratorEjecuta la herramienta:
regeneratorDe manera opcional, puedes ejecutarlo de forma recursiva para un directorio específico:
console regenerator --root /path/to/directory
La herramienta actualiza los archivos generados y realiza una compilación completa (m droid) para verificar que los cambios sean compatibles con el resto del sistema.