การอัปเดตแคตตาล็อกอัตโนมัติและการผสานรวม LSP

แพลตฟอร์ม Software Defined Vehicle (SDV) มีแคตตาล็อก VSIDL จำนวนมากในฐานของโค้ด ไฟล์ CATALOG_UPDATE มีการกำหนดค่าแบบรวมศูนย์สำหรับแต่ละแคตตาล็อก ซึ่งช่วยให้ทั้งการอัปเดตอัตโนมัติและการผสานรวม IDE ทำงานได้

บทบาทของไฟล์ CATALOG_UPDATE

ไฟล์ CATALOG_UPDATE มีวัตถุประสงค์หลัก 2 ประการ ได้แก่

  1. การอัปเดตอัตโนมัติ: ไฟล์นี้ช่วยให้เครื่องมือ regenerator ค้นหาและคอมไพล์แคตตาล็อกทั้งหมดในระบบอีกครั้งเมื่อคอมไพเลอร์หรือทรัพยากร Dependency มีการเปลี่ยนแปลง
  2. การรองรับ 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"

เหตุใดจึงต้องมีการอัปเดตอัตโนมัติ

การดูแลรักษาโค้ดที่สร้างขึ้นสำหรับแคตตาล็อกทุกรายการด้วยตนเองนั้นมีปัญหาหลายประการ ดังนี้

  1. การอัปเดตคอมไพเลอร์: เมื่อคอมไพเลอร์ได้รับการอัปเดตด้วยการแก้ไขข้อบกพร่องหรือฟีเจอร์ใหม่ๆ โค้ดและไฟล์ทั้งหมดที่สร้างขึ้นซึ่งไม่ได้ครอบคลุมโดย genrule ในไฟล์ Android.bp ควรได้รับการรีเฟรชเพื่อรักษาความสอดคล้อง
  2. การจัดการทรัพยากร Dependency: การเปลี่ยนแปลงในแคตตาล็อกฐานมักจะต้องสร้างแคตตาล็อกปลายน้ำใหม่
  3. ความแม่นยำ: การอัปเดตอัตโนมัติช่วยลดความเสี่ยงที่ผู้ปฏิบัติงานจะระบุเส้นทางและการขึ้นต่อกันผิดพลาด

เรียกใช้เครื่องมือสร้างใหม่

เครื่องมือ regenerator จะเดินผ่านแผนผังไดเรกทอรีโดยเริ่มจากรูท SDV และค้นหาไฟล์ที่มีชื่อตรงกับ CATALOG_UPDATE ทุกประการ

วิธีอัปเดตแคตตาล็อกที่กำหนดค่าไว้ทั้งหมด

  1. สร้างเครื่องมือ

    m regenerator
    
  2. เรียกใช้เครื่องมือโดยทำดังนี้

    regenerator
    

    หรือจะเรียกใช้ซ้ำสำหรับไดเรกทอรีที่ต้องการก็ได้ ดังนี้ console regenerator --root /path/to/directory

เครื่องมือจะอัปเดตไฟล์ที่สร้างขึ้นและทำการบิลด์แบบเต็ม (m droid) เพื่อยืนยันว่าการเปลี่ยนแปลงเข้ากันได้กับส่วนที่เหลือของระบบ