หมึกกระดอง: ถ่ายสแนปชอตและคืนค่า

Android 15 แนะนำวิธีถ่ายภาพหน้าจอและกู้คืนภาพหน้าจอของอุปกรณ์เสมือนจริง 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 ที่มีแฟล็กต่อไปนี้

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

    • --auto_suspend: ระงับอุปกรณ์ก่อนจะทำสแนปชอต และทำให้อุปกรณ์กลับมาทำงานอีกครั้งหลังจากบันทึกสแนปชอตแล้ว

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

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

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

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

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

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

ระงับอุปกรณ์หมึกกระดอง

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

cvd suspend

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

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

cvd resume

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

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

atest SnapshotTest