הרצה במכשיר של Developer Device Platform לקובצי הפעלה של Android

במדריך הזה מוסבר איך להריץ קובץ הפעלה עצמאי של Android באמצעות ה-CLI של gcloud beta device-run ולמצוא את התוצאות במסוף Google Cloud . ההנחה היא שיש לכם חשבון ופרויקט ב- Google Cloud .

אם אתם עוברים מ-Firebase Test Lab ל-Developer Device Platform, כדאי לעיין במדריך להעברת נתונים, במדריך לתרגום פקודות ודגלים ובמיומנות ההעברה לסוכני AI.

כדי להשתמש ב-Google Cloud CLI, תצטרכו לספק את מזהה הפרויקט ב- Google Cloud . במאמר gcloud beta device-run מופיע סיכום של הפקודות.

לפני שמתחילים

השלבים האלה מניחים שכבר:

  1. יצרתם פרויקט ב- Google Cloud .
  2. מגדירים את Developer Device Platform לפי המדריך למתחילים.
  3. מאומת באמצעות gcloud בטרמינל.
  4. קראתם את הסקירה הכללית של "הרצה במכשיר".
  5. הכנתם קובץ הפעלה עצמאי ל-Android (כמו קובץ בינארי מקומפל של C++‎, כלי להרצת השוואת ביצועים או סקריפט מעטפת).

שלב 1. הגדרת ההרצה של קובץ ההפעלה

