AndroidDebugBridge

public class AndroidDebugBridge
extends Object

java.lang.Object
   ↳ com.android.tradefed.device.server.AndroidDebugBridge


חיבור לממשק הגישור של Android‏ (adb) בצד המארח

זהו המקום המרכזי לתקשורת עם מכשירים, אמולטורים או אפליקציות שפועלות בהם.

צריך לקרוא ל-init() לפני שמבצעים פעולה כלשהי.

סיכום

כיתות מוטמעות

interface AndroidDebugBridge.IDebugBridgeChangeListener

בכיתות שבהן מיושם הממשק הזה יש method שמתמודד עם שינויים ב-AndroidDebugBridge (כולל הפעלה מחדש). 

interface AndroidDebugBridge.IDeviceChangeListener

בכיתות שמטמיעות את הממשק הזה יש שיטות שמתייחסות לIDevice הוספה, מחיקה ושינויים. 

ערכים קבועים

int DEFAULT_START_ADB_TIMEOUT_MILLIS

זמן קצוב לתפוגה שמוגדר כברירת מחדל כשמפעילים את שרת ה-ADB

שדות

public static final AdbVersion MIN_ADB_VERSION

הגרסה המינימלית והמקסימלית של adb שנתמכת.

‫methods ציבוריים

static void addDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)

הפונקציה מוסיפה את המאזין לאוסף המאזינים שיקבלו התראה כשמתחבר AndroidDebugBridge חדש, על ידי שליחת אחת מההודעות שמוגדרות בממשק IDebugBridgeChangeListener.

static void addDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)

הפונקציה מוסיפה את המאזין לאוסף המאזינים שיקבלו הודעה כש-IDevice מחובר, מנותק או כשהמאפיינים שלו או רשימת ERROR(/ClientImpl) שלו משתנים, על ידי שליחת אחת מההודעות שמוגדרות בממשק IDeviceChangeListener.

static AndroidDebugBridge createBridge(String osLocation, boolean forceNewBridge, long timeout, TimeUnit unit)

יוצר גשר חדש לניפוי באגים מהמיקום של כלי שורת הפקודה.

static AndroidDebugBridge createBridge(long timeout, TimeUnit unit)

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

static AndroidDebugBridge createBridge(String osLocation, boolean forceNewBridge)

השיטה הזו הוצאה משימוש. אם ADB לא מגיב, יכול להיות שהשיטה הזו תיתקע. במקומה, צריך להשתמש ב-method‏ createBridge(String,boolean,long,TimeUnit).

static AndroidDebugBridge createBridge()

השיטה הזו הוצאה משימוש. אם ADB לא מגיב, יכול להיות שהשיטה הזו תיתקע. במקומה, צריך להשתמש ב-method‏ createBridge(long,TimeUnit).

static void deviceChanged(IDevice device, int changeMask)

הודעה למאזין על שינוי ב-IDevice.

static void deviceConnected(IDevice device)

התראה למאזין על IDevice חדש.

static void deviceDisconnected(IDevice device)

הודעה למאזין על ניתוק IDevice.

static void disableFakeAdbServerMode()
static void disconnectBridge()

השיטה הזו הוצאה משימוש. אם ADB לא מגיב, יכול להיות שהשיטה הזו תיתקע. במקומה, צריך להשתמש ב-method‏ disconnectBridge(long,TimeUnit).

static boolean disconnectBridge(long timeout, TimeUnit unit)

מנתק את גשר הניפוי הנוכחי ומשמיד את האובייקט.

static void enableFakeAdbServerMode(int port)
static ListenableFuture<AdbVersion> getAdbVersion(File adb)
static AndroidDebugBridge getBridge()

הפונקציה מחזירה את גשר הניפוי באגים הנוכחי.

int getConnectionAttemptCount()

הפונקציה מחזירה את מספר הפעמים שאובייקט AndroidDebugBridge ניסה להתחבר לשירות adb.

static int getDebugBridgeChangeListenerCount()
static int getDeviceChangeListenerCount()
IDevice[] getDevices()

החזרת המכשירים.

ListenableFuture<List<AdbDevice>> getRawDeviceList()

הפונקציה מחזירה את קבוצת המכשירים שדווחו על ידי שורת הפקודה adb.

int getRestartAttemptCount()

הפונקציה מחזירה את מספר הפעמים שאובייקט AndroidDebugBridge ניסה להפעיל מחדש את שד ה-adb.

