ב-Android 15 אנחנו מדגימים איך לצלם תמונת מצב ולשחזר תמונת מצב של מכשיר וירטואלי של דיונון. צילום קובץ snapshot של מכשיר Cuttlefish מאפשר לשמור את המצב של המכשיר בתמונה בדיסק. לאחר מכן תוכלו לשחזר את קובץ snapshot כדי להחזיר מכשיר Cuttlefish למצב שנשמר קודם.
אפשר להשתמש בתמונות מצב שונות בתהליכי עבודה אוטומטיים או ידניים. כשמבצעים תהליך שמשנה את המכשיר, אפשר לצלם תמונת מצב של המכשיר כדי להבטיח שאפשר יהיה לשחזר אותו למצב ספציפי. לדוגמה, כשמריצים חבילות בדיקה שמשנות את מצב המכשיר ועלולות לגרום לבעיות או לאי-יציבות בבדיקות הבאות, אפשר לצלם קובץ snapshot כדי לשחזר את המכשיר למצב שמור אחרי הבדיקה, וכך להבטיח שהבדיקות הבאות ירוצו בצורה תקינה.
דוגמה נוספת לתהליך עבודה שבו קובצי snapshot שימושיים היא כשבודקים את ההתנהגות של אפליקציה. כשבודקים את ההתנהגות של אפליקציה על סמך קבוצה של פעולות, אפשר לצלם תמונת מצב בין הפעולות בזמן שהאפליקציה פועלת, כדי לאפשר שחזור לתמונת המצב בלי להפעיל מחדש מההתחלה. לדוגמה, אם זמן ההפעלה של משחק ארוך, תוכלו לצלם קובץ snapshot אחרי שמגיעים לתפריט הראשי כדי לשחזר את המכשיר למצב הזה ולדלג על זמן ההפעלה.
צילום תמונת מצב של מכשיר Cuttlefish
כשמצלמים קובץ snapshot של מכשיר, צריך להשעות את מכשיר Cuttlefish כדי לוודא שהוא נמצא במצב יציב. כשהמכשיר מושעה, כל המעבדים הווירטואליים והמכשירים מופסקים, וכל המאגרים מעבירים את המצב שלהם למכונה הווירטואלית. לאחר מכן, קובץ ה-snapshot שומר את המצב של ה-vCPU, הזיכרון ומצב המכשיר בדיסק בתיקיית יעד שצוינה.
אין תמיכה ב-VirtiosFS. צריך להשבית אותו כשמצלמים תמונת מצב. כדי להשבית את VirtioFS, מעבירים את הארגומנט --enable_virtiofs=false
כשמריצים את cvd create
או cvd start
.
בתמונות המצבה יש תמיכה רק במצב ה-GPU של SwiftShader (guest_swiftshader
). אין תמיכה במצבי גרפיקה אחרים עם האצה.
בשלבים הבאים מוסבר איך מפעילים מכשיר Cuttlefish ומצלמים קובץ snapshot.
מריצים מכשיר תוך השבתת VirtioFS. (לאחר מכן תוכלו להשתמש במכשיר).
cvd create --enable_virtiofs=false --gpu_mode=guest_swiftshader
כדי לצלם תמונת מצב, מריצים את
cvd snapshot_take
עם הדגלים הבאים:--force
: אם קיימת תיקייה בנתיב קובץ ה-snapshot, הדגל הזה מבטיח שהתיקייה הקיימת תימחק ותיקייה חדשה תיווצר בנתיב קובץ ה-snapshot שמכיל את קובץ ה-snapshot.--auto_suspend
: השהיה של המכשיר לפני צילום קובץ ה-snapshot והפעלה מחדש של המכשיר אחרי צילום קובץ ה-snapshot.--snapshot_path
: הנתיב שצוין שבו נוצרת תיקייה חדשה עם קובץ ה-snapshot.
cvd snapshot_take --force --auto_suspend \ --snapshot_path=PATH
שחזור מכשיר דיונון
כשמשחזרים קובץ snapshot של מכשיר Cuttlefish, צריך לעצור את המכונה של Cuttlefish שבה נוצר קובץ ה-snapshot. אם המכונה כבר הופסקה, אין צורך לבצע פעולה נוספת וניתן לשחזר את קובץ ה-snapshot.
כדי לשחזר קובץ snapshot של מכשיר Cuttlefish, מפעילים מכשיר עם cvd create
וכוללים את נתיב קובץ ה-snapshot. אם מספר המכונה הבסיסית של מכשיר Cuttlefish שבו צולמה קובץ ה-snapshot שונה ממספר המכונה הבסיסית של מכונה Cuttlefish הנוכחית, מעבירים את מספר המכונה הבסיסית באמצעות הדגל --base_instance_num
.
cvd create --snapshot_path=PATH \
--base_instance_num=ID
השעיית מכשיר Cuttlefish
אפשר להשעות מכשיר Cuttlefish בלי לצלם קובץ snapshot (לא נעשה שימוש בנפח דיסק לשמירת המצב). כדי להשעות מכשיר דיונון, מריצים את:
cvd suspend
המשך שימוש במכשיר דיונון
כדי להמשיך את השימוש במכשיר Cuttlefish מושעה, מריצים את הפקודה:
cvd resume
אימות התכונה 'תמונת מצב/שחזור'
כדי לאמת את התכונה Snapshot/Restore, מריצים את הבדיקה הבאה:
atest SnapshotTest