Cuttlefish: ภาพรวมและการกู้คืน

Android 15 แนะนำวิธีถ่ายภาพสแนปชอตและกู้คืนภาพสแนปชอตของอุปกรณ์เสมือนจริง Cuttlefish การจับภาพหน้าจอของอุปกรณ์ Cuttlefish ช่วยให้คุณบันทึกสถานะของอุปกรณ์เป็นภาพบนดิสก์ได้ จากนั้นคุณสามารถกู้คืนสแนปชอตเพื่อนำอุปกรณ์ Cuttlefish กลับไปยังสถานะที่บันทึกไว้ก่อนหน้านี้

คุณสามารถใช้ภาพรวมในเวิร์กโฟลว์อัตโนมัติหรือด้วยตนเองได้ เมื่อทำตามขั้นตอนที่แก้ไขอุปกรณ์ คุณสามารถจับภาพหน้าจอของอุปกรณ์เพื่อให้มั่นใจว่าคุณสามารถกู้คืนอุปกรณ์กลับไปยังสถานะที่ระบุได้ เช่น เมื่อเรียกใช้ชุดทดสอบที่แก้ไขสถานะของอุปกรณ์และอาจทำให้เกิดปัญหาหรือความไม่เสถียรในการทดสอบครั้งถัดไป คุณสามารถจับภาพหน้าจอเพื่อให้กู้คืนอุปกรณ์กลับไปยังสถานะที่บันทึกไว้หลังจากการทดสอบ เพื่อให้การทดสอบครั้งต่อๆ ไปทำงานได้อย่างราบรื่น

อีกตัวอย่างเวิร์กโฟลว์ที่ภาพรวมมีประโยชน์คือเมื่อทดสอบลักษณะการทํางานของแอป เมื่อทดสอบลักษณะการทํางานของแอปตามชุดการดําเนินการ คุณสามารถจับภาพระหว่างการดําเนินการขณะที่แอปทํางานอยู่เพื่อให้คุณกู้คืนเป็นภาพรวมนั้นได้โดยไม่ต้องเริ่มใหม่ตั้งแต่ต้น เช่น หากการเปิดตัวเกมใช้เวลานาน คุณสามารถถ่ายภาพหน้าจอหลังจากที่ไปที่เมนูหลักแล้วเพื่อกู้คืนอุปกรณ์ไปยังสถานะดังกล่าว ซึ่งจะข้ามเวลาในการเปิด

ถ่ายภาพหน้าจอของอุปกรณ์ Cuttlefish

เมื่อถ่ายภาพหน้าจอของอุปกรณ์ คุณต้องระงับอุปกรณ์ Cuttlefish เพื่อให้อุปกรณ์ Cuttlefish อยู่ในสถานะที่เสถียร เมื่ออุปกรณ์ถูกระงับ ระบบจะหยุด vCPU และอุปกรณ์ทั้งหมด และบัฟเฟอร์ทั้งหมดจะส่งสถานะไปยัง VM จากนั้นสแนปชอตจะบันทึกสถานะ vCPU, หน่วยความจำ และสถานะอุปกรณ์ลงในดิสก์ของโฟลเดอร์ปลายทางที่ระบุ

ระบบไม่รองรับ VirtiosFS และต้องปิดใช้เมื่อถ่ายภาพหน้าจอ หากต้องการปิดใช้ VirtioFS ให้ส่งอาร์กิวเมนต์ --enable_virtiofs=false เมื่อเรียกใช้ cvd create หรือ cvd start

ระบบรองรับเฉพาะโหมด GPU ของ SwiftShader (guest_swiftshader) สำหรับสแนปชอต ไม่รองรับโหมดกราฟิกเร่งความเร็วอื่นๆ

ขั้นตอนต่อไปนี้อธิบายกระบวนการเปิดอุปกรณ์ Cuttlefish และถ่ายภาพหน้าจอ

  1. เปิดอุปกรณ์ขณะปิดใช้ VirtioFS (จากนั้นคุณก็ใช้อุปกรณ์ได้)

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. ถ่ายภาพหน้าจอโดยเรียกใช้ cvd snapshot_take พร้อม Flag ต่อไปนี้

    • --force: หากมีโฟลเดอร์อยู่ในเส้นทางสแนปชอตที่ระบุ Flag นี้จะลบโฟลเดอร์ที่มีอยู่และสร้างโฟลเดอร์ใหม่ในเส้นทางสแนปชอตที่มีสแนปชอต

    • --auto_suspend: ระงับอุปกรณ์ก่อนที่จะถ่ายภาพสแนปชอตและเปิดใช้งานอุปกรณ์อีกครั้งหลังจากถ่ายภาพสแนปชอตแล้ว

    • --snapshot_path: เส้นทางที่ระบุซึ่งสร้างโฟลเดอร์ใหม่พร้อมสแนปชอต

    cvd snapshot_take --force --auto_suspend \
    --snapshot_path=PATH

กู้คืนอุปกรณ์ Cuttlefish

เมื่อกู้คืนภาพรวมของอุปกรณ์ Cuttlefish คุณต้องหยุดอินสแตนซ์ Cuttlefish ที่ถ่ายภาพรวมไว้ หากอินสแตนซ์หยุดทำงานอยู่แล้ว ก็ไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติมและสามารถกู้คืนสแนปชอตได้

หากต้องการกู้คืนภาพรวมของอุปกรณ์ Cuttlefish ให้เปิดอุปกรณ์ด้วย cvd create และระบุเส้นทางภาพรวม หากหมายเลขอินสแตนซ์ฐานของอุปกรณ์ Cuttlefish ที่ถ่ายสแนปชอตแตกต่างจากหมายเลขอินสแตนซ์ฐานของอินสแตนซ์ Cuttlefish ปัจจุบัน ให้ส่งหมายเลขอินสแตนซ์ฐานนั้นโดยใช้ Flag --base_instance_num

cvd create --snapshot_path=PATH \
--base_instance_num=ID

ระงับอุปกรณ์ Cuttlefish

คุณสามารถระงับอุปกรณ์ Cuttlefish โดยไม่ต้องถ่ายภาพหน้าจอ (ไม่ต้องใช้พื้นที่ดิสก์ในการบันทึกสถานะ) หากต้องการระงับอุปกรณ์ Cuttlefish ให้เรียกใช้คำสั่งต่อไปนี้

cvd suspend

ใช้งานอุปกรณ์ Cuttlefish ต่อ

หากต้องการทำให้อุปกรณ์ Cuttlefish ที่ถูกระงับกลับมาใช้งานได้ ให้เรียกใช้คำสั่งต่อไปนี้

cvd resume

ตรวจสอบฟีเจอร์สแนปชอต/การกู้คืน

คุณสามารถตรวจสอบความถูกต้องของฟีเจอร์ภาพรวม/การกู้คืนได้โดยทำการทดสอบต่อไปนี้

atest SnapshotTest