Cuttlefish: Snapshot and restore

يعرض نظام التشغيل Android 15 كيفية أخذ لقطة شاشة و استعادتها لجهاز افتراضي من Cuttlefish. يتيح لك أخذ لقطة شاشة لجهاز Cuttlefish حفظ حالة الجهاز في صورة على القرص. يمكنك بعد ذلك استعادة اللقطة لإعادة جهاز Cuttlefish إلى الحالة المحفوظة سابقًا.

يمكنك استخدام اللقطات في عمليات سير العمل المختلفة المبرمَجة أو اليدوية. عند تنفيذ إجراء يؤدي إلى تعديل الجهاز، يمكنك أخذ لقطة شاشة له لضمان إمكانية استعادة الجهاز إلى حالة محدّدة. على سبيل المثال، عند تشغيل مجموعات اختبارات تعدّل حالة الجهاز ويمكن أن تتسبّب في حدوث مشاكل أو عدم استقرار في الاختبارات التالية، يمكنك أخذ لقطة شاشة حتى تتمكّن من استعادة الجهاز إلى حالة محفوظة بعد إجراء الاختبار، ما يضمن إجراء الاختبارات اللاحقة بسلاسة.

من الأمثلة الأخرى على سير العمل الذي تكون فيه اللقطات مفيدة هو اختبار سلوك التطبيق. عند اختبار سلوك التطبيق استنادًا إلى مجموعة من الإجراءات، يمكنك أخذ لقطة بين الإجراءات أثناء تشغيل التطبيق للسماح لك باستعادة هذه اللقطة بدون الحاجة إلى إعادة البدء من البداية. على سبيل المثال، إذا كان تشغيل لعبة يستغرق وقتًا طويلاً، يمكنك أخذ لقطة شاشة بعد الوصول إلى القائمة الرئيسية حتى تتمكّن من استعادة الجهاز إلى تلك الحالة، وتجاوز وقت التشغيل.

التقاط لقطة لجهاز Cuttlefish

عند أخذ لقطة شاشة لجهاز، يجب تعليق جهاز Cuttlefish للتأكّد من أنّ جهاز Cuttlefish في حالة ثابتة. عند تعليق الجهاز، يتم إيقاف جميع وحدات المعالجة المركزية الافتراضية والأجهزة، وتُرسِل جميع المخازن المؤقتة حالتها إلى الجهاز الظاهري. بعد ذلك، تحفظ اللقطة حالة وحدة المعالجة المركزية الافتراضية والذاكرة وحالة الجهاز على القرص في مجلد وجهة محدّد.

لا يتوافق VirtiosFS مع هذه العملية ويجب إيقافه عند أخذ لقطة خاطفة. لإيقاف VirtioFS، عليك تمرير الوسيطة --enable_virtiofs=false عند تشغيل cvd create أو cvd start.

لا يتوفّر سوى وضع وحدة معالجة الرسومات SwiftShader (guest_swiftshader) لالتقاط لقطات الشاشة. وأوضاع الرسومات المحسّنة غير متوافقة.

توضِّح الخطوات التالية عملية تشغيل جهاز Cuttlefish وأخذ لقطة شاشة.

  1. شغِّل جهازًا مع إيقاف VirtioFS. (يمكنك بعد ذلك استخدام الجهاز).

    cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
  2. يمكنك أخذ لقطة من خلال تشغيل cvd snapshot_take مع العلامات التالية:

    • --force: إذا كان هناك مجلد في مسار اللقطة المحدّد، تضمن هذه العلامة أن يتم حذف المجلد الحالي وإنشاء مجلد جديد في مسار اللقطة الذي يحتوي على اللقطة.

    • --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 بدون أخذ لقطة (لا يتم استخدام مساحة القرص لحفظ الحالة). لتعليق جهاز Cuttlefish، شغِّل:

cvd suspend

استئناف استخدام جهاز Cuttlefish

لاستئناف عمل جهاز Cuttlefish معلّق، يمكنك تنفيذ ما يلي:

cvd resume

التحقّق من صحة ميزة "لقطة احتياطية/استعادة"

يمكن التحقّق من ميزة "التقاط لقطة احتياطية/استعادتها" من خلال إجراء الاختبار التالي:

atest SnapshotTest