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