AdbHelper
public
final
class
AdbHelper
extends Object
| java.lang.Object
|
| ↳ |
com.android.tradefed.device.server.AdbHelper
|
Classe helper per gestire le richieste e le connessioni ad ADB.
AndroidDebugBridge è l'API pubblica per la connessione ad ADB, mentre AdbHelper
si occupa delle operazioni di basso livello.
Attualmente utilizza I/O non bloccanti di spin-wait. Un selettore sarebbe più efficiente, ma sembra
eccessivo per quello che stiamo facendo qui.
Riepilogo
Metodi pubblici |
static
void
|
createForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec)
Crea un port forwarding tra una porta locale e una remota.
|
static
AdbCommandRejectedException
|
createHiddenException(String message, boolean errorDuringDeviceSelection)
|
static
AdbCommandRejectedException
|
createHiddenException(String message)
|
static
byte[]
|
createJdwpForwardRequest(int pid)
Crea una richiesta di port forwarding a un processo jdwp.
|
static
SocketChannel
|
createPassThroughConnection(InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid)
Crea e connette un nuovo socket pass-through dall'host a una porta del dispositivo.
|
static
void
|
createReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec)
Crea un'inversione di porta tra una porta remota e una locale.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Esegue un comando della shell sul dispositivo e recupera l'output.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is)
Esegue un comando remoto sul dispositivo e recupera l'output.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Esegue un comando della shell sul dispositivo e recupera l'output.
|
static
byte[]
|
formAdbRequest(String payloadString)
Crea una stringa ASCII preceduta da quattro cifre esadecimali.
|
static
String
|
getFeatures(IDevice device)
Esegue query su un insieme di funzionalità supportate dal dispositivo.
|
static
RawImage
|
getFrameBuffer(InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit)
Recupera il frame buffer dal dispositivo con il timeout specificato.
|
static
String
|
getHostFeatures()
Esegue query su un insieme di funzionalità supportate dall'host ADB.
|
static
SocketChannel
|
open(InetSocketAddress adbSockAddr, IDevice device, int devicePort)
Crea e connetti un nuovo socket pass-through dall'host a una porta del dispositivo.
|
static
SocketChannel
|
rawAdbService(InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service)
Richiamare il servizio su un dispositivo remoto.
|
static
SocketChannel
|
rawExec(InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters)
Richiama il servizio host:exec su un dispositivo remoto.
|
static
AdbHelper.AdbResponse
|
readAdbResponse(SocketChannel chan, boolean readDiagString)
Legge la risposta di ADB dopo un comando.
|
static
void
|
reboot(String into, InetSocketAddress adbSockAddr, IDevice device)
riavvia il dispositivo.
|
static
void
|
removeForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec)
Rimuovi un port forwarding tra una porta locale e una porta remota.
|
static
void
|
removeReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec)
Rimuovi un'inversione di porta tra una porta remota e una locale.
|
static
void
|
root(InetSocketAddress adbSockAddr, IDevice device)
Chiedi al demone adb di diventare root sul dispositivo.
|
static
void
|
setDevice(SocketChannel adbChan, IDevice device)
Dato un IDevice, recupera il numero di serie e indica ad ADB di comunicare con quel dispositivo.
|
static
void
|
setDevice(SocketChannel adbChan, String deviceSerialNumber)
indica ad adb di comunicare con un dispositivo specifico
|
static
void
|
write(SocketChannel chan, byte[] data, int length, int timeout)
Scrivi fino a quando tutti i dati in "data" non vengono scritti, la lunghezza facoltativa non viene raggiunta, il timeout
scade o la connessione non riesce.
|
static
void
|
write(SocketChannel chan, byte[] data)
Scrivi finché tutti i dati in "data" non vengono scritti o la connessione non va a buon fine o scade.
|
Costanti
HOST_TRANSPORT
public static final String HOST_TRANSPORT
Valore costante:
"host:transport:"
Campi
DEFAULT_CHARSET
public static final Charset DEFAULT_CHARSET
Metodi pubblici
createForward
public static void createForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec,
String remotePortSpec)
Crea un port forwarding tra una porta locale e una remota.
| Parametri |
adbSockAddr |
InetSocketAddress: l'indirizzo socket a cui connettersi ad ADB |
device |
IDevice: il dispositivo su cui eseguire il port forwarding |
localPortSpec |
String: specifica della porta locale da inoltrare, deve essere nel formato
tcp: |
remotePortSpec |
String: specifica della porta remota a cui inoltrare, uno dei seguenti valori: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(solo remoto) |
createHiddenException
public static AdbCommandRejectedException createHiddenException (String message,
boolean errorDuringDeviceSelection)
| Parametri |
message |
String |
errorDuringDeviceSelection |
boolean |
createJdwpForwardRequest
public static byte[] createJdwpForwardRequest (int pid)
Crea una richiesta di port forwarding a un processo jdwp. Viene restituito un array contenente
"####jwdp:{pid}".
| Parametri |
pid |
int: il PID del processo jdwp sul dispositivo. |
createPassThroughConnection
public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr,
String deviceSerialNumber,
int pid)
Crea e connette un nuovo socket pass-through dall'host a una porta del dispositivo.
| Parametri |
deviceSerialNumber |
String: il numero di serie del dispositivo a cui connettersi. Può essere nullo o vuoto, nel qual caso la connessione avverrà al primo dispositivo disponibile. |
pid |
int: il PID del processo a cui connettersi. |
createReverse
public static void createReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec,
String localPortSpec)
Crea un'inversione di porta tra una porta remota e una locale.
| Parametri |
adbSockAddr |
InetSocketAddress: l'indirizzo socket a cui connettersi ad ADB |
device |
IDevice: il dispositivo su cui eseguire l'inversione della porta |
remotePortSpec |
String: specifica della porta remota a cui eseguire l'inversione, uno dei seguenti valori: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(solo remoto) |
localPortSpec |
String: specifica della porta locale, deve essere nel formato tcp: |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Esegue un comando della shell sul dispositivo e recupera l'output. L'output viene consegnato a
rcvr appena arriva.
| Parametri |
adbSockAddr |
InetSocketAddress: il ERROR(/InetSocketAddress) adb. |
command |
String: il comando shell da eseguire |
device |
IDevice: il IDevice su cui eseguire il comando. |
rcvr |
IShellOutputReceiver: il IShellOutputReceiver che riceverà l'output del comando shell |
maxTimeToOutputResponse |
long: il tempo massimo tra l'output del comando. Se trascorre più tempo tra
l'output del comando, il metodo genererà ShellCommandUnresponsiveException. Un valore
di 0 indica che il metodo attenderà per sempre l'output del comando e non genererà mai un errore. |
maxTimeUnits |
TimeUnit: unità per i valori maxTimeToOutputResponse diversi da zero. |
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
AdbHelper.AdbService adbService,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits,
InputStream is)
Esegue un comando remoto sul dispositivo e recupera l'output. L'output viene consegnato a
rcvr appena arriva. Il comando viene eseguito dal servizio remoto identificato dal parametro
adbService.
| Parametri |
adbSockAddr |
InetSocketAddress: il ERROR(/InetSocketAddress) adb. |
adbService |
AdbHelper.AdbService: il AdbHelper.AdbService da utilizzare per eseguire il comando. |
command |
String: il comando shell da eseguire |
device |
IDevice: il IDevice su cui eseguire il comando. |
rcvr |
IShellOutputReceiver: il IShellOutputReceiver che riceverà l'output del comando shell |
maxTimeout |
long: timeout massimo per l'esecuzione dell'intero comando. Un valore pari a 0 indica nessun timeout. |
maxTimeToOutputResponse |
long: il tempo massimo tra l'output del comando. Se trascorre più tempo tra
l'output del comando, il metodo genererà ShellCommandUnresponsiveException. Un valore
di 0 indica che il metodo attenderà per sempre l'output del comando e non genererà mai un errore. |
maxTimeUnits |
TimeUnit: unità per i valori non nulli di maxTimeout e maxTimeToOutputResponse. |
is |
InputStream: un ERROR(/InputStream) facoltativo da trasmettere dopo aver richiamato il comando e
prima di recuperare la risposta. |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Esegue un comando della shell sul dispositivo e recupera l'output. L'output viene consegnato a
rcvr appena arriva.
| Parametri |
adbSockAddr |
InetSocketAddress: il ERROR(/InetSocketAddress) adb. |
command |
String: il comando shell da eseguire |
device |
IDevice: il IDevice su cui eseguire il comando. |
rcvr |
IShellOutputReceiver: il IShellOutputReceiver che riceverà l'output del comando shell |
maxTimeout |
long: il tempo massimo per la restituzione del comando. Un valore pari a 0 indica che non verrà applicato
alcun timeout massimo. |
maxTimeToOutputResponse |
long: il tempo massimo tra l'output del comando. Se trascorre più tempo tra
l'output del comando, il metodo genererà ShellCommandUnresponsiveException. Un valore
di 0 indica che il metodo attenderà per sempre l'output del comando e non genererà mai un errore. |
maxTimeUnits |
TimeUnit: unità per i valori non nulli di maxTimeout e maxTimeToOutputResponse. |
public static byte[] formAdbRequest (String payloadString)
Crea una stringa ASCII preceduta da quattro cifre esadecimali. L'apertura "####" indica la lunghezza del
resto della stringa, codificata come esadecimale ASCII (la distinzione tra maiuscole e minuscole non è importante).
| Parametri |
payloadString |
String |
getFeatures
public static String getFeatures (IDevice device)
Esegue query su un insieme di funzionalità supportate dal dispositivo.
| Parametri |
device |
IDevice: il dispositivo su cui eseguire il port forwarding |
getFrameBuffer
public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr,
IDevice device,
long timeout,
TimeUnit unit)
Recupera il frame buffer dal dispositivo con il timeout specificato. Un timeout di 0 indica
che attenderà per sempre.
| Parametri |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
timeout |
long |
unit |
TimeUnit |
getHostFeatures
public static String getHostFeatures ()
Esegue query su un insieme di funzionalità supportate dall'host ADB.
apri
public static SocketChannel open (InetSocketAddress adbSockAddr,
IDevice device,
int devicePort)
Crea e connetti un nuovo socket pass-through dall'host a una porta del dispositivo.
| Parametri |
device |
IDevice: il dispositivo a cui connettersi. Può essere null, nel qual caso la connessione avverrà al primo dispositivo disponibile. |
devicePort |
int: la porta che stiamo aprendo |
rawAdbService
public static SocketChannel rawAdbService (InetSocketAddress socketAddress,
IDevice device,
String command,
AdbHelper.AdbService service)
Richiamare il servizio su un dispositivo remoto. Restituisce un canale socket connesso al
processo di esecuzione.
ddlmib rinuncia alla proprietà di SocketChannel restituito e deve essere chiuso esplicitamente
dopo l'uso.
| Parametri |
device |
IDevice: il dispositivo a cui connettersi. Può essere null, nel qual caso la connessione avverrà al primo dispositivo disponibile. |
command |
String: il comando da eseguire |
service |
AdbHelper.AdbService: il AdbHelper.AdbService da utilizzare per eseguire il comando. |
rawExec
public static SocketChannel rawExec (InetSocketAddress socketAddress,
IDevice device,
String executable,
String[] parameters)
Richiama il servizio host:exec su un dispositivo remoto. Restituisce un canale socket connesso al processo di esecuzione. Tieni presente che il servizio exec non distingue stdout e stderr, quindi
ciò che viene letto dal socket può provenire da entrambi gli output ed essere intercalato.
ddlmib rinuncia alla proprietà di SocketChannel restituito e deve essere chiuso esplicitamente
dopo l'uso.
| Parametri |
device |
IDevice: il dispositivo a cui connettersi. Può essere null, nel qual caso la connessione avverrà al primo dispositivo disponibile. |
executable |
String: il percorso assoluto dell'eseguibile da eseguire |
parameters |
String: i parametri da ottenere durante l'esecuzione dell'eseguibile |
readAdbResponse
public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan,
boolean readDiagString)
Legge la risposta di ADB dopo un comando.
| Parametri |
chan |
SocketChannel: Il canale socket connesso ad ADB. |
readDiagString |
boolean: Se è true, ci aspettiamo che alla risposta OKAY segua una
stringa di diagnostica. In caso contrario, ci aspettiamo che la stringa di diagnostica segua un errore. |
| Lanci |
TimeoutException |
in caso di timeout della connessione. |
|
in caso di errore I/O sulla connessione. |
fai ripartire
public static void reboot (String into,
InetSocketAddress adbSockAddr,
IDevice device)
riavvia il dispositivo.
| Parametri |
into |
String: in cosa riavviare (recovery, bootloader). oppure null per riavviare. |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
removeForward
public static void removeForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec)
Rimuovi un port forwarding tra una porta locale e una remota.
| Parametri |
adbSockAddr |
InetSocketAddress: l'indirizzo socket a cui connettersi ad ADB |
device |
IDevice: il dispositivo su cui rimuovere il port forwarding |
localPortSpec |
String: specifica della porta locale inoltrata, deve essere nel formato
tcp: |
removeReverse
public static void removeReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec)
Rimuovi un'inversione di porta tra una porta remota e una locale.
| Parametri |
adbSockAddr |
InetSocketAddress: l'indirizzo socket a cui connettersi ad ADB |
device |
IDevice: il dispositivo su cui rimuovere l'inversione della porta |
remotePortSpec |
String: specifica della porta remota invertita in uno dei seguenti valori: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(solo remoto) |
root
public static void root (InetSocketAddress adbSockAddr,
IDevice device)
Chiedi al demone adb di diventare root sul dispositivo. Questa operazione potrebbe non riuscire in modo invisibile e può avere esito positivo
solo nelle build per sviluppatori. Per ulteriori informazioni, vedi "adb root". Se devi sapere se l'operazione è riuscita,
puoi controllare il risultato di executeRemoteCommand su "echo \$USER_ID". Se è 0, adbd è
in esecuzione come root.
| Parametri |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
setDevice
public static void setDevice (SocketChannel adbChan,
IDevice device)
Dato un IDevice, recupera il numero di serie e indica ad ADB di comunicare con quel dispositivo.
| Parametri |
adbChan |
SocketChannel: la connessione socket ad ADB. |
device |
IDevice: il dispositivo con cui parlare. |
setDevice
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)
indica ad adb di comunicare con un dispositivo specifico
| Parametri |
adbChan |
SocketChannel: la connessione socket ad ADB |
deviceSerialNumber |
String: il numero di serie del dispositivo con cui comunicare. Se è null, il dispositivo predefinito
selezionato è quello scelto da adb. |
scrivere
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)
Scrivi fino a quando non vengono scritti tutti i dati in "data", viene raggiunta la lunghezza facoltativa, il timeout
scade o la connessione non riesce. Restituisce "true" se tutti i dati sono stati scritti.
| Parametri |
chan |
SocketChannel: il socket aperto in cui scrivere. |
data |
byte: il buffer da inviare. |
length |
int: la lunghezza da scrivere o -1 per inviare l'intero buffer. |
timeout |
int: il valore di timeout. Un timeout pari a zero significa "attendi per sempre". |
| Lanci |
TimeoutException |
in caso di timeout della connessione. |
|
in caso di errore I/O sulla connessione. |
scrivere
public static void write (SocketChannel chan,
byte[] data)
Scrivi finché tutti i dati in "data" non vengono scritti o la connessione non va a buon fine o scade.
Viene utilizzato il valore di timeout predefinito.
| Parametri |
chan |
SocketChannel: il socket aperto in cui scrivere. |
data |
byte: il buffer da inviare. |
| Lanci |
TimeoutException |
in caso di timeout della connessione. |
|
in caso di errore I/O sulla connessione. |