static InetSocketAddress getSocketAddress()

השיטה הזו הוצאה משימוש. השיטה הזו מחזירה כתובת שרת של לולאה חוזרת, שיכול להיות שהיא לא תואמת לכתובת שבה משתמש שרת ה-ADB. כלומר, יכול להיות שה-JVM יהיה במצב IPv4, בזמן ששרת ה-ADB מתארח בכתובת לולאה חוזרת של IPv6. עדיף להשתמש ב-openConnection() במקום זאת כשפותחים חיבור לשרת ADB.

static ListenableFuture<String> getVirtualDeviceId(ListeningExecutorService service, File adb, IDevice device)
boolean hasInitialDeviceList()

הפונקציה מחזירה ערך בוליאני שמציין אם הגשר קיבל את הרשימה הראשונית מ-adb אחרי שהוא נוצר.

static void init(AdbInitOptions options)

בדומה ל-init(), עם אפשרות להעביר קבוצה מותאמת אישית של משתני סביבה.

static void init(boolean useLibusb, Map<String, String> env)

בדומה ל-init(), עם אפשרות להפעיל את libusb ולהעביר קבוצה מותאמת אישית של env.

static void init()

מאתחלת את הספרייה ddm.

static void initIfNeeded()

הספרייה מאותחלת רק אם יש צורך בכך. השימוש בה הוצא משימוש במקרים שאינם בדיקות.

boolean isConnected()

הפונקציה מחזירה אם האובייקט AndroidDebugBridge עדיין מחובר לדמון adb.

static boolean isUserManagedAdbMode()
static SocketChannel openConnection()

המערכת מנסה להתחבר לשרת המקומי של Android Debug Bridge.

static void removeDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)

מסירה את המאזין מהאוסף של המאזינים שיקבלו הודעה כשמתחיל AndroidDebugBridge חדש.

static void removeDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)

הפעולה מסירה את המאזין מהאוסף של המאזינים שיקבלו הודעה כש-IDevice מחובר, מנותק או כשהמאפיינים שלו או רשימת ERROR(/ClientImpl) שלו משתנים.

boolean restart(long timeout, TimeUnit unit)

מפעיל מחדש את adb, אבל לא את השירותים שסביבו.

boolean restart()

השיטה הזו הוצאה משימוש. אם ADB לא מגיב, יכול להיות שהשיטה הזו תיתקע. במקומה, צריך להשתמש ב-method‏ restart(long,TimeUnit).

boolean startAdb(long timeout, TimeUnit unit)

מפעיל את השרת בצד המארח של adb.

static void terminate()

הפונקציה מסיימת את השימוש בספריית ddm.

ערכים קבועים

DEFAULT_START_ADB_TIMEOUT_MILLIS

public static final int DEFAULT_START_ADB_TIMEOUT_MILLIS

זמן קצוב לתפוגה שמוגדר כברירת מחדל כשמפעילים את שרת ה-ADB

ערך קבוע: 20000 (0x00004e20)

שדות

MIN_ADB_VERSION

public static final AdbVersion MIN_ADB_VERSION

הגרסה המינימלית והמקסימלית של adb שנתמכת. הערך הזה תואם ל-ADB_SERVER_VERSION שנמצא ב- //device/tools/adb/adb.h

‫methods ציבוריים

addDebugBridgeChangeListener

public static void addDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)

הפונקציה מוסיפה את המאזין לאוסף המאזינים שיקבלו התראה כשמתחבר AndroidDebugBridge חדש, על ידי שליחת אחת מההודעות שמוגדרות בממשק IDebugBridgeChangeListener.

פרמטרים
listener AndroidDebugBridge.IDebugBridgeChangeListener: המאזין שאליו צריך לשלוח את ההתראה.

addDeviceChangeListener

public static void addDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)

הפונקציה מוסיפה את המאזין לאוסף המאזינים שיקבלו הודעה כש-IDevice מחובר, מנותק או כשהמאפיינים שלו או רשימת ERROR(/ClientImpl) שלו משתנים, על ידי שליחת אחת מההודעות שמוגדרות בממשק IDeviceChangeListener.

פרמטרים
listener AndroidDebugBridge.IDeviceChangeListener: המאזין שאליו צריך לשלוח את ההתראה.

createBridge

public static AndroidDebugBridge createBridge (String osLocation, 
                boolean forceNewBridge, 
                long timeout, 
                TimeUnit unit)

יוצר גשר חדש לניפוי באגים מהמיקום של כלי שורת הפקודה.

