ソフトウェア定義車両(SDV)プラットフォームには、コードベース全体に多数の VSIDL カタログが含まれています。CATALOG_UPDATE ファイルは、各カタログの一元化された構成を提供し、自動更新と IDE 統合の両方を可能にします。
CATALOG_UPDATE ファイルの役割
CATALOG_UPDATE ファイルには、主に次の 2 つの目的があります。
- 自動更新: このファイルを使用すると、コンパイラまたは依存関係が変更されたときに、
regeneratorツールがシステム内のすべてのカタログを検索して再コンパイルできます。 - 言語サーバー プロトコル(LSP)のサポート: VSIDL 言語サーバーは、このファイルを使用してカタログ ルートを検出し、依存関係を解決します。これにより、他のカタログで定義された型の「定義に移動」、予測入力、リアルタイム検証などの機能が有効になります。
カタログを構成する
VSIDL カタログの自動更新と LSP サポートを有効にするには、カタログのルート ディレクトリに CATALOG_UPDATE ファイルを作成します。このファイルはテキスト protobuf ファイルです。
カタログ構成フィールド
output_path(文字列、省略可): 生成されたミドルウェア コードを配置するディレクトリへのカタログ ルートからの相対パス。dependency_catalog_paths(繰り返し文字列): 他のカタログ ディレクトリへの相対パスのリスト。LSP サーバーは、これらのパスを使用して外部型を解決します。vsidlc_gen_args(文字列、省略可):vsidlcに渡される引数。LSP サーバーはこれらを検査して、正しい検証ルール("--apex"など)を適用します。prebuilts_output_path(文字列、省略可): 生成されたランタイム構成のビルド済みファイルのパス。prebuilts_filegroup(文字列、省略可): 事前ビルドの Soongfilegroup名。
構成の例
# 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"
自動更新が必要な理由
生成されたコードをカタログごとに手動で管理することは、いくつかの理由で問題があります。
- コンパイラの更新: コンパイラがバグの修正や新機能で更新された場合、生成されたすべてのコードと、
Android.bpファイルのgenruleでカバーされていないファイルは、整合性を維持するために更新する必要があります。 - 依存関係の管理: ベースカタログの変更により、ダウンストリーム カタログの再生成が必要になることがよくあります。
- 精度: 自動更新により、パスと依存関係を指定する際の人為的ミスのリスクが軽減されます。
再生ツールを実行する
regenerator ツールは、SDV ルートからディレクトリ ツリーをたどり、CATALOG_UPDATE という名前のファイルを検索します。
構成済みのすべてのカタログを更新するには:
ツールをビルドします。
m regeneratorツールを実行します。
regenerator必要に応じて、特定のディレクトリに対して再帰的に実行します。
console regenerator --root /path/to/directory
このツールは、生成されたファイルを更新し、フルビルド(m droid)を実行して、変更がシステムの他の部分と互換性があることを確認します。