يقدّم Android 15 طريقة لأخذ لقطة واستعادتها لجهاز Cuttlefish افتراضي. تتيح لك لقطة جهاز Cuttlefish حفظ حالة الجهاز في صورة على القرص. يمكنك بعد ذلك استعادة اللقطة لعرض جهاز Cuttlefish في الحالة المحفوظة سابقًا.
يمكنك استخدام اللقطات في مختلف مهام سير العمل الآلية أو اليدوية. عند إجراء عملية تعدّل الجهاز، يمكنك أخذ لقطة للجهاز لضمان إمكانية استعادته إلى حالة محدّدة. على سبيل المثال، عند تشغيل مجموعات الاختبار التي تعدّل حالة الجهاز ويمكن أن تؤدي إلى حدوث مشاكل أو حالات عدم استقرار في الاختبارات التالية، يمكنك أخذ لقطة حتى تتمكّن من استعادة الجهاز إلى حالة محفوظة بعد إجراء الاختبار، ما يضمن تشغيل الاختبارات اللاحقة بشكل سليم.
من الأمثلة الأخرى على مهام سير العمل التي تكون فيها اللقطات مفيدة عند اختبار سلوك أحد التطبيقات. عند اختبار سلوك أحد التطبيقات استنادًا إلى مجموعة من الإجراءات، يمكنك أخذ لقطة بين الإجراءات أثناء تشغيل التطبيق للسماح لك باستعادة تلك اللقطة بدون الحاجة إلى إعادة التشغيل من البداية. على سبيل المثال، إذا كان تشغيل إحدى الألعاب يستغرق وقتًا طويلاً، يمكنك أخذ لقطة بعد الوصول إلى القائمة الرئيسية حتى تتمكّن من استعادة الجهاز إلى تلك الحالة، مع تخطّي وقت التشغيل.
أخذ لقطة لجهاز Cuttlefish
عند أخذ لقطة لجهاز، يجب تعليق جهاز Cuttlefish للتأكّد من أنّه في حالة مستقرة. عند تعليق الجهاز، يتم إيقاف جميع وحدات المعالجة المركزية الافتراضية والأجهزة، وتدفع جميع المخازن المؤقتة حالتها إلى الجهاز الافتراضي. بعد ذلك، تحفظ اللقطة حالة وحدة المعالجة المركزية الافتراضية والذاكرة وحالة الجهاز على القرص في مجلد الوجهة المحدّد.
لا تتوافق اللقطات مع VirtiosFS ويجب إيقافها عند أخذ لقطة. لإيقاف VirtioFS، مرِّر الوسيطة --enable_virtiofs=false عند تشغيل cvd create أو cvd start.
لا تتوافق اللقطات إلا مع وضع وحدة معالجة الرسومات SwiftShader (guest_swiftshader). لا تتوافق اللقطات مع أوضاع الرسومات المُسرَّعة الأخرى.
توضّح الخطوات التالية عملية تشغيل جهاز Cuttlefish وأخذ لقطة له.
شغِّل جهازًا مع إيقاف VirtioFS. (يمكنك بعد ذلك استخدام الجهاز).
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshaderخذ لقطة من خلال تشغيل
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