Android 15 แนะนำวิธีถ่ายภาพหน้าจอและกู้คืนภาพหน้าจอของอุปกรณ์เสมือนจริง Cuttlefish การบันทึกสแนปชอตของอุปกรณ์หมึกกระดองจะช่วยให้คุณบันทึกสถานะของอุปกรณ์ไว้ในอิมเมจบนดิสก์ได้ จากนั้นคุณจะคืนค่าสแนปชอตได้เพื่อทำให้อุปกรณ์ Cuttlefish เป็นสถานะที่บันทึกไว้ก่อนหน้านี้ได้
คุณสามารถใช้สแนปชอตในเวิร์กโฟลว์อัตโนมัติหรือด้วยตนเองที่หลากหลาย เมื่อทำตามขั้นตอนที่มีการแก้ไขอุปกรณ์แล้ว คุณจะจับภาพหน้าจออุปกรณ์ได้เพื่อให้แน่ใจว่าจะคืนค่าอุปกรณ์กลับสู่สถานะที่ระบุได้ เช่น เมื่อเรียกใช้ชุดทดสอบที่แก้ไขสถานะของอุปกรณ์และอาจทำให้เกิดปัญหาหรือความไม่เสถียรในการทดสอบครั้งถัดไป คุณสามารถจับภาพหน้าจอเพื่อให้คืนค่าอุปกรณ์กลับไปยังสถานะที่บันทึกไว้หลังจากการทดสอบ เพื่อให้การทดสอบครั้งต่อๆ ไปทำงานได้อย่างราบรื่น
อีกตัวอย่างหนึ่งของเวิร์กโฟลว์ที่สแนปชอตมีประโยชน์คือการทดสอบลักษณะการทำงานของแอป เมื่อทดสอบลักษณะการทำงานของแอปตามชุดการดำเนินการ คุณจะบันทึกสแนปชอตระหว่างการทำงานต่างๆ ระหว่างที่แอปทำงานอยู่ได้ เพื่อให้คุณคืนค่าเป็นสแนปชอตดังกล่าวได้โดยไม่ต้องรีสตาร์ทตั้งแต่เริ่มต้น เช่น หากการเปิดตัวเกมใช้เวลานานขึ้น คุณสามารถจับภาพหน้าจอหลังจากเข้าถึงเมนูหลักเพื่อให้คืนค่าอุปกรณ์เป็นสถานะนั้นได้โดยไม่ต้องรอเวลาเรียกใช้
ถ่ายภาพหน้าจอของอุปกรณ์ Cuttlefish
เมื่อถ่ายภาพอุปกรณ์ ต้องระงับอุปกรณ์ Cuttlefish เพื่อให้แน่ใจว่าอุปกรณ์ Cuttlefish อยู่ในสถานะเสถียรแล้ว เมื่ออุปกรณ์ถูกระงับ ระบบจะหยุด vCPU และอุปกรณ์ทั้งหมด และบัฟเฟอร์ทั้งหมดจะส่งสถานะไปยัง VM จากนั้นสแนปชอตจะบันทึกสถานะ vCPU, หน่วยความจำ และสถานะอุปกรณ์ลงในดิสก์ของโฟลเดอร์ปลายทางที่ระบุ
ระบบไม่รองรับ VirtiosFS และต้องปิดใช้เมื่อถ่ายภาพหน้าจอ หากต้องการปิดใช้ VirtioFS ให้ส่งอาร์กิวเมนต์ --enable_virtiofs=false
เมื่อเรียกใช้ cvd create
หรือ cvd start
รองรับเฉพาะโหมด GPU SwiftShader (guest_swiftshader
) สำหรับสแนปชอต ทั้งนี้ระบบไม่รองรับโหมดกราฟิกแบบเร่งอื่นๆ
ขั้นตอนต่อไปนี้อธิบายกระบวนการเปิดอุปกรณ์ Cuttlefish และถ่ายภาพหน้าจอ
เปิดอุปกรณ์ขณะปิดใช้ VirtioFS (จากนั้นคุณจะใช้อุปกรณ์ได้)
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
สร้างสแนปชอตโดยเรียกใช้
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