כל שרת קיים ינותק, אלא אם המיקום זהה והערך של forceNewBridge הוא false.

פרמטרים
osLocation String: המיקום של כלי שורת הפקודה adb

forceNewBridge boolean: יצירת גשר חדש גם אם כבר קיים גשר עם אותו מיקום.

timeout long: הזמן המקסימלי להמתנה

unit TimeUnit: יחידת הזמן של הארגומנט timeout

החזרות
AndroidDebugBridge גשר מחובר, או null אם היו שגיאות במהלך היצירה או החיבור לגשר

createBridge

public static AndroidDebugBridge createBridge (long timeout, 
                TimeUnit unit)

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

הגשר הזה יצפה ש-adb יפעל. לא תהיה לו אפשרות להפעיל, להפסיק או להפעיל מחדש את adb.

אם כבר התחילה שיחה מגשר, היא מוחזרת ישירות ללא שינויים (בדומה לקריאה ל-getBridge()).

פרמטרים
timeout long

unit TimeUnit

החזרות
AndroidDebugBridge גשר מחובר, או null אם היו שגיאות במהלך היצירה או החיבור לגשר

createBridge

public static AndroidDebugBridge createBridge (String osLocation, 
                boolean forceNewBridge)

השיטה הזו הוצאה משימוש.
יכול להיות שהשיטה הזו תיתקע אם ADB לא מגיב. במקום זאת, אתם צריכים להשתמש ב-createBridge(String,boolean,long,TimeUnit).

יוצר גשר חדש לניפוי באגים מהמיקום של כלי שורת הפקודה.

כל שרת קיים ינותק, אלא אם המיקום זהה והערך של forceNewBridge הוא false.

פרמטרים
osLocation String: המיקום של כלי שורת הפקודה adb

forceNewBridge boolean: יצירה כפויה של גשר חדש, גם אם כבר קיים גשר עם אותו מיקום.

החזרות
AndroidDebugBridge גשר מחובר, או null אם היו שגיאות במהלך היצירה או החיבור לגשר

createBridge

public static AndroidDebugBridge createBridge ()

השיטה הזו הוצאה משימוש.
יכול להיות שהשיטה הזו תיתקע אם ADB לא מגיב. במקום זאת, אתם צריכים להשתמש ב-createBridge(long,TimeUnit).

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

הגשר הזה יצפה ש-adb יפעל. לא תהיה לו אפשרות להפעיל, להפסיק או להפעיל מחדש את adb.

אם כבר התחילה שיחה מגשר, היא מוחזרת ישירות ללא שינויים (בדומה לקריאה ל-getBridge()).

החזרות
AndroidDebugBridge גשר מחובר, או null אם היו שגיאות במהלך היצירה או החיבור לגשר

deviceChanged

public static void deviceChanged (IDevice device, 
                int changeMask)

הודעה למאזין על שינוי ב-IDevice.

ההודעה על המאזינים מתבצעת בבלוק מסונכרן. חשוב להבין שהמאזינים עשויים לגשת לשיטות שונות של IDevice וגם ל-getDevices() שמשתמשת בנעילות פנימיות.

פרמטרים
device IDevice: IDevice ששונה.

changeMask int

deviceConnected

public static void deviceConnected (IDevice device)

התראה למאזין על IDevice חדש.

ההודעה על המאזינים מתבצעת בבלוק מסונכרן. חשוב להבין שהמאזינים עשויים לגשת לשיטות שונות של IDevice וגם ל-getDevices() שמשתמשת בנעילות פנימיות.

פרמטרים
device IDevice: ה-IDevice החדש.

deviceDisconnected

public static void deviceDisconnected (IDevice device)

הודעה למאזין על ניתוק IDevice.

ההודעה על המאזינים מתבצעת בבלוק מסונכרן. חשוב להבין שהמאזינים עשויים לגשת לשיטות שונות של IDevice וגם ל-getDevices() שמשתמשת בנעילות פנימיות.

פרמטרים
device IDevice: IDevice המנותק.

disableFakeAdbServerMode

public static void disableFakeAdbServerMode ()

disconnectBridge

public static void disconnectBridge ()

השיטה הזו הוצאה משימוש.
יכול להיות שהשיטה הזו תיתקע אם ADB לא מגיב. במקום זאת, אתם צריכים להשתמש ב-disconnectBridge(long,TimeUnit).

