La plate-forme SDV (Software Defined Vehicle) contient de nombreux catalogues VSIDL dans la codebase. Le fichier CATALOG_UPDATE fournit une configuration centralisée pour chaque catalogue, ce qui permet à la fois les mises à jour automatisées et l'intégration de l'IDE.
Rôle du fichier CATALOG_UPDATE
Le fichier CATALOG_UPDATE a deux objectifs principaux :
- Mises à jour automatisées : le fichier permet à l'outil
regeneratorde rechercher et de recompiler tous les catalogues du système lorsque le compilateur ou les dépendances changent. - Compatibilité avec le protocole LSP (Language Server Protocol) : le serveur de langage VSIDL utilise ce fichier pour découvrir la racine du catalogue et résoudre les dépendances. Cela permet d'activer des fonctionnalités telles que "Accéder à la définition", la saisie semi-automatique et la validation en temps réel pour les types définis dans d'autres catalogues.
Configurer un catalogue
Pour activer les mises à jour automatiques et la compatibilité LSP pour un catalogue VSIDL, créez un fichier CATALOG_UPDATE dans le répertoire racine du catalogue. Il s'agit d'un fichier protobuf textuel.
Champs de configuration du catalogue
output_path(chaîne, facultatif) : chemin d'accès relatif de la racine du catalogue au répertoire dans lequel le code du middleware généré doit être placé.dependency_catalog_paths(chaîne répétée) : liste de chemins relatifs à d'autres répertoires de catalogue. Le serveur LSP utilise ces chemins pour résoudre les types externes.vsidlc_gen_args(chaîne, facultatif) : arguments transmis àvsidlc. Le serveur LSP les inspecte pour appliquer les règles de validation appropriées (par exemple,"--apex").prebuilts_output_path(chaîne, facultatif) : chemin d'accès aux fichiers précompilés de configuration d'exécution générés.prebuilts_filegroup(chaîne, facultatif) : nom Soongfilegrouppour les précompilations.
Exemple de configuration
# 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"
Pourquoi les mises à jour automatiques sont-elles nécessaires ?
La maintenance manuelle du code généré pour chaque catalogue est problématique pour plusieurs raisons :
- Mises à jour du compilateur : lorsque le compilateur est mis à jour avec des corrections de bugs ou de nouvelles fonctionnalités, l'ensemble du code et des fichiers générés qui ne sont pas couverts par un
genruledans un fichierAndroid.bpdoit être actualisé pour maintenir la cohérence. - Gestion des dépendances : les modifications apportées à un catalogue de base nécessitent souvent de régénérer les catalogues en aval.
- Précision : les mises à jour automatisées réduisent le risque d'erreur humaine lors de la spécification des chemins d'accès et des dépendances.
Exécuter l'outil de régénération
L'outil regenerator parcourt l'arborescence du répertoire à partir de la racine SDV et recherche les fichiers nommés exactement CATALOG_UPDATE.
Pour mettre à jour tous les catalogues configurés :
Créez l'outil :
m regeneratorExécutez l'outil :
regeneratorVous pouvez également l'exécuter de manière récursive pour un répertoire spécifique :
console regenerator --root /path/to/directory
L'outil met à jour les fichiers générés et effectue une compilation complète (m droid) pour vérifier que les modifications sont compatibles avec le reste du système.