Die Software Defined Vehicle (SDV)-Plattform enthält zahlreiche VSIDL-Kataloge in der gesamten Codebasis. Die Datei CATALOG_UPDATE bietet eine zentrale Konfiguration für jeden Katalog und ermöglicht sowohl automatisierte Updates als auch die IDE-Integration.
Rolle der Datei „CATALOG_UPDATE“
Die Datei CATALOG_UPDATE erfüllt zwei Hauptzwecke:
- Automatisierte Updates:Mit der Datei kann das
regenerator-Tool alle Kataloge im System finden und neu kompilieren, wenn sich der Compiler oder die Abhängigkeiten ändern. - Unterstützung des Language Server Protocol (LSP):Der VSIDL-Sprachserver verwendet diese Datei, um das Katalogstammverzeichnis zu ermitteln und Abhängigkeiten aufzulösen. Dadurch werden Funktionen wie „Zur Definition springen“, die automatische Vervollständigung und die Echtzeitvalidierung für Typen aktiviert, die in anderen Katalogen definiert sind.
Katalog konfigurieren
Wenn Sie automatische Updates und die LSP-Unterstützung für einen VSIDL-Katalog aktivieren möchten, erstellen Sie im Stammverzeichnis des Katalogs eine CATALOG_UPDATE-Datei. Diese Datei ist eine Text-Protobuf-Datei.
Felder für die Katalogkonfiguration
output_path(String, optional): Der relative Pfad vom Katalogstammverzeichnis zum Verzeichnis, in dem der generierte Middleware-Code platziert werden soll.dependency_catalog_paths(wiederholter String): Eine Liste relativer Pfade zu anderen Katalogverzeichnissen. Der LSP-Server verwendet diese Pfade, um externe Typen aufzulösen.vsidlc_gen_args(String, optional): Argumente, die anvsidlcübergeben werden. Der LSP-Server prüft diese, um die richtigen Validierungsregeln anzuwenden (z. B."--apex").prebuilts_output_path(String, optional): Pfad für generierte Prebuilts für die Laufzeitkonfiguration.prebuilts_filegroup(String, optional): Der Soong-filegroup-Name für Prebuilts.
Konfigurationsbeispiel
# 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"
Warum sind automatische Updates erforderlich?
Die manuelle Pflege des generierten Codes für jeden Katalog ist aus mehreren Gründen problematisch:
- Compiler-Updates:Wenn der Compiler mit Fehlerkorrekturen oder neuen Funktionen aktualisiert wird, sollten alle generierten Code- und Dateielemente, die nicht durch ein
genrulein einerAndroid.bp-Datei abgedeckt sind, aktualisiert werden, um die Konsistenz zu wahren. - Abhängigkeitsverwaltung:Änderungen an einem Basiskatalog erfordern oft, dass nachgelagerte Kataloge neu generiert werden.
- Genauigkeit:Durch automatisierte Updates wird das Risiko menschlicher Fehler beim Angeben von Pfaden und Abhängigkeiten verringert.
Regenerator-Tool ausführen
Das Tool regenerator durchsucht den Verzeichnisbaum ab dem SDV-Stammverzeichnis und sucht nach Dateien mit dem Namen CATALOG_UPDATE.
So aktualisieren Sie alle konfigurierten Kataloge:
Tool erstellen:
m regeneratorFühren Sie das Tool aus:
regeneratorOptional können Sie den Befehl rekursiv für ein bestimmtes Verzeichnis ausführen:
console regenerator --root /path/to/directory
Das Tool aktualisiert die generierten Dateien und führt einen vollständigen Build (m droid) aus, um zu prüfen, ob die Änderungen mit dem Rest des Systems kompatibel sind.