AdbHelper
public
final
class
AdbHelper
extends Object
| java.lang.Object
|
| ↳ |
com.android.tradefed.device.server.AdbHelper
|
מחלקת עזר לטיפול בבקשות ובחיבורים ל-adb.
AndroidDebugBridge הוא ה-API הציבורי לחיבור ל-adb, ואילו AdbHelper מבצע את הפעולות ברמה הנמוכה.
בשלב הזה, המערכת משתמשת ב-I/O לא חוסם של המתנה פעילה. שימוש בסלקטור יהיה יעיל יותר, אבל נראה שהוא מוגזם בהקשר של מה שאנחנו עושים כאן.
סיכום
methods ציבוריים |
static
void
|
createForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec)
יוצרת העברת יציאה בין יציאה מקומית ליציאה מרוחקת.
|
static
AdbCommandRejectedException
|
createHiddenException(String message, boolean errorDuringDeviceSelection)
|
static
AdbCommandRejectedException
|
createHiddenException(String message)
|
static
byte[]
|
createJdwpForwardRequest(int pid)
יוצר בקשת העברה ליציאה אחרת לתהליך jdwp.
|
static
SocketChannel
|
createPassThroughConnection(InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid)
יוצר ומחבר שקע חדש של העברת נתונים מהמארח ליציאה במכשיר.
|
static
void
|
createReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec)
יוצרת היפוך יציאות בין יציאה מרוחקת ליציאה מקומית.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
מריץ פקודת מעטפת במכשיר ומאחזר את הפלט.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is)
מריץ פקודה מרחוק במכשיר ומאחזר את הפלט.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
מריץ פקודת מעטפת במכשיר ומאחזר את הפלט.
|
static
byte[]
|
formAdbRequest(String payloadString)
יוצרים מחרוזת ASCII שלפניה ארבע ספרות הקסדצימליות.
|
static
String
|
getFeatures(IDevice device)
שליחת שאילתה לגבי קבוצה של תכונות נתמכות מהמכשיר.
|
static
RawImage
|
getFrameBuffer(InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit)
שליפת מאגר המסגרות מהמכשיר עם פסק הזמן שצוין.
|
static
String
|
getHostFeatures()
שליחת שאילתה לגבי קבוצה של תכונות נתמכות ממארח ה-ADB.
|
static
SocketChannel
|
open(InetSocketAddress adbSockAddr, IDevice device, int devicePort)
יוצרים ומקשרים שקע חדש למעבר נתונים, מהמארח ליציאה במכשיר.
|
static
SocketChannel
|
rawAdbService(InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service)
להפעיל את השירות במכשיר מרוחק.
|
static
SocketChannel
|
rawExec(InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters)
הפעלת שירות host:exec במכשיר מרוחק.
|
static
AdbHelper.AdbResponse
|
readAdbResponse(SocketChannel chan, boolean readDiagString)
קריאת התגובה מ-ADB אחרי פקודה.
|
static
void
|
reboot(String into, InetSocketAddress adbSockAddr, IDevice device)
מפעילים מחדש את המכשיר.
|
static
void
|
removeForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec)
הסרת העברה ליציאה אחרת בין יציאה מקומית ליציאה מרוחקת.
|
static
void
|
removeReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec)
הסרת היפוך של יציאה בין יציאה מרוחקת ליציאה מקומית.
|
static
void
|
root(InetSocketAddress adbSockAddr, IDevice device)
מבקשים מהדמון של adb להפוך ל-root במכשיר.
|
static
void
|
setDevice(SocketChannel adbChan, IDevice device)
בהינתן IDevice, מאתרים את המספר הסידורי ומגדירים את adb לתקשר עם המכשיר הזה.
|
static
void
|
setDevice(SocketChannel adbChan, String deviceSerialNumber)
הפקודה אומרת ל-adb לתקשר עם מכשיר ספציפי
|
static
void
|
write(SocketChannel chan, byte[] data, int length, int timeout)
הכתיבה תימשך עד שכל הנתונים בפרמטר data ייכתבו, עד שיגיעו לאורך האופציונלי, עד שהזמן הקצוב יסתיים או עד שהחיבור ייכשל.
|
static
void
|
write(SocketChannel chan, byte[] data)
הכתיבה תתבצע עד שכל הנתונים ב-data ייכתבו, או עד שהחיבור ייכשל או יפוג.
|
ערכים קבועים
HOST_TRANSPORT
public static final String HOST_TRANSPORT
ערך קבוע:
"host:transport:"
שדות
DEFAULT_CHARSET
public static final Charset DEFAULT_CHARSET
methods ציבוריים
createForward
public static void createForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec,
String remotePortSpec)
יוצרת העברת יציאה בין יציאה מקומית ליציאה מרוחקת.
| פרמטרים |
adbSockAddr |
InetSocketAddress: כתובת הסוקט להתחברות ל-adb |
device |
IDevice: המכשיר שבו רוצים להגדיר העברה ליציאה אחרת |
localPortSpec |
String: מפרט של היציאה המקומית להעברה, צריך להיות בפורמט
tcp: |
remotePortSpec |
String: ציון של היציאה המרוחקת להעברה, אחת מהאפשרויות הבאות: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(מרוחק בלבד) |
createHiddenException
public static AdbCommandRejectedException createHiddenException (String message,
boolean errorDuringDeviceSelection)
| פרמטרים |
message |
String |
errorDuringDeviceSelection |
boolean |
createJdwpForwardRequest
public static byte[] createJdwpForwardRequest (int pid)
יוצר בקשת העברה ליציאה אחרת לתהליך jdwp. הפונקציה מחזירה מערך שמכיל את המחרוזת '####jwdp:{pid}'.
| פרמטרים |
pid |
int: מזהה התהליך (PID) של jdwp במכשיר. |
createPassThroughConnection
public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr,
String deviceSerialNumber,
int pid)
יוצר ומחבר שקע חדש של העברת נתונים מהמארח ליציאה במכשיר.
| פרמטרים |
deviceSerialNumber |
String: המספר הסידורי של המכשיר שאליו רוצים להתחבר. יכול להיות null או ריק, ובמקרה כזה החיבור יהיה למכשיר הראשון שזמין. |
pid |
int: מזהה התהליך שאליו רוצים להתחבר. |
createReverse
public static void createReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec,
String localPortSpec)
יוצרת היפוך יציאות בין יציאה מרוחקת ליציאה מקומית.
| פרמטרים |
adbSockAddr |
InetSocketAddress: כתובת הסוקט להתחברות ל-adb |
device |
IDevice: המכשיר שבו רוצים לבצע את היפוך הניוד |
remotePortSpec |
String: ציון של היציאה המרוחקת שאליה מתבצעת ההפניה, אחת מהאפשרויות הבאות: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(remote only) |
localPortSpec |
String: מפרט של היציאה המקומית, צריך להיות בפורמט tcp: |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
מריץ פקודת מעטפת במכשיר ומאחזר את הפלט. הפלט מועבר אל rcvr כשהוא מגיע.
| פרמטרים |
adbSockAddr |
InetSocketAddress: ה-ERROR(/InetSocketAddress) ל-adb. |
command |
String: פקודת המעטפת להרצה |
device |
IDevice: ה-IDevice שבו תופעל הפקודה. |
rcvr |
IShellOutputReceiver: ה-IShellOutputReceiver שיקבל את הפלט של פקודת ה-Shell |
maxTimeToOutputResponse |
long: הזמן המקסימלי בין פלט הפקודה. אם חולף יותר זמן בין פלט הפקודה, השיטה תחזיר ShellCommandUnresponsiveException. הערך 0 מציין שהשיטה תחכה לנצח לפלט של הפקודה ולא תזרוק שגיאה. |
maxTimeUnits |
TimeUnit: יחידות לערכים של maxTimeToOutputResponse שאינם אפס. |
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
AdbHelper.AdbService adbService,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits,
InputStream is)
מריץ פקודה מרחוק במכשיר ומאחזר את הפלט. הפלט מועבר אל rcvr כשהוא מגיע. הפקודה מופעלת על ידי השירות המרוחק שמזוהה על ידי הפרמטר adbService.
| פרמטרים |
adbSockAddr |
InetSocketAddress: ה-ERROR(/InetSocketAddress) ל-adb. |
adbService |
AdbHelper.AdbService: ה-AdbHelper.AdbService שבו משתמשים כדי להריץ את הפקודה. |
command |
String: פקודת המעטפת להרצה |
device |
IDevice: ה-IDevice שבו תופעל הפקודה. |
rcvr |
IShellOutputReceiver: ה-IShellOutputReceiver שיקבל את הפלט של פקודת ה-Shell |
maxTimeout |
long: הזמן המקסימלי להמתנה עד להשלמת הפקודה. הערך 0 מציין שאין זמן קצוב לתפוגה. |
maxTimeToOutputResponse |
long: הזמן המקסימלי בין פלט הפקודה. אם חולף יותר זמן בין פלט הפקודה, השיטה תחזיר ShellCommandUnresponsiveException. הערך 0 מציין שהשיטה תחכה לנצח לפלט של הפקודה ולא תזרוק שגיאה. |
maxTimeUnits |
TimeUnit: יחידות לערכים שונים מאפס של maxTimeout ו-maxTimeToOutputResponse. |
is |
InputStream: ERROR(/InputStream) אופציונלי שיוזרם אחרי הפעלת הפקודה ולפני אחזור התגובה. |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
מריץ פקודת מעטפת במכשיר ומאחזר את הפלט. הפלט מועבר אל rcvr כשהוא מגיע.
| פרמטרים |
adbSockAddr |
InetSocketAddress: ה-ERROR(/InetSocketAddress) ל-adb. |
command |
String: פקודת המעטפת להרצה |
device |
IDevice: ה-IDevice שבו תופעל הפקודה. |
rcvr |
IShellOutputReceiver: ה-IShellOutputReceiver שיקבל את הפלט של פקודת ה-Shell |
maxTimeout |
long: הזמן המקסימלי להחזרת הפקודה. הערך 0 מציין שלא יוגדר זמן קצוב מקסימלי לתפוגה. |
maxTimeToOutputResponse |
long: הזמן המקסימלי בין פלט הפקודה. אם חולף יותר זמן בין פלט הפקודה, השיטה תחזיר ShellCommandUnresponsiveException. הערך 0 מציין שהשיטה תחכה לנצח לפלט של הפקודה ולא תזרוק שגיאה. |
maxTimeUnits |
TimeUnit: יחידות לערכים שונים מאפס של maxTimeout ו-maxTimeToOutputResponse. |
public static byte[] formAdbRequest (String payloadString)
יוצרים מחרוזת ASCII שלפניה ארבע ספרות הקסדצימליות. החלק הפותח '####' הוא האורך של שאר המחרוזת, מוצפן כ-ASCII hex (הרישיות לא משנה).
| פרמטרים |
payloadString |
String |
getFeatures
public static String getFeatures (IDevice device)
שליחת שאילתה לגבי קבוצה של תכונות נתמכות מהמכשיר.
| פרמטרים |
device |
IDevice: המכשיר שבו רוצים להגדיר העברה ליציאה אחרת |
getFrameBuffer
public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr,
IDevice device,
long timeout,
TimeUnit unit)
שליפת מאגר המסגרות מהמכשיר עם פסק הזמן שצוין. ערך הזמן הקצוב לתפוגה 0 מציין
שהמערכת תמתין לנצח.
| פרמטרים |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
timeout |
long |
unit |
TimeUnit |
getHostFeatures
public static String getHostFeatures ()
שליחת שאילתה לגבי קבוצה של תכונות נתמכות ממארח ה-ADB.
פתיחה
public static SocketChannel open (InetSocketAddress adbSockAddr,
IDevice device,
int devicePort)
יוצרים ומקשרים שקע חדש למעבר נתונים, מהמארח ליציאה במכשיר.
| פרמטרים |
device |
IDevice: המכשיר שאליו רוצים להתחבר. יכול להיות null, ובמקרה כזה החיבור יהיה למכשיר הראשון שזמין. |
devicePort |
int: היציאה שאנחנו פותחים |
rawAdbService
public static SocketChannel rawAdbService (InetSocketAddress socketAddress,
IDevice device,
String command,
AdbHelper.AdbService service)
להפעיל את השירות במכשיר מרוחק. מחזירה ערוץ socket שמחובר לתהליך הפעיל.
ddlmib מוותר על הבעלות על SocketChannel שהוחזר, וחובה לסגור אותו באופן מפורש אחרי השימוש.
| פרמטרים |
device |
IDevice: המכשיר שאליו רוצים להתחבר. יכול להיות null, ובמקרה כזה החיבור יהיה למכשיר הראשון שזמין. |
command |
String: הפקודה להרצה |
service |
AdbHelper.AdbService: ה-AdbHelper.AdbService שבו משתמשים כדי להריץ את הפקודה. |
rawExec
public static SocketChannel rawExec (InetSocketAddress socketAddress,
IDevice device,
String executable,
String[] parameters)
הפעלת שירות host:exec במכשיר מרוחק. מחזירה ערוץ socket שמחובר לתהליך הפעיל. הערה: שירות exec לא מבחין בין stdout לבין stderr, ולכן כל מה שנקרא מהסוקט יכול להגיע מכל אחד מהפלט ולעבור שזירה.
ddlmib מוותר על הבעלות על SocketChannel שהוחזר, וחובה לסגור אותו באופן מפורש אחרי השימוש.
| פרמטרים |
device |
IDevice: המכשיר שאליו רוצים להתחבר. יכול להיות null, ובמקרה כזה החיבור יהיה למכשיר הראשון שזמין. |
executable |
String: הנתיב המוחלט של קובץ ההפעלה להרצה |
parameters |
String: הפרמטרים שמתקבלים כשמפעילים את קובץ ההפעלה |
readAdbResponse
public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan,
boolean readDiagString)
קריאת התגובה מ-ADB אחרי הפקודה.
| פרמטרים |
chan |
SocketChannel: ערוץ ה-socket שמחובר ל-adb. |
readDiagString |
boolean: אם הערך הוא true, אנחנו מצפים לתשובה OKAY ואחריה מחרוזת אבחון. אחרת, אנחנו מצפים שמחרוזת האבחון תופיע רק אחרי הערך FAIL. |
| זריקות |
TimeoutException |
במקרה שהזמן הקצוב לתפוגה של החיבור מסתיים. |
|
במקרה של שגיאת קלט/פלט בחיבור. |
הפעלה מחדש
public static void reboot (String into,
InetSocketAddress adbSockAddr,
IDevice device)
מפעילים מחדש את המכשיר.
| פרמטרים |
into |
String: מה להפעיל מחדש (שחזור, טוען אתחול). או null כדי להפעיל מחדש. |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
removeForward
public static void removeForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec)
הסרת העברה ליציאה אחרת בין יציאה מקומית ליציאה מרוחקת.
| פרמטרים |
adbSockAddr |
InetSocketAddress: כתובת הסוקט להתחברות ל-adb |
device |
IDevice: המכשיר שבו רוצים להסיר את העברת היציאה |
localPortSpec |
String: מפרט של היציאה המקומית שהועברה, צריך להיות בפורמט
tcp: |
removeReverse
public static void removeReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec)
הסרת היפוך יציאה בין יציאה מרוחקת ליציאה מקומית.
| פרמטרים |
adbSockAddr |
InetSocketAddress: כתובת הסוקט להתחברות ל-adb |
device |
IDevice: המכשיר שבו רוצים להסיר את היפוך היציאה |
remotePortSpec |
String: הגדרה של היציאה המרוחקת שאליה מתבצעת ההפניה, אחת מהאפשרויות הבאות: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(רק מרוחק) |
שורש
public static void root (InetSocketAddress adbSockAddr,
IDevice device)
מבקשים מהדמון של adb להפוך ל-root במכשיר. יכול להיות שהפעולה תיכשל בלי הודעה, והיא יכולה להצליח רק בגרסאות למפתחים. מידע נוסף זמין במאמר בנושא adb root. אם אתם רוצים לדעת אם הפעולה הצליחה, אתם יכולים לבדוק את התוצאה של executeRemoteCommand בפקודה echo \$USER_ID. אם התוצאה היא 0, adbd פועל כ-root.
| פרמטרים |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
setDevice
public static void setDevice (SocketChannel adbChan,
IDevice device)
בהינתן IDevice, צריך לאחזר את המספר הסידורי ולומר ל-adb לתקשר עם המכשיר הזה.
| פרמטרים |
adbChan |
SocketChannel: חיבור הסוקט ל-adb. |
device |
IDevice: המכשיר שאליו מדברים. |
setDevice
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)
הפקודה אומרת ל-adb לתקשר עם מכשיר ספציפי
| פרמטרים |
adbChan |
SocketChannel: חיבור שקע ל-adb |
deviceSerialNumber |
String: המספר הסידורי של המכשיר שאליו רוצים לשלוח את הפקודה. אם הערך הוא null, המכשיר שנבחר כברירת מחדל הוא המכשיר שנבחר על ידי adb. |
לכתוב
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)
הכתיבה תימשך עד שכל הנתונים בפרמטר data ייכתבו, עד שיגיעו לאורך האופציונלי, עד שהזמן הקצוב יפוג או עד שהחיבור ייכשל. הפונקציה מחזירה את הערך true אם כל הנתונים נכתבו.
| פרמטרים |
chan |
SocketChannel: השקע הפתוח שאליו רוצים לכתוב. |
data |
byte: המאגר לשליחה. |
length |
int: האורך לכתיבה או -1 כדי לשלוח את כל המאגר. |
timeout |
int: ערך הזמן הקצוב לתפוגה. ערך פסק זמן של אפס פירושו "המתנה ללא הגבלת זמן". |
| זריקות |
TimeoutException |
במקרה שהזמן הקצוב לתפוגה של החיבור מסתיים. |
|
במקרה של שגיאת קלט/פלט בחיבור. |
לכתוב
public static void write (SocketChannel chan,
byte[] data)
הכתיבה תתבצע עד שכל הנתונים ב-data ייכתבו, או עד שהחיבור ייכשל או יפוג.
המערכת תשתמש בערך ברירת המחדל של הזמן הקצוב לתפוגה.
| פרמטרים |
chan |
SocketChannel: השקע הפתוח שאליו רוצים לכתוב. |
data |
byte: המאגר לשליחה. |
| זריקות |
TimeoutException |
במקרה שהזמן הקצוב לתפוגה של החיבור מסתיים. |
|
במקרה של שגיאת קלט/פלט בחיבור. |