แพลตฟอร์ม Software Defined Vehicle (SDV) มีแคตตาล็อก VSIDL จำนวนมากในฐานของโค้ด ไฟล์ CATALOG_UPDATE มีการกำหนดค่าแบบรวมศูนย์สำหรับแคตตาล็อกแต่ละรายการ ซึ่งช่วยให้ทั้งการอัปเดตอัตโนมัติและการผสานรวม IDE เป็นไปได้
บทบาทของไฟล์ CATALOG_UPDATE
ไฟล์ CATALOG_UPDATE มีวัตถุประสงค์หลัก 2 ประการ ดังนี้
- การอัปเดตอัตโนมัติ: ไฟล์นี้ช่วยให้เครื่องมือ
regeneratorค้นหาและคอมไพล์แคตตาล็อกทั้งหมดในระบบอีกครั้งเมื่อคอมไพเลอร์หรือการขึ้นต่อกันมีการเปลี่ยนแปลง - การรองรับโปรโตคอล Language Server Protocol (LSP): Language Server ของ VSIDL ใช้ไฟล์นี้เพื่อค้นหารูทของแคตตาล็อกและแก้ไขการขึ้นต่อกัน ซึ่งจะเปิดใช้ฟีเจอร์ต่างๆ เช่น "ไปที่คำจำกัดความ" การเติมข้อความอัตโนมัติ และการตรวจสอบแบบเรียลไทม์สำหรับประเภทที่กำหนดไว้ในแคตตาล็อกอื่นๆ
กำหนดค่าแคตตาล็อก
หากต้องการเปิดใช้การอัปเดตอัตโนมัติและการรองรับ LSP สำหรับแคตตาล็อก VSIDL ให้สร้างไฟล์ CATALOG_UPDATE ในไดเรกทอรีรูทของแคตตาล็อก ไฟล์นี้เป็นไฟล์ข้อความ
Protobuf
ช่องการกำหนดค่าแคตตาล็อก
output_path(สตริง ไม่บังคับ): เส้นทางแบบสัมพัทธ์จากรูทของแคตตาล็อกไปยังไดเรกทอรีที่ควรวางโค้ดมิดเดิลแวร์ที่สร้างขึ้นdependency_catalog_paths(สตริงซ้ำ): รายการเส้นทางแบบสัมพัทธ์ไปยังไดเรกทอรีแคตตาล็อกอื่นๆ เซิร์ฟเวอร์ LSP ใช้เส้นทางเหล่านี้เพื่อแก้ไขประเภทภายนอกvsidlc_gen_args(สตริง ไม่บังคับ): อาร์กิวเมนต์ที่ส่งไปยังvsidlcเซิร์ฟเวอร์ LSP จะตรวจสอบอาร์กิวเมนต์เหล่านี้เพื่อใช้กฎการตรวจสอบที่ถูกต้อง (เช่น"--apex")prebuilts_output_path(สตริง ไม่บังคับ): เส้นทางสำหรับ Prebuilt ของการกำหนดค่ารันไทม์ที่สร้างขึ้นprebuilts_filegroup(สตริง ไม่บังคับ): ชื่อfilegroupของ Soong สำหรับ Prebuilt
การกำหนดค่าตัวอย่าง
# 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"
เหตุผลที่ต้องมีการอัปเดตอัตโนมัติ
การดูแลรักษาโค้ดที่สร้างขึ้นด้วยตนเองสำหรับแคตตาล็อกทุกรายการมีปัญหาด้วยเหตุผลหลายประการ ดังนี้
- การอัปเดตคอมไพเลอร์: เมื่อคอมไพเลอร์ได้รับการอัปเดตด้วยการแก้ไขข้อบกพร่องหรือฟีเจอร์ใหม่ๆ โค้ดและไฟล์ที่สร้างขึ้นทั้งหมดซึ่งไม่ได้อยู่ใน
genruleในไฟล์Android.bpควรได้รับการรีเฟรชเพื่อรักษาความสอดคล้อง - การจัดการการขึ้นต่อกัน: การเปลี่ยนแปลงในแคตตาล็อกฐานมักจะต้องมีการสร้างแคตตาล็อกปลายทางขึ้นมาใหม่
- ความแม่นยำ: การอัปเดตอัตโนมัติช่วยลดความเสี่ยงที่ผู้ปฏิบัติงานจะป้อนเส้นทางและทรัพยากร Dependency ผิดพลาด
เรียกใช้เครื่องมือ Regenerator
เครื่องมือ regenerator จะสำรวจแผนผังไดเรกทอรีโดยเริ่มจากรูทของ SDV และมองหาไฟล์ที่มีชื่อว่า CATALOG_UPDATE
วิธีอัปเดตแคตตาล็อกที่กำหนดค่าไว้ทั้งหมด
สร้างเครื่องมือโดยทำดังนี้
m regeneratorเรียกใช้เครื่องมือโดยทำดังนี้
regeneratorหรือจะเรียกใช้แบบเรียกซ้ำสำหรับไดเรกทอรีที่เฉพาะเจาะจงก็ได้:
console regenerator --root /path/to/directory
เครื่องมือจะอัปเดตไฟล์ที่สร้างขึ้นและทำการสร้างแบบเต็ม (m droid) เพื่อตรวจสอบว่าการเปลี่ยนแปลงเข้ากันได้กับส่วนอื่นๆ ของระบบ