החל מ-27 במרץ 2025, מומלץ להשתמש ב-android-latest-release
במקום ב-aosp-main
כדי ליצור תרומות ל-AOSP. מידע נוסף זמין במאמר שינויים ב-AOSP.
עבודה עם מכשירים ב-TF
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
כדי להריץ בדיקות, Trade Federation משתמש בהפשטה שנקראת ITestDevice
. ההפשטה הזו מייצגת את מכשיר Android עם הנקודה המשותפת הנמוכה ביותר:
- יש לו מספר סידורי
- יש לו סטטוס: אונליין, זמין, שחזור או לא זמין.
- יש לו מושג מסוים של מהימנות. לדוגמה, אם מריצים פקודה, אפשר להבדיל בין המקרה שבו הפקודה עדיין לא הסתיימה, המקרה שבו המכשיר לא תומך בהרצת פקודות והמקרה שבו המכשיר הפסיק להגיב בזמן הרצת הפקודה.
סיווגים של מכשירים
שלוש ההטמעות הראשיות של ITestDevice
מייצגות שלושה תרחישים לדוגמה נפוצים.
מכשיר פיזי
זהו חומרה בפועל שמחוברת למחשב המארח של TF באמצעות USB או באמצעות התכונה TCP של adb. הכיתה TestDevice נמצאת מעל לספרייה ddmlib, שהיא ממשק Java ל-adb. כך אפשר ליצור מכונה של כל מכשיר פיזי שמופיע ב-adb devices
ולהשתמש בו כ-TestDevice
.
מכשיר הדמיה
מעבדים של מכונות וירטואליות מטופלים באופן מיוחד על ידי TF כי הם נמצאים בתהליך אחר. כדי לבצע פעולות במהדורת הדמיה, מציינים את הארגומנט --emulator
בפקודה. למידע נוסף, ראו LocalSdkBuildProvider ו-SdkAvdPreparer.
אף מכשיר
נניח שיש לכם בדיקה שלא מתבצעת בה אינטראקציה עם מכשיר בכלל. לדוגמה, יכול להיות שהוא פשוט מוריד קובץ משירות כלשהו ומאמת שהקובץ עצמו תקין. NullDevice הוא ITestDevice
שהוא רק גרסה מקוצרת. יש לו מספר סידורי כמו null-device-N
, ורוב הניסיונות לבצע פעולות יתבצעו ללא פעולה או יגרמו לזריקת שגיאה.
דוגמאות התוכן והקוד שבדף הזה כפופות לרישיונות המפורטים בקטע רישיון לתוכן. Java ו-OpenJDK הם סימנים מסחריים או סימנים מסחריים רשומים של חברת Oracle ו/או של השותפים העצמאיים שלה.
עדכון אחרון: 2025-07-27 (שעון UTC).
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-07-27 (שעון UTC)."],[],[],null,["# Work with devices in TF\n\nTrade Federation uses an abstraction called\n[ITestDevice](/reference/com/android/tradefed/device/ITestDevice) to\nrun tests. This abstraction objectifies the lowest-common-denominator Android device:\n\n- It has a serial number\n- It has a state: Online, Available, Recovery, or Not Available\n- It has some notion of reliability. For instance, if we run a command, we can differentiate between the case where the command hasn't finished yet, the case where the device doesn't support running commands, and the case where the device has become unresponsive while running the command.\n\nDevice classes\n--------------\n\nThe three primary implementations of `ITestDevice` represent three common\nusecases.\n\n### Physical device\n\nThis is an actual piece of hardware, connected to the TF host machine either by USB, or by using\nadb's TCP feature. The [TestDevice](/reference/com/android/tradefed/device/TestDevice) class sits atop the ddmlib library, which is a Java interface to adb. So any\nphysical device listed in `adb devices` can be instantiated and used as a\n`TestDevice`.\n\n### Emulator\n\nEmulators are handled specially by TF because they live in another process. To interact with an\nEmulator, specify the `--emulator` argument for the command. See\n[LocalSdkBuildProvider](/reference/com/android/tradefed/build/LocalSdkBuildProvider) and\n[SdkAvdPreparer](/reference/com/android/tradefed/targetprep/SdkAvdPreparer) for more info.\n\n### No device\n\nSuppose you have a test that doesn't interact with a device at all. For instance, it might just\ndownload a file from some service and verify that the file itself is valid. The\n[NullDevice](/reference/com/android/tradefed/device/NullDevice) is an `ITestDevice` that is just a stub. It has a serial number like\n`null-device-N`, and most attempted operations either no-op silently or throw."]]