AdbHelper
public
final
class
AdbHelper
extends Object
| java.lang.Object
|
| ↳ |
com.android.tradefed.device.server.AdbHelper
|
Klasa pomocnicza do obsługi żądań i połączeń z adb.
AndroidDebugBridge to publiczny interfejs API do łączenia się z adb, a AdbHelper
wykonuje czynności niskiego poziomu.
Obecnie używa nieblokujących operacji wejścia-wyjścia z oczekiwaniem w pętli. Selektor byłby bardziej wydajny, ale w tym przypadku wydaje się przesadą.
Podsumowanie
Metody publiczne |
static
void
|
createForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec)
Tworzy przekierowanie portów między portem lokalnym a zdalnym.
|
static
AdbCommandRejectedException
|
createHiddenException(String message, boolean errorDuringDeviceSelection)
|
static
AdbCommandRejectedException
|
createHiddenException(String message)
|
static
byte[]
|
createJdwpForwardRequest(int pid)
Tworzy żądanie przekierowania portów do procesu jdwp.
|
static
SocketChannel
|
createPassThroughConnection(InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid)
Tworzy i łączy nowe gniazdo przelotowe z hosta z portem na urządzeniu.
|
static
void
|
createReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec)
Tworzy odwrócenie portu między portem zdalnym a lokalnym.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Wykonuje polecenie powłoki na urządzeniu i pobiera dane wyjściowe.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is)
Wykonuje na urządzeniu polecenie zdalne i pobiera dane wyjściowe.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Wykonuje polecenie powłoki na urządzeniu i pobiera dane wyjściowe.
|
static
byte[]
|
formAdbRequest(String payloadString)
Utwórz ciąg ASCII poprzedzony 4 cyframi szesnastkowymi.
|
static
String
|
getFeatures(IDevice device)
Wysyła do urządzenia zapytanie o zestaw obsługiwanych funkcji.
|
static
RawImage
|
getFrameBuffer(InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit)
Pobierz bufor ramki z urządzenia z podanym czasem oczekiwania.
|
static
String
|
getHostFeatures()
Wysyła zapytanie do hosta ADB o zestaw obsługiwanych funkcji.
|
static
SocketChannel
|
open(InetSocketAddress adbSockAddr, IDevice device, int devicePort)
Utwórz i połącz nowe gniazdo przelotowe z hosta z portem na urządzeniu.
|
static
SocketChannel
|
rawAdbService(InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service)
Wywołaj usługę na urządzeniu zdalnym.
|
static
SocketChannel
|
rawExec(InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters)
Wywołaj usługę host:exec na urządzeniu zdalnym.
|
static
AdbHelper.AdbResponse
|
readAdbResponse(SocketChannel chan, boolean readDiagString)
Odczytuje odpowiedź z ADB po wykonaniu polecenia.
|
static
void
|
reboot(String into, InetSocketAddress adbSockAddr, IDevice device)
Zrestartuj urządzenie.
|
static
void
|
removeForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec)
Usuń przekierowanie portów między portem lokalnym a zdalnym.
|
static
void
|
removeReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec)
Usuwanie odwracania portu między portem zdalnym a lokalnym.
|
static
void
|
root(InetSocketAddress adbSockAddr, IDevice device)
Poproś demona adb o uzyskanie uprawnień roota na urządzeniu.
|
static
void
|
setDevice(SocketChannel adbChan, IDevice device)
Po podaniu IDevice pobierz numer seryjny i poinformuj adb, aby komunikował się z tym urządzeniem.
|
static
void
|
setDevice(SocketChannel adbChan, String deviceSerialNumber)
informuje adb, że ma komunikować się z określonym urządzeniem.
|
static
void
|
write(SocketChannel chan, byte[] data, int length, int timeout)
Zapisuje dane do momentu, aż wszystkie dane w parametrze „data” zostaną zapisane, osiągnięta zostanie opcjonalna długość, upłynie czas oczekiwania lub połączenie zostanie przerwane.
|
static
void
|
write(SocketChannel chan, byte[] data)
Zapisuj dane, dopóki wszystkie dane w parametrze „data” nie zostaną zapisane lub dopóki połączenie nie ulegnie awarii bądź nie upłynie limit czasu.
|
Stałe
HOST_TRANSPORT
public static final String HOST_TRANSPORT
Constant Value:
"host:transport:"
Fieldsem
DEFAULT_CHARSET
public static final Charset DEFAULT_CHARSET
Metody publiczne
createForward
public static void createForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec,
String remotePortSpec)
Tworzy przekierowanie portów między portem lokalnym a zdalnym.
| Parametry |
adbSockAddr |
InetSocketAddress: adres gniazda do połączenia z adb |
device |
IDevice: urządzenie, na którym ma być skonfigurowane przekierowanie portów |
localPortSpec |
String: specyfikacja lokalnego portu do przekazywania dalej, powinna mieć format tcp: |
remotePortSpec |
String: specyfikacja portu zdalnego, do którego ma być przekazywane połączenie, jeden z tych typów: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(tylko zdalny) |
createHiddenException
public static AdbCommandRejectedException createHiddenException (String message,
boolean errorDuringDeviceSelection)
| Parametry |
message |
String |
errorDuringDeviceSelection |
boolean |
createJdwpForwardRequest
public static byte[] createJdwpForwardRequest (int pid)
Tworzy żądanie przekierowania portów do procesu jdwp. Zwraca tablicę zawierającą ciąg „####jwdp:{pid}”.
| Parametry |
pid |
int: identyfikator procesu JDWP na urządzeniu. |
createPassThroughConnection
public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr,
String deviceSerialNumber,
int pid)
Tworzy i łączy nowe gniazdo przelotowe z hosta z portem na urządzeniu.
| Parametry |
deviceSerialNumber |
String: numer seryjny urządzenia, z którym ma być nawiązane połączenie. Może mieć wartość null lub być pusty. W takim przypadku połączenie zostanie nawiązane z pierwszym dostępnym urządzeniem. |
pid |
int: identyfikator procesu, z którym chcesz się połączyć. |
createReverse
public static void createReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec,
String localPortSpec)
Tworzy odwrócenie portu między portem zdalnym a lokalnym.
| Parametry |
adbSockAddr |
InetSocketAddress: adres gniazda do połączenia z adb |
device |
IDevice: urządzenie, na którym ma zostać odwrócony port |
remotePortSpec |
String: specyfikacja portu zdalnego, do którego ma zostać przekierowane połączenie zwrotne. Może to być: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(tylko zdalnie) |
localPortSpec |
String: specyfikacja portu lokalnego, powinna mieć format tcp: |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Wykonuje polecenie powłoki na urządzeniu i pobiera dane wyjściowe. Dane wyjściowe są przekazywane do rcvr w miarę ich pojawiania się.
| Parametry |
adbSockAddr |
InetSocketAddress: ERROR(/InetSocketAddress) do adb. |
command |
String: polecenie powłoki do wykonania |
device |
IDevice: IDevice, na którym ma zostać wykonane polecenie. |
rcvr |
IShellOutputReceiver: IShellOutputReceiver, który otrzyma wynik polecenia powłoki. |
maxTimeToOutputResponse |
long: maksymalny czas między wynikami poleceń. Jeśli między danymi wyjściowymi polecenia upłynie więcej czasu, metoda zgłosi wyjątek ShellCommandUnresponsiveException. Wartość 0 oznacza, że metoda będzie czekać na dane wyjściowe polecenia w nieskończoność i nigdy nie zgłosi wyjątku. |
maxTimeUnits |
TimeUnit: jednostki dla wartości maxTimeToOutputResponse innych niż zero. |
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
AdbHelper.AdbService adbService,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits,
InputStream is)
Wykonuje na urządzeniu polecenie zdalne i pobiera dane wyjściowe. Dane wyjściowe są przekazywane do rcvr w miarę ich pojawiania się. Polecenie jest wykonywane przez usługę zdalną określoną przez parametr adbService.
| Parametry |
adbSockAddr |
InetSocketAddress: ERROR(/InetSocketAddress) do adb. |
adbService |
AdbHelper.AdbService: AdbHelper.AdbService, którego chcesz użyć do uruchomienia polecenia. |
command |
String: polecenie powłoki do wykonania |
device |
IDevice: IDevice, na którym ma zostać wykonane polecenie. |
rcvr |
IShellOutputReceiver: IShellOutputReceiver, który otrzyma wynik polecenia powłoki. |
maxTimeout |
long: maksymalny czas oczekiwania na wykonanie całego polecenia. Wartość 0 oznacza brak limitu czasu. |
maxTimeToOutputResponse |
long: maksymalny czas między wynikami poleceń. Jeśli między danymi wyjściowymi polecenia upłynie więcej czasu, metoda zgłosi wyjątek ShellCommandUnresponsiveException. Wartość 0 oznacza, że metoda będzie czekać na dane wyjściowe polecenia w nieskończoność i nigdy nie zgłosi wyjątku. |
maxTimeUnits |
TimeUnit: jednostki dla wartości innych niż zero w polach maxTimeout i maxTimeToOutputResponse. |
is |
InputStream: opcjonalny ERROR(/InputStream), który ma być przesyłany strumieniowo po wywołaniu polecenia i przed pobraniem odpowiedzi. |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Wykonuje polecenie powłoki na urządzeniu i pobiera dane wyjściowe. Dane wyjściowe są przekazywane do rcvr w miarę ich pojawiania się.
| Parametry |
adbSockAddr |
InetSocketAddress: ERROR(/InetSocketAddress) do adb. |
command |
String: polecenie powłoki do wykonania |
device |
IDevice: IDevice, na którym ma zostać wykonane polecenie. |
rcvr |
IShellOutputReceiver: IShellOutputReceiver, który otrzyma wynik polecenia powłoki. |
maxTimeout |
long: maksymalny czas oczekiwania na zwrócenie polecenia. Wartość 0 oznacza, że nie zostanie zastosowany maksymalny czas oczekiwania. |
maxTimeToOutputResponse |
long: maksymalny czas między wynikami poleceń. Jeśli między danymi wyjściowymi polecenia upłynie więcej czasu, metoda zgłosi wyjątek ShellCommandUnresponsiveException. Wartość 0 oznacza, że metoda będzie czekać na dane wyjściowe polecenia w nieskończoność i nigdy nie zgłosi wyjątku. |
maxTimeUnits |
TimeUnit: jednostki dla wartości innych niż zero w polach maxTimeout i maxTimeToOutputResponse. |
public static byte[] formAdbRequest (String payloadString)
Utwórz ciąg ASCII poprzedzony 4 cyframi szesnastkowymi. Początkowy ciąg „####” to długość pozostałej części ciągu znaków zakodowana w formacie szesnastkowym ASCII (wielkość liter nie ma znaczenia).
| Parametry |
payloadString |
String |
getFeatures
public static String getFeatures (IDevice device)
Wysyła do urządzenia zapytanie o zestaw obsługiwanych funkcji.
| Parametry |
device |
IDevice: urządzenie, na którym ma być skonfigurowane przekierowanie portów |
getFrameBuffer
public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr,
IDevice device,
long timeout,
TimeUnit unit)
Pobierz bufor ramki z urządzenia z podanym czasem oczekiwania. Wartość 0 oznacza, że będzie czekać w nieskończoność.
| Parametry |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
timeout |
long |
unit |
TimeUnit |
getHostFeatures
public static String getHostFeatures ()
Wysyła zapytanie do hosta ADB o zestaw obsługiwanych funkcji.
otwórz
public static SocketChannel open (InetSocketAddress adbSockAddr,
IDevice device,
int devicePort)
Utwórz i połącz nowe gniazdo przelotowe z hosta z portem na urządzeniu.
| Parametry |
device |
IDevice: urządzenie, z którym chcesz się połączyć. Może mieć wartość null, w którym to przypadku połączenie zostanie nawiązane z pierwszym dostępnym urządzeniem. |
devicePort |
int: port, który otwieramy |
rawAdbService
public static SocketChannel rawAdbService (InetSocketAddress socketAddress,
IDevice device,
String command,
AdbHelper.AdbService service)
Wywołaj usługę na urządzeniu zdalnym. Zwraca kanał gniazda połączony z procesem wykonawczym.
ddlmib zrzeka się własności zwróconego obiektu SocketChannel i musi zostać wyraźnie zamknięty po użyciu.
| Parametry |
device |
IDevice: urządzenie, z którym chcesz się połączyć. Może mieć wartość null, w którym to przypadku połączenie zostanie nawiązane z pierwszym dostępnym urządzeniem. |
command |
String: polecenie do wykonania |
service |
AdbHelper.AdbService: AdbHelper.AdbService, którego chcesz użyć do uruchomienia polecenia. |
rawExec
public static SocketChannel rawExec (InetSocketAddress socketAddress,
IDevice device,
String executable,
String[] parameters)
Wywołaj usługę host:exec na urządzeniu zdalnym. Zwraca kanał gniazda połączony z procesem wykonywania. Pamiętaj, że usługa exec nie rozróżnia stdout i stderr, więc wszystko, co jest odczytywane z gniazda, może pochodzić z dowolnego wyjścia i być przeplatane.
ddlmib zrzeka się własności zwróconego obiektu SocketChannel i musi zostać wyraźnie zamknięty po użyciu.
| Parametry |
device |
IDevice: urządzenie, z którym chcesz się połączyć. Może mieć wartość null, w którym to przypadku połączenie zostanie nawiązane z pierwszym dostępnym urządzeniem. |
executable |
String: ścieżka bezwzględna do pliku wykonywalnego, który ma zostać uruchomiony. |
parameters |
String: parametry do pobrania po wykonaniu pliku wykonywalnego. |
readAdbResponse
public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan,
boolean readDiagString)
Odczytuje odpowiedź z ADB po wykonaniu polecenia.
| Parametry |
chan |
SocketChannel: kanał gniazda połączony z adb. |
readDiagString |
boolean: jeśli wartość jest prawdziwa, oczekujemy, że po odpowiedzi OKAY pojawi się ciąg diagnostyczny. W przeciwnym razie oczekujemy, że po słowie FAIL pojawi się tylko ciąg diagnostyczny. |
| Zgłasza |
TimeoutException |
w przypadku upłynięcia limitu czasu połączenia. |
|
w przypadku błędu wejścia/wyjścia w połączeniu. |
Uruchom ponownie
public static void reboot (String into,
InetSocketAddress adbSockAddr,
IDevice device)
Zrestartuj urządzenie.
| Parametry |
into |
String: co ma zostać ponownie uruchomione (tryb odzyskiwania, program rozruchowy). lub null, aby tylko ponownie uruchomić urządzenie. |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
removeForward
public static void removeForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec)
Usuń przekierowanie portu między portem lokalnym a zdalnym.
| Parametry |
adbSockAddr |
InetSocketAddress: adres gniazda, z którym ma się połączyć adb. |
device |
IDevice: urządzenie, na którym ma zostać usunięte przekierowanie portów |
localPortSpec |
String: specyfikacja przekierowanego portu lokalnego, powinna mieć format tcp: |
removeReverse
public static void removeReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec)
Usuwanie odwracania portu między portem zdalnym a lokalnym.
| Parametry |
adbSockAddr |
InetSocketAddress: adres gniazda, z którym ma się połączyć adb. |
device |
IDevice: urządzenie, na którym ma zostać usunięte odwrócenie portu |
remotePortSpec |
String: specyfikacja portu zdalnego odwrócona do jednego z tych typów: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(tylko zdalny) |
root
public static void root (InetSocketAddress adbSockAddr,
IDevice device)
Poproś demona adb o uzyskanie uprawnień roota na urządzeniu. Może to się nie udać bez powiadomienia i działa tylko w przypadku wersji deweloperskich. Więcej informacji znajdziesz w sekcji „adb root”. Jeśli chcesz sprawdzić, czy się udało, możesz sprawdzić wynik polecenia executeRemoteCommand na „echo \$USER_ID”. Jeśli jest on równy 0, oznacza to, że adbd działa jako root.
| Parametry |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
setDevice
public static void setDevice (SocketChannel adbChan,
IDevice device)
Wybierz IDevice, aby pobrać numer seryjny i polecić adb komunikację z tym urządzeniem.
| Parametry |
adbChan |
SocketChannel: połączenie gniazda z adb. |
device |
IDevice: urządzenie, do którego chcesz mówić. |
setDevice
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)
informuje adb, że ma komunikować się z określonym urządzeniem.
| Parametry |
adbChan |
SocketChannel: połączenie gniazda z adb |
deviceSerialNumber |
String: numer seryjny urządzenia, z którym chcesz się połączyć. Jeśli ma wartość null, domyślnie wybrane urządzenie to to, które zostało wybrane przez adb. |
pisać
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)
Zapisuje dane do momentu, aż wszystkie dane w parametrze „data” zostaną zapisane, osiągnięta zostanie opcjonalna długość, upłynie czas oczekiwania lub połączenie zostanie przerwane. Zwraca wartość „true”, jeśli wszystkie dane zostały zapisane.
| Parametry |
chan |
SocketChannel: otwarte gniazdo, do którego można zapisywać dane. |
data |
byte: bufor do wysłania. |
length |
int: długość zapisu lub -1, aby wysłać cały bufor. |
timeout |
int: wartość limitu czasu. Wartość 0 oznacza „czekaj bez końca”. |
| Zgłasza |
TimeoutException |
w przypadku upłynięcia limitu czasu połączenia. |
|
w przypadku błędu wejścia/wyjścia w połączeniu. |
pisać
public static void write (SocketChannel chan,
byte[] data)
Zapisuj dane, dopóki wszystkie dane w parametrze „data” nie zostaną zapisane lub połączenie nie ulegnie awarii albo nie upłynie limit czasu.
Używana jest domyślna wartość limitu czasu.
| Parametry |
chan |
SocketChannel: otwarte gniazdo, do którego można zapisywać dane. |
data |
byte: bufor do wysłania. |
| Zgłasza |
TimeoutException |
w przypadku upłynięcia limitu czasu połączenia. |
|
w przypadku błędu wejścia/wyjścia w połączeniu. |