Android Studio for Platform (ASfP) เป็นสภาพแวดล้อมในการพัฒนาซอฟต์แวร์แบบผสานรวม (IDE) ที่แนะนำสำหรับแพลตฟอร์ม Software-Defined Vehicle (SDV) ของ Android Automotive OS (AAOS) ASfP รองรับทุกภาษาที่แพลตฟอร์ม AAOS SDV ใช้ รวมถึง Rust สำหรับแพ็กเกจบริการ SDV
หน้านี้ครอบคลุมเฉพาะการตั้งค่าที่เกี่ยวข้องกับ SDV ดูข้อมูลเพิ่มเติมเกี่ยวกับ ฟีเจอร์และเวิร์กโฟลว์ทั่วไปของ ASfP ได้ที่ Android Studio for Platform
ASfP ทำงานใน Linux 64 บิตที่มี CPU x86-64 เท่านั้น คุณสามารถใช้เครื่องมือนี้ในเวิร์กสเตชัน Linux ในเครื่องหรือในระบบคลาวด์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าระบบคลาวด์ได้ที่ การพัฒนาในระบบคลาวด์
ติดตั้ง ASfP
ดูข้อมูลเพิ่มเติมเกี่ยวกับการดาวน์โหลดและติดตั้ง ASfP รวมถึงการตรวจสอบ ข้อกำหนดของระบบได้ที่ติดตั้ง Android Studio สำหรับแพลตฟอร์ม
การจัดทำดัชนีการชำระเงินของแพลตฟอร์มใช้หน่วยความจำจำนวนมาก โดยเฉพาะเมื่อคุณเรียกใช้ อุปกรณ์ Cuttlefish แบบหลาย VM ในเครื่องเดียวกันด้วย หาก ASfP ทำงานช้า ให้เพิ่ม ขนาดฮีปสูงสุดในการตั้งค่าหน่วยความจำของ ASfP ให้เหมาะกับโปรเจ็กต์และ เครื่องของคุณ และจำกัดขอบเขตโปรเจ็กต์ไว้ในไดเรกทอรีที่คุณทำงานด้วย
สร้างโปรเจ็กต์ SDV
เริ่มต้น ซิงค์ และสร้างการชำระเงิน SDV ของ AAOS ก่อนเริ่ม ดูข้อมูลเพิ่มเติม เกี่ยวกับการตั้งค่าหน้าชำระเงินได้ที่ตำแหน่งโค้ดและ ดาวน์โหลด สร้าง และเรียกใช้
หากต้องการสร้างโปรเจ็กต์ SDV ให้ทำตามขั้นตอนต่อไปนี้
- สร้างโปรเจ็กต์ใหม่ใน ASfP และเลือกรูทของการชำระเงิน AAOS SDV เป็นที่เก็บการชำระเงิน ดูข้อมูลเพิ่มเติมเกี่ยวกับขั้นตอนของวิซาร์ดได้ที่สร้างหรือนำเข้าโปรเจ็กต์
- หลังจาก ASfP สร้างโปรเจ็กต์แล้ว ให้เลือก ASfP > โปรเจ็กต์ > เปิดการกำหนดค่าเพื่อเปิดไฟล์
.asfp-project แทนที่เนื้อหาของไฟล์ด้วยตัวอย่างต่อไปนี้ แล้วตั้งค่า
repoเป็นเส้นทางการชำระเงินrepo: /path/to/sdv_source lunch: sdv_core_cf-aosp_current-userdebug directories: include: - system/software_defined_vehicle/samples other_languages: - rustอัปเดต
lunchและdirectoriesสำหรับพื้นที่ที่คุณทำงาน หากต้องการให้การจัดทำดัชนี และการซิงค์รวดเร็ว ให้รวมเฉพาะไดเรกทอรีที่คุณแก้ไขอยู่เป็นประจำ ตารางต่อไปนี้แสดงรายการเป้าหมายและไดเรกทอรี SDV ที่พบบ่อยมุ่งเน้นการพัฒนา SDV เป้าหมาย lunchdirectoriesแนะนำแพ็กเกจบริการ SDV sdv_core_cf-aosp_current-userdebugแคตตาล็อกบริการและไดเรกทอรีแพ็กเกจ เช่น system/software_defined_vehicle/samplesการผสานรวมแพลตฟอร์มหลักของ SDV sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvSDV Gateway ใน SDV IVI sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/Carความปลอดภัยในการแสดงผลในสื่อ SDV sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetyความปลอดภัยในการแสดงผลบน SDV IVI sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceหากการชำระเงินใช้
trunk_stagingManifest ให้แทนที่-aosp_current-userdebugด้วย-trunk_staging-userdebugหากต้องการเรียกดูโค้ดแพลตฟอร์มเนทีฟด้วย ให้เพิ่มcppในother_languagesดูข้อมูลเพิ่มเติม เกี่ยวกับตัวเลือกการกำหนดค่าทั้งหมดได้ที่พารามิเตอร์การกำหนดค่าหากต้องการใช้การเปลี่ยนแปลง ให้เลือกไฟล์ > ซิงค์โปรเจ็กต์
ติดตั้งใช้งานแพ็กเกจบริการ SDV
ASfP มีปลั๊กอิน SDV ที่ติดตั้งใช้งาน APEX ซึ่งมีแพ็กเกจบริการ ของคุณโดยตรงไปยังอุปกรณ์ SDV ที่ทำงานอยู่ ปลั๊กอินจะปิดใช้อยู่โดยค่าเริ่มต้น หากต้องการ ใช้ฟีเจอร์นี้ ให้เปิดใช้ปลั๊กอิน SDV ในการตั้งค่า > ปลั๊กอิน ดูข้อมูลเพิ่มเติม เกี่ยวกับการแพ็กเกจ APEX ได้ที่สร้างและติดตั้งใช้งานแพ็กเกจบริการ
วิธีติดตั้งใช้งานจะขึ้นอยู่กับว่า APEX อยู่ในอุปกรณ์แล้วหรือไม่ ดังนี้
- หากติดตั้ง APEX ไว้แล้ว คุณจะทำการเปลี่ยนแปลงได้โดยตรงจาก ASfP
- หาก APEX เป็นของใหม่ คุณต้องสร้างและเปิดใช้อิมเมจระบบอีกครั้งก่อน หรือใช้อิมเมจระบบที่มีคีย์ที่ใช้ลงนามใน APEX หลังจากนั้น คุณจะติดตั้งใช้งานจาก ASfP ได้
หากต้องการติดตั้งใช้งาน APEX ของชุดบริการ ให้ทำตามขั้นตอนต่อไปนี้
- เริ่มใช้อุปกรณ์ SDV ด้วยปลั๊กอิน Cuttlefish ดูข้อมูลเพิ่มเติมได้ที่ เรียกใช้อุปกรณ์ SDV ใน Cuttlefish
- เปิดไฟล์
apex/Android.bpของแพ็กเกจบริการ แล้วคลิกไอคอนเรียกใช้ในรางน้ำข้างบล็อกapex { - ในเมนูที่เปิดขึ้น ให้เลือกเรียกใช้ "Deploy APEX_NAME" คุณยังสร้าง APEX โดยไม่ต้อง ติดตั้งใช้งานหรือเปลี่ยนการกำหนดค่าการเรียกใช้จากเมนูเดียวกันได้ด้วย
เรียกใช้อุปกรณ์ SDV บน Cuttlefish
ASfP มีปลั๊กอิน Cuttlefish ที่สร้างและเรียกใช้ Cuttlefish ในเครื่อง ปลั๊กอินต้องใช้ตัวจัดสรรโฮสต์ Cuttlefish หากตัวจัด การโฮสต์ไม่พร้อมใช้งาน ASfP จะแสดงวิธีการตั้งค่า
หากต้องการสร้างอุปกรณ์ SDV ให้ทำตามขั้นตอนต่อไปนี้
- เลือกเครื่องมือ > โปรแกรมจัดการอุปกรณ์ คลิก + แล้วเลือกสร้าง อุปกรณ์ Cuttlefish
- หากต้องการสร้างการตั้งค่าแบบหลาย VM ให้เลือกจากการกำหนดค่า Canonical แล้ว สร้างหรือนำเข้าการกำหนดค่าสำหรับการตั้งค่า เช่น SDV Core ที่มี SDV IVI หรือ SDV Media ที่มี SDV IVI สำหรับความปลอดภัยของจอแสดงผล หากต้องการสร้าง VM เดียว ให้เลือกจากการชำระเงินของโครงสร้างแหล่งที่มาของ Android ในเครื่องแทน
หากต้องการดูจอแสดงผล VM ทั้งหมดในหน้าจอเดียวและเข้าถึงตัวเลือกอุปกรณ์เพิ่มเติม ให้ใช้หน้าต่างเครื่องมือ Cuttlefish หากต้องการเปิด ให้เลือกไอคอน ... ในแผงด้านข้าง แล้วเลือก Cuttlefish หรือค้นหา Cuttlefish ในความช่วยเหลือ > ค้นหาการดำเนินการ นอกจากนี้ คุณยังดูจอแสดงผลแต่ละรายการได้ในอุปกรณ์ที่ทำงาน อยู่ เนื่องจาก SDV Core ทำงานโดยไม่มีจอแสดงผล ให้ใช้ Logcat และเทอร์มินัลเพื่อตรวจสอบ
แก้ไขข้อบกพร่องและทดสอบ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขข้อบกพร่องและการทดสอบใน ASfP ได้ที่ แก้ไขข้อบกพร่องของโค้ดแพลตฟอร์มและทดสอบโค้ดแพลตฟอร์ม ดูข้อมูลเพิ่มเติม เกี่ยวกับการตั้งค่า CodeLLDB เพื่อแก้ไขข้อบกพร่องของแพ็กเกจบริการ Rust ได้ที่ การแก้ไขข้อบกพร่องของ Rust
เมื่อแนบดีบักเกอร์กับแพ็กเกจบริการ ให้แนบกับกระบวนการที่โฮสต์แพ็กเกจนั้น ชื่อกระบวนการใช้รูปแบบ <bundle_name>:<instance_name> เช่น
OrchestratorSampleRustServiceBundle:sample-main-no-conditions คำสั่งต่อไปนี้
แสดงรายการกระบวนการที่ตรงกันและรหัสกระบวนการของกระบวนการเหล่านั้น
adb shell ps -A | grep <bundle_name>
ดูข้อมูลเพิ่มเติมเกี่ยวกับเวิร์กโฟลว์การแก้ไขข้อบกพร่องของ SDV เช่น การเชื่อมต่อกับอุปกรณ์หลายเครื่องและการดูบันทึก ได้ที่แก้ไขข้อบกพร่องของ SDV
แก้ไขไฟล์ VSIDL
ASfP มีเซิร์ฟเวอร์ภาษา VSIDL (vsidl-lsp) ดูข้อมูลเพิ่มเติม
เกี่ยวกับวิธีตั้งค่าแคตตาล็อกสำหรับเซิร์ฟเวอร์ภาษาได้ที่
การอัปเดตแคตตาล็อกอัตโนมัติและการผสานรวม LSP เมื่อแคตตาล็อกมีไฟล์ CATALOG_UPDATE โปรแกรมแก้ไขจะแสดงฟีเจอร์ต่อไปนี้สำหรับไฟล์ .vsidl
- การตรวจสอบความถูกต้องแบบเรียลไทม์: เอดิเตอร์จะไฮไลต์คีย์เวิร์ด VSIDL และแสดงข้อผิดพลาดด้านไวยากรณ์ ประเภทที่ยังไม่ได้รับการแก้ไข และข้อผิดพลาดในการตรวจสอบ VSIDLC ในหน้าต่างปัญหา ดูข้อมูลเพิ่มเติมเกี่ยวกับกฎการตรวจสอบและรหัสข้อผิดพลาดได้ที่ข้อกำหนดของภาษา VSIDL
- การเติมข้อความอัตโนมัติและเอกสารประกอบ: คุณสามารถกด Ctrl+Space เพื่อดูคำแนะนำสำหรับ คีย์เวิร์ด ข้อความ บริการ หัวข้อ และช่อง รวมถึงกด Ctrl+Q เพื่อดูความคิดเห็นในเอกสารประกอบ
- การนำทางและการจัดรูปแบบ: คุณสามารถกด Ctrl+B เพื่อไปที่คำจำกัดความของ
.vsidlหรือ.proto, Alt+Shift+F7 เพื่อค้นหาข้อมูลอ้างอิง, Ctrl+F12 เพื่อดูโครงสร้างไฟล์ และ Ctrl+Alt+L เพื่อจัดรูปแบบไฟล์
เพิ่มบริบท SDV สำหรับผู้ช่วย AI
ASfP มี Gemini ใน Android Studio ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ ASfP
ได้ที่ทำความรู้จัก Android Studio สำหรับแพลตฟอร์ม หากต้องการช่วยให้ Gemini หรือผู้ช่วยเขียนโค้ด AI อื่นๆ ทำตามรูปแบบ SDV ให้เพิ่มไฟล์ AGENTS.md ลงในรูทของแคตตาล็อก SDV ดูข้อมูลเพิ่มเติมเกี่ยวกับไฟล์เอเจนต์ได้ที่
ปรับแต่ง Gemini โดยใช้ไฟล์ AGENTS.md
ตัวอย่างต่อไปนี้เป็นจุดเริ่มต้นที่คุณสามารถปรับให้เข้ากับแคตตาล็อกได้
# AAOS SDV service catalog rules
- Implement SDV service bundles in Rust under `services/<BundleName>/src/`.
- Keep `.proto` files limited to Protobuf `message`, `enum`, and `service` definitions. Define service bundles, APEX packaging, VM placement, and SOME/IP mappings in `.vsidl` files.
- Regenerate middleware with `vsidlc` after you change `.vsidl` or `.proto` files, and leave generated files unmodified.
- Use `PascalCase` for service bundle names and lowercase `kebab-case` for topic and channel names.
- Run `vsidlc --explain <CODE>` to look up a VSIDLC error code.