מנתק את גשר הניפוי הנוכחי ומשמיד את האובייקט. יהיה צורך ליצור אובייקט חדש באמצעות createBridge(String,boolean).

הפעולה הזו תפסיק גם את שרת המארח הנוכחי של adb.

disconnectBridge

public static boolean disconnectBridge (long timeout, 
                TimeUnit unit)

מנתק את גשר הניפוי הנוכחי ומשמיד את האובייקט. יהיה צורך ליצור אובייקט חדש באמצעות createBridge(String,boolean).

הפעולה הזו תפסיק גם את שרת המארח הנוכחי של adb.

פרמטרים
timeout long

unit TimeUnit

החזרות
boolean true אם השיטה מצליחה לפני שהטיימאוט מסתיים.

enableFakeAdbServerMode

public static void enableFakeAdbServerMode (int port)

פרמטרים
port int

getAdbVersion

public static ListenableFuture<AdbVersion> getAdbVersion (File adb)

פרמטרים
adb File

החזרות
ListenableFuture<AdbVersion>

getBridge

public static AndroidDebugBridge getBridge ()

הפונקציה מחזירה את גשר הניפוי באגים הנוכחי. יכול להיות null אם לא נוצרו אף אחד.

החזרות
AndroidDebugBridge

getConnectionAttemptCount

public int getConnectionAttemptCount ()

הפונקציה מחזירה את מספר הפעמים שאובייקט AndroidDebugBridge ניסה להתחבר לשירות adb.

החזרות
int

getDebugBridgeChangeListenerCount

public static int getDebugBridgeChangeListenerCount ()

החזרות
int

getDeviceChangeListenerCount

public static int getDeviceChangeListenerCount ()

החזרות
int

getDevices

public IDevice[] getDevices ()

החזרת המכשירים.

החזרות
IDevice[]

מידע נוסף:

getRawDeviceList

public ListenableFuture<List<AdbDevice>> getRawDeviceList ()

הפונקציה מחזירה את קבוצת המכשירים שדווחו על ידי שורת הפקודה adb. הכלי הזה מיועד בעיקר ל-Connection Assistant או לכלים אחרים לאבחון שצריכים לאמת את המצב של רשימת getDevices() דרך ערוץ אחר. קוד שצריך רק לגשת לרשימת המכשירים צריך לקרוא ל-getDevices() במקום זאת.

החזרות
ListenableFuture<List<AdbDevice>>

getRestartAttemptCount

public int getRestartAttemptCount ()

הפונקציה מחזירה את מספר הפעמים שאובייקט AndroidDebugBridge ניסה להפעיל מחדש את שד ה-adb.

החזרות
int

getSocketAddress

public static InetSocketAddress getSocketAddress ()

השיטה הזו הוצאה משימוש.
השיטה הזו מחזירה כתובת שרת של לולאה חוזרת שאולי לא תואמת לכתובת שבה נעשה שימוש בשרת ADB. כלומר, יכול להיות ש-JVM יהיה במצב IPv4, בזמן ששרת ADB מתארח בכתובת לולאה חוזרת של IPv6. עדיף להשתמש ב-openConnection() כשפותחים חיבור לשרת ADB.

מחזירה את כתובת הסוקט של שרת ה-ADB במארח.

השיטה הזו תנסה להחזיר כתובת socket שידוע שהיא פועלת, על ידי פתיחת ערוץ socket לשרת ADB. המערכת תנסה להשתמש בכתובת לולאה חוזרת של IPv4 וגם של IPv6. במקרה שבו אף אחד מהם לא הצליח להתחבר, השיטה הזו תחזור לכתובת הלולאה החוזרת המועדפת על ידי JVM. הלוגיקה הזו של חזרה למצב הקודם נדרשת כדי למנוע שבירה של ה-API.

אם מופעל מצב שרת ADB מזויף, השיטה הזו תעבור אוטומטית לגיבוי להטמעה מדור קודם בלי לנסות להתחבר ל-ADB.

החזרות
InetSocketAddress

getVirtualDeviceId

public static ListenableFuture<String> getVirtualDeviceId (ListeningExecutorService service, 
                File adb, 
                IDevice device)

פרמטרים
service ListeningExecutorService

adb File

device IDevice

החזרות
ListenableFuture<String>

hasInitialDeviceList

public boolean hasInitialDeviceList ()

הפונקציה מחזירה ערך בוליאני שמציין אם הגשר קיבל את הרשימה הראשונית מ-adb אחרי שהוא נוצר.

