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