AdbHelper
public
final
class
AdbHelper
extends Object
| java.lang.Object
|
| ↳ |
com.android.tradefed.device.server.AdbHelper
|
Classe auxiliar para processar solicitações e conexões com o adb.
AndroidDebugBridge é a API pública para conexão com o adb, enquanto AdbHelper
faz o trabalho de nível baixo.
Atualmente, isso usa E/S não bloqueadora de espera em loop. Um seletor seria mais eficiente, mas parece exagero para o que estamos fazendo aqui.
Resumo
Métodos públicos |
static
void
|
createForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec)
Cria um encaminhamento de porta entre uma porta local e uma remota.
|
static
AdbCommandRejectedException
|
createHiddenException(String message, boolean errorDuringDeviceSelection)
|
static
AdbCommandRejectedException
|
createHiddenException(String message)
|
static
byte[]
|
createJdwpForwardRequest(int pid)
Cria uma solicitação de encaminhamento de porta para um processo jdwp.
|
static
SocketChannel
|
createPassThroughConnection(InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid)
Cria e conecta um novo soquete de passagem do host a uma porta no dispositivo.
|
static
void
|
createReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec)
Cria uma inversão de porta entre uma porta remota e uma local.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Executa um comando do shell no dispositivo e recupera a saída.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is)
Executa um comando remoto no dispositivo e recupera a saída.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Executa um comando do shell no dispositivo e recupera a saída.
|
static
byte[]
|
formAdbRequest(String payloadString)
Crie uma string ASCII precedida por quatro dígitos hexadecimais.
|
static
String
|
getFeatures(IDevice device)
Consulta um conjunto de recursos compatíveis do dispositivo.
|
static
RawImage
|
getFrameBuffer(InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit)
Recupera o buffer de frame do dispositivo com o tempo limite especificado.
|
static
String
|
getHostFeatures()
Consulta um conjunto de recursos compatíveis do host ADB.
|
static
SocketChannel
|
open(InetSocketAddress adbSockAddr, IDevice device, int devicePort)
Crie e conecte um novo soquete de passagem do host a uma porta no dispositivo.
|
static
SocketChannel
|
rawAdbService(InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service)
Invocar o serviço em um dispositivo remoto.
|
static
SocketChannel
|
rawExec(InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters)
Invoca o serviço host:exec em um dispositivo remoto.
|
static
AdbHelper.AdbResponse
|
readAdbResponse(SocketChannel chan, boolean readDiagString)
Lê a resposta do ADB após um comando.
|
static
void
|
reboot(String into, InetSocketAddress adbSockAddr, IDevice device)
Reinicialize o dispositivo.
|
static
void
|
removeForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec)
Remove um encaminhamento de porta entre uma porta local e uma remota.
|
static
void
|
removeReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec)
Remova uma inversão de porta entre uma porta remota e uma local.
|
static
void
|
root(InetSocketAddress adbSockAddr, IDevice device)
Peça ao daemon adb para se tornar root no dispositivo.
|
static
void
|
setDevice(SocketChannel adbChan, IDevice device)
Dado um IDevice, pegue o número de série e diga ao adb para se comunicar com esse dispositivo.
|
static
void
|
setDevice(SocketChannel adbChan, String deviceSerialNumber)
diz ao adb para se comunicar com um dispositivo específico
|
static
void
|
write(SocketChannel chan, byte[] data, int length, int timeout)
Grave até que todos os dados em "data" sejam gravados, o comprimento opcional seja atingido, o tempo limite expire ou a conexão falhe.
|
static
void
|
write(SocketChannel chan, byte[] data)
Grave até que todos os dados em "data" sejam gravados ou a conexão falhe ou atinja o tempo limite.
|
Constantes
HOST_TRANSPORT
public static final String HOST_TRANSPORT
Valor da constante:
"host:transport:"
Campos
DEFAULT_CHARSET
public static final Charset DEFAULT_CHARSET
Métodos públicos
createForward
public static void createForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec,
String remotePortSpec)
Cria um encaminhamento de porta entre uma porta local e uma remota.
| Parâmetros |
adbSockAddr |
InetSocketAddress: o endereço de soquete para se conectar ao adb |
device |
IDevice: o dispositivo em que o encaminhamento de porta será feito |
localPortSpec |
String: especificação da porta local a ser encaminhada, deve estar no formato
tcp: |
remotePortSpec |
String: especificação da porta remota para encaminhar, uma das seguintes opções: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(somente remoto) |
createHiddenException
public static AdbCommandRejectedException createHiddenException (String message,
boolean errorDuringDeviceSelection)
| Parâmetros |
message |
String |
errorDuringDeviceSelection |
boolean |
createJdwpForwardRequest
public static byte[] createJdwpForwardRequest (int pid)
Cria uma solicitação de encaminhamento de porta para um processo jdwp. Isso retorna uma matriz que contém "####jwdp:{pid}".
| Parâmetros |
pid |
int: o PID do processo jdwp no dispositivo. |
createPassThroughConnection
public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr,
String deviceSerialNumber,
int pid)
Cria e conecta um novo soquete de passagem do host a uma porta no dispositivo.
| Parâmetros |
deviceSerialNumber |
String: o número de série do dispositivo a ser conectado. Pode ser nulo ou vazio. Nesse caso, a conexão será feita com o primeiro dispositivo disponível. |
pid |
int: o PID do processo a ser conectado. |
createReverse
public static void createReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec,
String localPortSpec)
Cria uma inversão de porta entre uma porta remota e uma local.
| Parâmetros |
adbSockAddr |
InetSocketAddress: o endereço do soquete para se conectar ao adb |
device |
IDevice: o dispositivo em que a inversão de porta será feita |
remotePortSpec |
String: especificação da porta remota para reverter, uma das seguintes: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(somente remoto) |
localPortSpec |
String: especificação da porta local, que deve estar no formato tcp: |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Executa um comando do shell no dispositivo e recupera a saída. A saída é entregue a
rcvr assim que chega.
| Parâmetros |
adbSockAddr |
InetSocketAddress: o ERROR(/InetSocketAddress) para adb. |
command |
String: o comando do shell a ser executado |
device |
IDevice: o IDevice em que o comando será executado. |
rcvr |
IShellOutputReceiver: o IShellOutputReceiver que vai receber a saída do comando
do shell. |
maxTimeToOutputResponse |
long: tempo máximo entre a saída de comandos. Se mais tempo passar entre
a saída do comando, o método vai gerar ShellCommandUnresponsiveException. Um valor 0 significa que o método vai aguardar para sempre a saída do comando e nunca vai gerar uma exceção. |
maxTimeUnits |
TimeUnit: unidades para valores maxTimeToOutputResponse diferentes de zero. |
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
AdbHelper.AdbService adbService,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits,
InputStream is)
Executa um comando remoto no dispositivo e recupera a saída. A saída é entregue a
rcvr assim que chega. O comando é executado pelo serviço remoto identificado pelo parâmetro
adbService.
| Parâmetros |
adbSockAddr |
InetSocketAddress: o ERROR(/InetSocketAddress) para adb. |
adbService |
AdbHelper.AdbService: o AdbHelper.AdbService a ser usado para executar o comando. |
command |
String: o comando do shell a ser executado |
device |
IDevice: o IDevice em que o comando será executado. |
rcvr |
IShellOutputReceiver: o IShellOutputReceiver que vai receber a saída do comando
do shell. |
maxTimeout |
long: tempo limite máximo para a execução do comando completo. Um valor de 0 significa que não há tempo limite. |
maxTimeToOutputResponse |
long: tempo máximo entre a saída de comandos. Se mais tempo passar entre
a saída do comando, o método vai gerar ShellCommandUnresponsiveException. Um valor 0 significa que o método vai aguardar para sempre a saída do comando e nunca vai gerar uma exceção. |
maxTimeUnits |
TimeUnit: unidades para valores maxTimeout e maxTimeToOutputResponse diferentes de zero. |
is |
InputStream: um ERROR(/InputStream) opcional a ser transmitido após a invocação do comando e antes da recuperação da resposta. |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Executa um comando do shell no dispositivo e recupera a saída. A saída é entregue a
rcvr assim que chega.
| Parâmetros |
adbSockAddr |
InetSocketAddress: o ERROR(/InetSocketAddress) para adb. |
command |
String: o comando do shell a ser executado |
device |
IDevice: o IDevice em que o comando será executado. |
rcvr |
IShellOutputReceiver: o IShellOutputReceiver que vai receber a saída do comando
do shell. |
maxTimeout |
long: tempo máximo para o comando retornar. Um valor de 0 significa que nenhum tempo limite máximo será aplicado. |
maxTimeToOutputResponse |
long: tempo máximo entre a saída de comandos. Se mais tempo passar entre
a saída do comando, o método vai gerar ShellCommandUnresponsiveException. Um valor 0 significa que o método vai aguardar para sempre a saída do comando e nunca vai gerar uma exceção. |
maxTimeUnits |
TimeUnit: unidades para valores maxTimeout e maxTimeToOutputResponse diferentes de zero. |
public static byte[] formAdbRequest (String payloadString)
Crie uma string ASCII precedida por quatro dígitos hexadecimais. O "####" inicial é o comprimento do restante da string, codificado como hexadecimal ASCII (maiúsculas e minúsculas não importam).
| Parâmetros |
payloadString |
String |
getFeatures
public static String getFeatures (IDevice device)
Consulta um conjunto de recursos compatíveis do dispositivo.
| Parâmetros |
device |
IDevice: o dispositivo em que o encaminhamento de porta será feito |
getFrameBuffer
public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr,
IDevice device,
long timeout,
TimeUnit unit)
Recupera o buffer de frame do dispositivo com o tempo limite especificado. Um tempo limite de 0 indica que ele vai esperar para sempre.
| Parâmetros |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
timeout |
long |
unit |
TimeUnit |
getHostFeatures
public static String getHostFeatures ()
Consulta um conjunto de recursos compatíveis do host ADB.
abrir
public static SocketChannel open (InetSocketAddress adbSockAddr,
IDevice device,
int devicePort)
Crie e conecte um novo soquete de passagem do host a uma porta no dispositivo.
| Parâmetros |
device |
IDevice: o dispositivo a ser conectado. Pode ser nulo, caso em que a conexão será com o primeiro dispositivo disponível. |
devicePort |
int: a porta que estamos abrindo |
rawAdbService
public static SocketChannel rawAdbService (InetSocketAddress socketAddress,
IDevice device,
String command,
AdbHelper.AdbService service)
Invocar o serviço em um dispositivo remoto. Retorna um canal de soquete conectado ao
processo em execução.
ddlmib renuncia à propriedade do SocketChannel retornado e precisa ser fechado explicitamente após o uso.
| Parâmetros |
device |
IDevice: o dispositivo a ser conectado. Pode ser nulo, caso em que a conexão será com o primeiro dispositivo disponível. |
command |
String: o comando a ser executado |
service |
AdbHelper.AdbService: o AdbHelper.AdbService a ser usado para executar o comando. |
rawExec
public static SocketChannel rawExec (InetSocketAddress socketAddress,
IDevice device,
String executable,
String[] parameters)
Invoca o serviço host:exec em um dispositivo remoto. Retorna um canal de soquete conectado ao processo em execução. O serviço de execução não diferencia stdout e stderr. Portanto, o que é lido do soquete pode vir de qualquer saída e ser intercalado.
O ddlmib renuncia à propriedade do SocketChannel retornado e precisa ser fechado explicitamente após o uso.
| Parâmetros |
device |
IDevice: o dispositivo a ser conectado. Pode ser nulo, caso em que a conexão será com o primeiro dispositivo disponível. |
executable |
String: o caminho absoluto do executável a ser executado |
parameters |
String: os parâmetros a serem recebidos ao executar o executável |
readAdbResponse
public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan,
boolean readDiagString)
Lê a resposta do ADB após um comando.
| Parâmetros |
chan |
SocketChannel: o canal de soquete conectado ao adb. |
readDiagString |
boolean: se for verdadeiro, esperamos que uma resposta OKAY seja seguida por uma
string de diagnóstico. Caso contrário, esperamos que a string de diagnóstico siga uma falha. |
| Gera |
TimeoutException |
em caso de tempo limite na conexão. |
|
em caso de erro de E/S na conexão. |
reiniciar
public static void reboot (String into,
InetSocketAddress adbSockAddr,
IDevice device)
Reinicialize o dispositivo.
| Parâmetros |
into |
String: o que reiniciar (recuperação, carregador de inicialização). Ou nulo para apenas reiniciar. |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
removeForward
public static void removeForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec)
Remove um encaminhamento de porta entre uma porta local e uma remota.
| Parâmetros |
adbSockAddr |
InetSocketAddress: o endereço do soquete para se conectar ao adb |
device |
IDevice: o dispositivo em que o encaminhamento de porta será removido |
localPortSpec |
String: especificação da porta local encaminhada, que deve estar no formato
tcp: |
removeReverse
public static void removeReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec)
Remova uma inversão de porta entre uma porta remota e uma local.
| Parâmetros |
adbSockAddr |
InetSocketAddress: o endereço de soquete para se conectar ao adb |
device |
IDevice: o dispositivo em que a inversão de porta será removida |
remotePortSpec |
String: especificação da porta remota invertida para um destes: tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(somente remoto) |
raiz
public static void root (InetSocketAddress adbSockAddr,
IDevice device)
Peça ao daemon adb para se tornar root no dispositivo. Isso pode falhar silenciosamente e só vai funcionar
em builds de desenvolvedor. Consulte "adb root" para mais informações. Se você precisar saber se a operação foi bem-sucedida,
verifique o resultado de executeRemoteCommand em "echo \$USER_ID". Se for 0, o adbd estará
sendo executado como root.
| Parâmetros |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
setDevice
public static void setDevice (SocketChannel adbChan,
IDevice device)
Dado um IDevice, pegue o número de série e diga ao adb para se comunicar com esse dispositivo.
| Parâmetros |
adbChan |
SocketChannel: a conexão de soquete com o adb. |
device |
IDevice: o dispositivo com que você quer falar. |
setDevice
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)
diz ao adb para se comunicar com um dispositivo específico
| Parâmetros |
adbChan |
SocketChannel: a conexão de soquete com o adb |
deviceSerialNumber |
String: o número de série do dispositivo com que se comunicar. Se for nulo, o dispositivo padrão
selecionado será o escolhido pelo adb. |
escrever
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)
Grave até que todos os dados em "data" sejam gravados, o comprimento opcional seja atingido, o tempo limite expire ou a conexão falhe. Retorna "true" se todos os dados foram gravados.
| Parâmetros |
chan |
SocketChannel: o soquete aberto em que gravar. |
data |
byte: o buffer a ser enviado. |
length |
int: o comprimento a ser gravado ou -1 para enviar o buffer inteiro. |
timeout |
int: o valor de tempo limite. Um tempo limite de zero significa "esperar para sempre". |
| Gera |
TimeoutException |
em caso de tempo limite na conexão. |
|
em caso de erro de E/S na conexão. |
escrever
public static void write (SocketChannel chan,
byte[] data)
Grave até que todos os dados em "data" sejam gravados ou a conexão falhe ou atinja o tempo limite.
Isso usa o valor de tempo limite padrão.
| Parâmetros |
chan |
SocketChannel: o soquete aberto em que gravar. |
data |
byte: o buffer a ser enviado. |
| Gera |
TimeoutException |
em caso de tempo limite na conexão. |
|
em caso de erro de E/S na conexão. |