軟體定義車輛 (SDV) 平台在程式碼集包含許多 VSIDL 目錄。CATALOG_UPDATE 檔案為每個目錄提供集中式設定,可自動更新及整合 IDE。
CATALOG_UPDATE 檔案的用途
CATALOG_UPDATE 檔案有兩個主要用途:
- 自動更新:如果編譯器或依附元件有所變更,
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"
為何需要自動更新
手動維護每個目錄產生的程式碼有幾個問題:
- 編譯器更新:編譯器更新後,如果修正了錯誤或新增功能,所有不在
genruleAndroid.bp檔案涵蓋範圍內的產生程式碼和檔案都應重新整理,以維持一致性。 - 依附元件管理:基礎目錄變更時,通常需要重新產生下游目錄。
- 準確度:自動更新功能可降低指定路徑和依附元件時發生人為錯誤的風險。
執行再生器工具
regenerator 工具會從 SDV 根目錄開始,逐步檢查目錄樹,並尋找名為 CATALOG_UPDATE 的檔案。
如要更新所有已設定的目錄,請按照下列步驟操作:
建構工具:
m regenerator執行工具:
regenerator視需要針對特定目錄以遞迴方式執行:
console regenerator --root /path/to/directory
這項工具會更新產生的檔案,並執行完整建構 (m droid),確認變更與系統其餘部分相容。