La piattaforma Software Defined Vehicle (SDV) contiene numerosi cataloghi VSIDL nel codebase. Il file CATALOG_UPDATE fornisce una configurazione centralizzata per ogni catalogo, consentendo sia gli aggiornamenti automatici sia l'integrazione dell'IDE.
Ruolo del file CATALOG_UPDATE
Il file CATALOG_UPDATE ha due scopi principali:
- Aggiornamenti automatici: il file consente allo strumento
regeneratordi trovare e ricompilare tutti i cataloghi nel sistema quando il compilatore o le dipendenze cambiano. - Supporto del protocollo LSP (Language Server Protocol): il server di linguaggio VSIDL utilizza questo file per scoprire la radice del catalogo e risolvere le dipendenze. Ciò consente funzionalità come "Vai alla definizione", il completamento automatico e la convalida in tempo reale per i tipi definiti in altri cataloghi.
Configurare un catalogo
Per attivare gli aggiornamenti automatici e il supporto LSP per un catalogo VSIDL, crea un file CATALOG_UPDATE nella directory principale del catalogo. Questo file è un
file protobuf di testo.
Campi di configurazione del catalogo
output_path(stringa, facoltativo): il percorso relativo dalla radice del catalogo alla directory in cui deve essere inserito il codice middleware generato.dependency_catalog_paths(stringa ripetuta): un elenco di percorsi relativi ad altre directory di cataloghi. Il server LSP utilizza questi percorsi per risolvere i tipi esterni.vsidlc_gen_args(stringa, facoltativo): argomenti passati avsidlc. Il server LSP li esamina per applicare le regole di convalida corrette (ad esempio,"--apex").prebuilts_output_path(stringa, facoltativo): percorso per i prebuilt di configurazione di runtime generati.prebuilts_filegroup(stringa, facoltativo): il nome delfilegroupSoong per i prebuilt.
Configurazione di esempio
# 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"
Perché sono necessari gli aggiornamenti automatici
La manutenzione manuale del codice generato per ogni catalogo è problematica per diversi motivi:
- Aggiornamenti del compilatore: quando il compilatore viene aggiornato con correzioni di bug o nuove funzionalità, tutti i file e il codice generati non coperti da una
genrulein un fileAndroid.bpdevono essere aggiornati per mantenere la coerenza. - Gestione delle dipendenze: le modifiche in un catalogo di base spesso richiedono la rigenerazione dei cataloghi downstream.
- Accuratezza: gli aggiornamenti automatici riducono il rischio di errori umani durante la specifica di percorsi e dipendenze.
Eseguire lo strumento regenerator
Lo strumento regenerator percorre l'albero delle directory a partire dalla radice SDV e cerca i file denominati esattamente CATALOG_UPDATE.
Per aggiornare tutti i cataloghi configurati:
Crea lo strumento:
m regeneratorEsegui lo strumento:
regeneratorFacoltativamente, eseguilo in modo ricorsivo per una directory specifica:
console regenerator --root /path/to/directory
Lo strumento aggiorna i file generati ed esegue una build completa (m droid) per verificare che le modifiche siano compatibili con il resto del sistema.