בדרך כלל, קריאה ל-getDevices() מיד אחרי createBridge(String,boolean) תניב רשימה ריקה. הסיבה לכך היא מנגנון התקשורת האסינכרוני הפנימי עם adb, שלא מבטיח שהרשימה IDevice נוצרה לפני הקריאה אל getDevices().

הדרך המומלצת לקבל את רשימת האובייקטים IDevice היא ליצור אובייקט IDeviceChangeListener.

החזרות
boolean

init

public static void init (AdbInitOptions options)

בדומה ל-init(), עם אפשרות להעביר קבוצה מותאמת אישית של משתני סביבה.

פרמטרים
options AdbInitOptions

init

public static void init (boolean useLibusb, 
                Map<String, String> env)

בדומה ל-init(), עם אפשרות להפעיל את libusb ולהעביר קבוצה מותאמת אישית של env. משתנים.

פרמטרים
useLibusb boolean

env Map

init

public static void init ()

מאתחלת את הספרייה ddm.

צריך להפעיל את הפונקציה הזו פעם אחת לפני כל קריאה ל-createBridge(String,boolean).

צריך גם לאתחל את ההעדפות של ddmlib עם ערכי ברירת המחדל ששונו.

כשיוצאים מהאפליקציה, צריך להפעיל את הפונקציה terminate().

initIfNeeded

public static void initIfNeeded ()

הספרייה מאותחלת רק אם יש צורך בכך. השימוש בה הוצא משימוש במקרים שאינם בדיקות.

מידע נוסף:

isConnected

public boolean isConnected ()

הפונקציה מחזירה את הערך true אם האובייקט AndroidDebugBridge עדיין מחובר לדמון adb, ואת הערך false אם לא.

החזרות
boolean

isUserManagedAdbMode

public static boolean isUserManagedAdbMode ()

החזרות
boolean אם פועלים במצב ADB מנוהל על ידי המשתמש, שבו ddmlib לא ינהל את שרת ה-ADB ולא אמור לנהל אותו.

openConnection

public static SocketChannel openConnection ()

המערכת מנסה להתחבר לשרת המקומי של Android Debug Bridge.

החזרות
SocketChannel שקע מחובר אם הפעולה הצליחה

הקפצת הודעות שגיאה (throw)
IOException אם מתרחשות שגיאות כשפותחים את החיבור

removeDebugBridgeChangeListener

public static void removeDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)

מסירה את המאזין מהאוסף של המאזינים שיקבלו הודעה כשמתחיל AndroidDebugBridge חדש.

פרמטרים
listener AndroidDebugBridge.IDebugBridgeChangeListener: המאזין שלא אמור לקבל יותר התראות.

removeDeviceChangeListener

public static void removeDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)

הפעולה מסירה את המאזין מהאוסף של המאזינים שיקבלו הודעה כש-IDevice מחובר, מנותק או כשהמאפיינים שלו או רשימת ERROR(/ClientImpl) שלו משתנים.

פרמטרים
listener AndroidDebugBridge.IDeviceChangeListener: המאזין שלא אמור לקבל יותר התראות.

הפעלה מחדש

public boolean restart (long timeout, 
                TimeUnit unit)

מפעיל מחדש את adb, אבל לא את השירותים שסביבו.

פרמטרים
timeout long

unit TimeUnit

החזרות
boolean ‫true אם הפעולה הצליחה.

הפעלה מחדש

public boolean restart ()

השיטה הזו הוצאה משימוש.
יכול להיות שהשיטה הזו תיתקע אם ADB לא מגיב. במקום זאת, אתם צריכים להשתמש ב-restart(long,TimeUnit).

מפעיל מחדש את adb, אבל לא את השירותים שסביבו.

החזרות
boolean ‫true אם הפעולה הצליחה.

startAdb

public boolean startAdb (long timeout, 
                TimeUnit unit)

מפעיל את השרת בצד המארח של adb. אין להשתמש בשיטה הזו כשמשתמשים בשרת ADB בניהול משתמשים, כי מחזור החיים של השרת צריך להיות בניהול המשתמש ולא בניהול ddmlib.

פרמטרים
timeout long

unit TimeUnit

החזרות
boolean ‫true אם הפעולה הצליחה

סגירת חשבון

public static void terminate ()

הפונקציה מסיימת את השימוש בספריית ddm. צריך להפעיל את הפונקציה הזו כשמפסיקים את האפליקציה.