หน้านี้อธิบายวิธีดาวน์โหลด สร้าง และเรียกใช้ AAOS SDV บน Cuttlefish
เริ่มต้นไคลเอ็นต์ Repo
ตั้งค่าไคลเอ็นต์เพื่อเข้าถึงที่เก็บซอร์สโค้ด Android โดยทำดังนี้
สร้างและไปยังไดเรกทอรีที่ใช้งานอยู่ เช่น
sdvmkdir WORKING_DIRECTORYcd WORKING_DIRECTORYเริ่มต้นไดเรกทอรีการทำงานสำหรับการควบคุมซอร์สโค้ด โดยทำดังนี้
ตัวอย่างนี้ใช้กิ่ง
26Q2-fs-releaseRELEASE=26Q2-fs-releaserepo init -u https://partner-android.googlesource.com/platform/vendor/pdk/generic/fs/manifest/ -b $RELEASEต้องระบุตัวเลือก
-uและระบุไฟล์ manifest ซึ่งเป็นไฟล์ XML ที่ระบุตำแหน่งของโปรเจ็กต์ Git ต่างๆ ในซอร์สโค้ดของ Android ภายในไดเรกทอรีการทำงาน ในตัวอย่างนี้ ไม่ได้ระบุชื่อไฟล์ Manifest คำสั่งจึงใช้ไฟล์ Manifest เริ่มต้น (default.xml)ตัวเลือก
-bจะระบุสาขาที่คุณกำลังเริ่มต้นเอาต์พุตควรมีข้อความต่อไปนี้
repo has been initialized in path_to_working_directory
ดาวน์โหลดแหล่งที่มาของ SDV ใน AAOS
เรียกใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลดโครงสร้างแหล่งที่มาของ Android ไปยังไดเรกทอรีการทำงาน
repo sync -c -j8อาร์กิวเมนต์ -c จะสั่งให้ Repo ดึงสาขาของไฟล์ Manifest ปัจจุบันจากเซิร์ฟเวอร์ คำสั่ง -j8 จะแยกการซิงค์ออกเป็นหลายเธรดเพื่อให้เสร็จสมบูรณ์ได้เร็วขึ้น
ตั้งค่าสภาพแวดล้อมของบิลด์
จากภายในไดเรกทอรีการทำงาน ให้เรียกใช้สคริปต์ envsetup.sh เพื่อตั้งค่า
สภาพแวดล้อมของบิลด์
source build/envsetup.shสคริปต์นี้จะนำเข้าคำสั่งหลายอย่างที่ช่วยให้คุณทำงานกับซอร์สโค้ดของ Android ได้
รวมถึงคำสั่งที่ใช้ในหน้านี้ หากต้องการดูแหล่งที่มาของ
สคริปต์ ให้ดูที่ platform/build/envsetup.sh หากต้องการดูความช่วยเหลือในตัว ให้พิมพ์ hmm
เลือกเป้าหมาย
ก่อนสร้าง SDV ให้ระบุเป้าหมายที่จะสร้าง หากต้องการระบุเป้าหมายที่จะ
สร้าง ให้ใช้คําสั่ง lunch ตามด้วยสตริงที่แสดงถึงเป้าหมาย
ที่คุณกําลังสร้าง เช่น ใช้คำสั่งนี้เพื่อสร้างเป้าหมายสำหรับ
โปรแกรมจำลอง Cuttlefish:
lunch sdv_core_cf-trunk_staging-userdebugคำสั่งนี้จะเลือกผลิตภัณฑ์ การกำหนดค่ารุ่น และตัวแปรที่จะสร้าง และจัดเก็บตัวเลือกไว้ในสภาพแวดล้อม
lunchเป้าหมายสำหรับ SDV จะอยู่ในโปรเจ็กต์ Git แยกต่างหากซึ่งอยู่ในไดเรกทอรี
devices/google/sdv ดูคำอธิบายโดยละเอียดของเป้าหมายที่พร้อมใช้งาน
ได้ที่ device/google/sdv/README.md เป้าหมายหลักของ Cuttlefish (cf) มีดังนี้
sdv_core_cf-trunk_staging-userdebug- สร้างอิมเมจของ AAOS SDV Core (sdv_core) ที่ทำงานบน Cuttlefish (cf)sdv_media_cf-trunk_staging-userdebug- สร้างอิมเมจของ AAOS SDV Core ด้วย API สื่อเสมือนจริง virtIO (sdv_media)sdv_media_har_cf-trunk_staging-userdebug- สร้างอิมเมจที่ขยายเป้าหมายสื่อ SDV ของ AAOS (sdv_media_cf)lunchให้มีตัวแสดงผลที่มีความพร้อมใช้งานสูง (HAR) HAR จะทำงานโดยอัตโนมัติเมื่อบูตsdv_ivi_cf-trunk_staging-userdebug- สร้างอิมเมจของระบบสาระบันเทิงในรถยนต์ (IVI) ที่มีเกตเวย์ SDV และแอปตัวอย่าง Javasdv_ivi_cf_ds-trunk_staging-userdebug- สร้างอิมเมจที่ขยายเป้าหมาย AAOS SDV IVI (sdv_ivi_cf) และรวมการใช้งาน DriverUI ของ Display Safety และแผงหน้าปัด
สร้าง SDV ของ AAOS
เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างเป้าหมาย การสร้างครั้งแรกจะใช้เวลา 30-60 นาที ทั้งนี้ขึ้นอยู่กับข้อกำหนด ของเวิร์กสเตชัน การสร้างครั้งต่อๆ ไปจะใช้เวลาน้อยลงอย่างมาก
mเอาต์พุตของบิลด์จะปรากฏใน $OUT_DIR หากคุณสร้างเป้าหมายที่แตกต่างกัน แต่ละเป้าหมายที่สร้างจะปรากฏใน
$OUT_DIR
ทดสอบบิลด์โดยใช้ Cuttlefish
หลังจากสร้าง AAOS SDV แล้ว ให้ทดสอบบิลด์โดยใช้ Cuttlefish
วิธีเริ่ม Cuttlefish ด้วยบิลด์ของคุณ
cvd createCuttlefish จะทํางานโดยใช้เป้าหมายที่สร้างขึ้น (
sdv_core_cf-trunk_staging-userdebug) หลังจากที่ Cuttlefish บูตแล้ว ข้อความนี้จะปรากฏขึ้นVIRTUAL_DEVICE_BOOT_COMPLETED Virtual device booted successfullyเรียกใช้
adbเพื่อเชื่อมต่อกับ Cuttlefishเรียกใช้
adb devicesเพื่อยืนยันว่าบิลด์ของคุณทำงานอยู่ ระบบจะแสดงผลลัพธ์ที่คล้ายกับ รายการนี้List of devices attached 0.0.0.0:6520 deviceเรียกใช้
cvd stopเพื่อปิดอุปกรณ์
หากต้องการเรียกใช้ Cuttlefish หลายอินสแตนซ์ด้วยบิลด์ที่แตกต่างกัน โปรดดู Cuttlefish: multi-tenancy
แก้ปัญหา
ส่วนนี้จะอธิบายวิธีแก้ปัญหาข้อผิดพลาดที่อาจเกิดขึ้นระหว่างการดาวน์โหลด การสร้าง หรือการเรียกใช้ AAOS SDV
ข้อผิดพลาด RBE
หากพบข้อผิดพลาดในการดำเนินการสร้างจากระยะไกล (RBE) ให้นำคำจำกัดความของ
USE_RBE และ ENABLE_RBE_BOOTSTRAP ออกจาก .bashrc หรือ .zshrc
cvd: เครื่องนี้ไม่รองรับ crosvm ตัวจัดการ VM
หาก Cuttlefish รายงานว่าเครื่องของคุณไม่รองรับ VM Manager crosvm ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้ง Cuttlefish
sudo apt install cuttlefish-commonไม่พบ cvd
หากได้รับข้อผิดพลาด cvd not found ให้ทำดังนี้
- ตั้งค่าบิลด์อีกครั้ง
- ดำเนินการต่อโดยเลือกเป้าหมาย
ลูปข้อขัดข้องของ Cuttlefish
หาก Cuttlefish เข้าสู่ลูปข้อขัดข้อง ให้ทำดังนี้
- หากต้องการหยุดอินสแตนซ์ Cuttlefish ทั้งหมด ให้เรียกใช้
cvd stop - ใช้ Cuttlefish เพื่อทดสอบบิลด์อีกครั้ง