Cuttlefish הוא מכשיר Android וירטואלי שניתן להגדרה, שאפשר להריץ גם מרחוק (באמצעות חבילות שירות בענן של צד שלישי כמו Google Cloud Engine) וגם באופן מקומי (במכונות Linux x86 ו-ARM64).
יעדי דיונון
- מאפשר למפתחי הפלטפורמה והאפליקציה להפסיק להסתמך על חומרה פיזית כדי לפתח ולאמת שינויים בקוד.
- לשחזר את ההתנהגות שמבוססת על המסגרת של מכשיר אמיתי, תוך התמקדות בנאמנות גבוהה על ידי שמירה על התאמה הדוקה למסגרת הליבה.
- תמיכה בכל רמות ה-API אחרי 28.
- לספק רמה עקבית של פונקציונליות בכל רמות ה-API, בהתאם להתנהגות בחומרה הפיזית.
מפעילים את התכונה 'שינוי קנה מידה':
- היכולת להפעיל כמה מכשירים במקביל.
- הפעלת בדיקות בו-זמנית עם רמת נאמנות גבוהה בעלות נמוכה יותר.
לספק מכשיר שניתן להגדרה עם אפשרות לשנות את גורם הצורה, זיכרון RAM, מעבדים וכו'.
השוואה בין Cuttlefish למכשירים אחרים
Cuttlefish ו-Android Emulator
יש הרבה דמיון ל-Android Emulator, אבל Cuttlefish מבטיח נאמנות מלאה ל-Android framework (בין שמדובר ב-AOSP טהור ובין שמדובר בהטמעה מותאמת אישית בעץ שלכם). במצבים אמיתיים, המשמעות היא שמערכת Cuttlefish אמורה להגיב לאינטראקציות שלכם ברמת מערכת ההפעלה, בדיוק כמו יעד טלפון פיזי שנוצר מאותו מקור של מערכת Android OS מותאמת אישית או טהורה.
Android Emulator נבנה לפי תרחיש לדוגמה של פיתוח אפליקציות קל, והוא מכיל הרבה פונקציות 'וו-הוק' כדי להתאים לתרחישי לדוגמה של מפתחי אפליקציות ל-Android. יכול להיות שתתקלו בבעיות אם תרצו ליצור אמולטור עם מסגרת Android בהתאמה אישית. אם אתם צריכים מכשיר וירטואלי שמייצג את הקוד של הפלטפורמה או המסגרת בהתאמה אישית, או את גרסת Android העדכנית ביותר, Cuttlefish היא אפשרות וירטואלית אידיאלית. זהו המכשיר הקנוני לייצוג המצב הנוכחי של פיתוח AOSP.
דיונון ומכשיר פיזי
ההבדלים העיקריים בין מכשיר וירטואלי של Cuttlefish לבין המכשיר הפיזי הם ברמת שכבת ההפשטה של החומרה (HAL), וגם בתוכנה שמקיימת אינטראקציה עם חומרה מותאמת אישית. מלבד הטמעות ספציפיות לחומרה, ההתנהגות הפונקציונלית של Cuttlefish אמורה להיות זהה לזו של מכשיר פיזי.
איך Cuttlefish יכול לעזור?
אפשר ליצור אינטראקציה עם Cuttlefish כמו עם כל מכשיר Android אחר שעשוי לשמש לניפוי באגים. הוא יירשם כמכשיר רגיל דרך adb, ותוכלו לקיים איתו אינטראקציה כמו עם מכשיר פיזי באמצעות Remote Desktop. תרחישים לדוגמה הם רחבים, והם יכולים לכלול בדיקת אפליקציות, בדיקת גרסאות build בהתאמה אישית של מערכות ועוד.
Cuttlefish שואף לשמירה על נאמנות מלאה למסגרת, ולכן אפשר להשתמש בו לבדיקות פונקציונליות של המסגרת או האפליקציות, אם אין יחסי תלות בחומרה פיזית שאי אפשר לחקות.
איך משתמשים ב-Cuttlefish לבדיקה היום?
דוגמאות לשימושים נפוצים של Cuttlefish לבדיקה:
- CTS
- תאימות של המסגרת
- בדיקות אינטגרציה רציפה
- חבילות בדיקות בהתאמה אישית
האם אפשר לארח את Cuttlefish בענן?
כן, ב-Cuttlefish יש תמיכה במקור ב-Google Cloud, ומתוכננת תמיכה בפלטפורמות ענן אחרות.
שנתחיל?
להוראות ליצירת מכונה של Cuttlefish שמבוססת על AOSP, ראו שימוש ב-Cuttlefish.