אפשרויות לקובצי הפעלה של Android

  • כמה מכשירים: כדי להריץ את אותו קובץ הפעלה בכמה מכשירים, צריך לציין את הדגל --device עם כמה מזהי מכשירים שמופרדים בפסיקים, כמו --device shiba-34,tokay-36, או עם כמה דגלים של --device, כשכל אחד מהם מציין מזהה מכשיר נפרד (לדוגמה, --device shiba-34 --device tokay-36).
  • העברת קבצים למכשיר: העברת קבצים נוספים (כמו משקלים של מודל ML, קלט לבדיקה או ספריות משותפות של .so) למכשיר לפני ההרצה באמצעות --other-files-to-push=SOURCE=DEST,.... ‫SOURCE תומך גם בנתיבים מקומיים וגם בנתיבים של Cloud Storage (gs://...), ו-DEST הוא נתיב היעד במכשיר.
  • שליפת קבצים מהמכשיר: שליפת קבצים או ספריות שנוצרו מהמכשיר אחרי שההרצה מסתיימת באמצעות --paths-to-pull=DEVICE_PATH,....
  • קטגוריה מותאמת אישית של Cloud Storage: מציינים שם של קטגוריה קיימת של Cloud Storage (בלי סכימה או נתיב של gs://) באמצעות --bucket-name=. אם לא מציינים קטגוריה, Google Cloud CLI משתמש בקטגוריית ברירת מחדל בשם PROJECT_ID-devicerun או יוצר אותה.
  • ניסיונות חוזרים של בדיקות לא יציבות (flaky tests): הגדירו את מספר הניסיונות המקסימלי לכל משימה או פיצול כדי לטפל בחוסר היציבות: --flaky-test-attempts=3 (ברירת המחדל היא ניסיון אחד (1)).
  • סביבת המכשיר ואבחון: הגדרת כיוון המכשיר (--orientation=portrait או landscape), הלוקאל (--locale=en-US), מיקום GPS מדומה (--coordinates=LATITUDE,LONGITUDE), הקלטת וידאו של המסך (--video=always או on-failure), איסוף dumpsys (--dumpsys=always או on-failure) או איסוף bugreport (--bugreport=always או on-failure).
  • ‫Labels: צירוף תוויות מפתח/ערך שהוגדרו על ידי המשתמש לסשן באמצעות --labels=KEY=VALUE,....
  • ארגומנטים של קובץ ההפעלה: מעבירים ארגומנטים של שורת הפקודה לקובץ ההפעלה באמצעות --executable-args=ARG,... כרשימה מופרדת בפסיקים או על ידי חזרה על הדגל. כל רכיב הופך לארגומנט אחד, לכן צריך לשכתב שורות פקודה שמופרדות ברווחים לצורה שמופרדת בפסיקים (לדוגמה, --executable-args="--input=a.file,--threads=4"). כדי להעביר ארגומנט שמכיל פסיק, צריך להוסיף את הקידומת ^SEP^ לערך כדי לציין מפריד אחר (לדוגמה, --executable-args="^;^--shape=1,224,224,3;--threads=4").
  • משתני סביבה: הגדרת משתני סביבה לתהליך ההפעלה במכשיר באמצעות --executable-env-vars=KEY=VALUE,... (לדוגמה, --executable-env-vars=LD_LIBRARY_PATH=/data/local/tmp/lib).
  • זמן קצוב לתפוגה של קובץ ההפעלה: מגבילים את משך ההפעלה של קובץ ההפעלה: --executable-timeout=10m (הטווח החוקי הוא 1m עד 3h, וברירת המחדל היא 5m, לא כולל הכנת המכשיר וזמן הניקוי).

הרצות סינכרוניות ואסינכרוניות

כברירת מחדל, הפקודה submit היא חוסמת (סינכרונית). הוא ימתין עד שהקובץ להפעלה יסיים לפעול וידפיס טבלת סיכום של התוצאות.

כדי לשלוח את הסשן ולחזור מיד אחרי העלאת הקבצים ל-Cloud Storage, מוסיפים את הדגל --async:

gcloud beta device-run sessions submit android-executable \
  --device shiba-35 \
  --executable ./MY_EXECUTABLE \
  --async

הפעולה הזו מחזירה מזהה סשן באופן מיידי. אפשר להמתין לסיום הפעולה באמצעות הפקודה sessions wait:

gcloud beta device-run sessions wait SESSION_ID

הפקודה תחסום עד שהמשימה תושלם.

מספר מכשירים

כדי להריץ את אותו קובץ בכמה מכשירים, צריך לציין את הדגל --device עם כמה מזהי מכשירים שמופרדים בפסיקים, או עם כמה דגלי --device, כשכל אחד מהם מציין מזהה מכשיר נפרד.

gcloud beta device-run sessions submit android-executable \
  --device shiba-34,tokay-36 \
  --executable ./MY_EXECUTABLE

או:

gcloud beta device-run sessions submit android-executable \
  --device shiba-34 \
  --device tokay-36 \
  --executable ./MY_EXECUTABLE

זמן קצוב לתפוגה של קובץ הפעלה

הגבלת משך הזמן של הרצת קובץ ההפעלה:

gcloud beta device-run sessions submit android-executable \
  --device shiba-35 \
  --executable ./MY_EXECUTABLE \
  --executable-timeout=10m

הטווח התקין הוא 1m עד 3h להרצות, וברירת המחדל היא 5m.

שלב 2. בחירת מכשירים

באמצעות ה-CLI של device-run, אפשר להריץ קובצי הפעלה של Android במכשירים פיזיים ומכשירים וירטואליים זמינים. כדי לראות את הרשימה המלאה של המכשירים הזמינים, אפשר להיכנס לקטלוג המכשירים האינטראקטיבי או להריץ את הפקודה:

gcloud beta device-run devices list

פלט לדוגמה:

ID        MAKE    NAME     MODEL FORM      OS_VERSION CAPACITY  AVAILABILITY  PRODUCTS
tegu-35   Google  Pixel 9a tegu  PHYSICAL  35         MEDIUM    LOW           Automation, Streaming
tokay-34  Google  Pixel 9  tokay PHYSICAL  34         HIGH      HIGH          Automation, Streaming

בקטלוג המכשירים מוסבר איך לסנן את הרשימה הזו. כדי להריץ את המשימה במכשיר ספציפי, משתמשים במזהה המתאים (לדוגמה, tegu-35) בפקודת השליחה.

שלב 3. מריצים את קובץ ההפעלה

לשלוח קובץ הפעלה עצמאי ל-Android.

כדי להריץ קובץ הפעלה עצמאי (כמו קובץ בינארי מקומפל של C++‎, כלי להרצת מבחני ביצועים של למידת מכונה במכשיר כמו LiteRT או סקריפט מעטפת) ישירות במכשיר Android בלי לארוז אותו ב-APK, משתמשים בפקודה sessions submit android-executable.

הדגלים האלה נדרשים לקובצי הפעלה של Android:

  • מכשיר: מציינים מכשיר באמצעות --device: --device shiba-35
  • ‫Executable: מציינים את הנתיב המקומי או את הנתיב ב-Cloud Storage לקובץ ההפעלה באמצעות --executable: --executable /path/to/my_executable

כדי להריץ את קובץ ההפעלה, מזינים פקודה שדומה לפקודה הבאה, עם מזהי המכשירים ונתיב קובץ ההפעלה שלכם:

gcloud beta device-run sessions submit android-executable \
  --device shiba-34 \
  --executable /path/to/my_executable \
  --executable-args="--input=/data/local/tmp/file.name,--threads=4" \
  --other-files-to-push=/path/to/model.tflite=/data/local/tmp/model.tflite \
  --paths-to-pull=/data/local/tmp/output

תיקיית דוח התוצאות של המשימה נמצאת בנתיב של Cloud Storage, כמו gs://BUCKET_NAME/automation/sessions/SESSION_ID/. בפלט הפקודה, מחפשים את הקישור שנראה כך: https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/.

שלב 4. עיון בנתונים של הרצת קובץ ההפעלה וניהול שלהם

גם במצב אסינכרוני וגם במצב סינכרוני של הפקודה sessions submit android-executable, אפשר להשתמש בפקודה sessions describe כדי לשלוח שאילתה לגבי סטטוס המשימה במהלך הביצוע, או כדי לקבל את התוצאה אחרי שהיא מסתיימת:

gcloud beta device-run sessions describe SESSION_ID

הפלט מסכם את תוצאות ההרצה ומקשר לתוצאות במסוףGoogle Cloud . לדוגמה:

Session SESSION_ID finished with result [FAILED].
Result files are stored at [https://console.cloud.google.com/storage/browser/BUCKET_NAME/automation/sessions/SESSION_ID/].
JOB NAME  EXECUTION NAME  EXECUTION RESULT
job-000 all FAILED: 2 test cases failed, 5 passed

כדי להציג את כל הסשנים הפעילים והסשנים שהסתיימו, משתמשים בפקודה הבאה:

gcloud beta device-run sessions list

מקבלים פלט שמכיל את רשימת הסשנים בפרויקט, בדומה לזה:

SESSION_ID                                    START_TIME                STATE
session-4825e153                              2026-07-28T16:38:43.155Z  DONE
session-813ca602                              2026-07-28T22:40:32.415Z  DONE
session-67cd0570                              2026-07-16T08:25:55.474Z  DONE
session-17cc299c                              2026-07-14T14:31:33.649Z  DONE
session-911d0763                              2026-07-09T00:39:02.051Z  DONE
session-4e943fea                              2026-07-15T23:08:32.252Z  DONE
session-0132e458                              2026-08-20T18:33:19.751Z  DONE
session-1077f07b                              2026-07-28T22:35:43.848Z  DONE
session-71b054c6                              2026-07-15T01:15:41.643Z  DONE
session-4f8b2e45                              2026-08-06T23:11:56.161Z  DONE

הפקודה sessions list תומכת בכל אפשרויות הדגלים הרגילות של Google Cloud CLI. לדוגמה:

gcloud beta device-run sessions list --limit 5

התוצאות שיתקבלו יהיו דומות לתוצאות הבאות:

SESSION_ID                            START_TIME                STATE
session-4825e153                      2026-07-28T16:38:43.155Z  DONE
session-813ca602                      2026-07-28T22:40:32.415Z  DONE
93ec2df2-d5bf-4c36-b7f7-c2a4fb0dc3ce  2026-07-03T05:10:58.015Z  DONE
session-67cd0570                      2026-07-16T08:25:55.474Z  DONE
session-17cc299c                      2026-07-14T14:31:33.649Z  DONE

כדי למצוא את כל הסשנים הפעילים, מריצים את הפקודה:

gcloud beta device-run sessions list --filter RUNNING

אם יש לכם סשנים פעילים, תראו תוצאות דומות לאלה:

SESSION_ID        START_TIME  STATE
session-d7ff8b81              RUNNING

אחרת, תופיע ההודעה Listed 0 items.

כדי לבטל סשן פעיל, מריצים את הפקודה הזו עם מזהה הסשן:

gcloud beta device-run sessions cancel SESSION_ID

הפקודה מוחזרת באופן מיידי, כי הסשן רק מסומן לביטול. הביטול מתבצע באופן אסינכרוני בקצה העורפי.

אם הסשן כבר הסתיים, רק הסטטוס הנוכחי מודפס. בקשת ביטול של סשן שהסתיים לא נחשבת לשגיאה.

המאמרים הבאים

בשלב הבא, מריצים בדיקת אינסטרומנטציה של Android או מוצאים ומנתחים יומנים.