AdbHelper
public
final
class
AdbHelper
extends Object
| java.lang.Object
|
| ↳ |
com.android.tradefed.device.server.AdbHelper
|
Classe d'assistance pour gérer les requêtes et les connexions à adb.
AndroidDebugBridge est l'API publique permettant de se connecter à adb, tandis que AdbHelper effectue les opérations de bas niveau.
Il utilise actuellement des E/S non bloquantes avec spin-wait. Un sélecteur serait plus efficace, mais semble excessif pour ce que nous faisons ici.
Résumé
Méthodes publiques |
static
void
|
createForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec, String remotePortSpec)
Crée un transfert de port entre un port local et un port distant.
|
static
AdbCommandRejectedException
|
createHiddenException(String message, boolean errorDuringDeviceSelection)
|
static
AdbCommandRejectedException
|
createHiddenException(String message)
|
static
byte[]
|
createJdwpForwardRequest(int pid)
Crée une demande de transfert de port vers un processus JDWP.
|
static
SocketChannel
|
createPassThroughConnection(InetSocketAddress adbSockAddr, String deviceSerialNumber, int pid)
Crée et connecte un nouveau socket direct, de l'hôte à un port de l'appareil.
|
static
void
|
createReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec, String localPortSpec)
Crée une inversion de port entre un port distant et un port local.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Exécute une commande shell sur l'appareil et récupère le résultat.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, AdbHelper.AdbService adbService, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits, InputStream is)
Exécute une commande à distance sur l'appareil et récupère le résultat.
|
static
void
|
executeRemoteCommand(InetSocketAddress adbSockAddr, String command, IDevice device, IShellOutputReceiver rcvr, long maxTimeout, long maxTimeToOutputResponse, TimeUnit maxTimeUnits)
Exécute une commande shell sur l'appareil et récupère le résultat.
|
static
byte[]
|
formAdbRequest(String payloadString)
Créez une chaîne ASCII précédée de quatre chiffres hexadécimaux.
|
static
String
|
getFeatures(IDevice device)
Interroge un ensemble de fonctionnalités compatibles de l'appareil.
|
static
RawImage
|
getFrameBuffer(InetSocketAddress adbSockAddr, IDevice device, long timeout, TimeUnit unit)
Récupère le tampon de frame de l'appareil avec le délai d'attente spécifié.
|
static
String
|
getHostFeatures()
Interroge un ensemble de fonctionnalités compatibles à partir de l'hôte ADB.
|
static
SocketChannel
|
open(InetSocketAddress adbSockAddr, IDevice device, int devicePort)
Créez et connectez un nouveau socket direct, de l'hôte à un port de l'appareil.
|
static
SocketChannel
|
rawAdbService(InetSocketAddress socketAddress, IDevice device, String command, AdbHelper.AdbService service)
Appelez le service sur un appareil distant.
|
static
SocketChannel
|
rawExec(InetSocketAddress socketAddress, IDevice device, String executable, String[] parameters)
Appelez le service host:exec sur un appareil distant.
|
static
AdbHelper.AdbResponse
|
readAdbResponse(SocketChannel chan, boolean readDiagString)
Lit la réponse d'ADB après une commande.
|
static
void
|
reboot(String into, InetSocketAddress adbSockAddr, IDevice device)
Redémarrez l'appareil.
|
static
void
|
removeForward(InetSocketAddress adbSockAddr, IDevice device, String localPortSpec)
Supprimez un transfert de port entre un port local et un port distant.
|
static
void
|
removeReverse(InetSocketAddress adbSockAddr, IDevice device, String remotePortSpec)
Supprimez l'inversion de port entre un port distant et un port local.
|
static
void
|
root(InetSocketAddress adbSockAddr, IDevice device)
Demandez au démon adb de devenir root sur l'appareil.
|
static
void
|
setDevice(SocketChannel adbChan, IDevice device)
Étant donné un IDevice, récupérez le numéro de série et demandez à adb de communiquer avec cet appareil.
|
static
void
|
setDevice(SocketChannel adbChan, String deviceSerialNumber)
indique à adb de communiquer avec un appareil spécifique.
|
static
void
|
write(SocketChannel chan, byte[] data, int length, int timeout)
Écrivez jusqu'à ce que toutes les données de "data" soient écrites, que la longueur facultative soit atteinte, que le délai expire ou que la connexion échoue.
|
static
void
|
write(SocketChannel chan, byte[] data)
Écrit jusqu'à ce que toutes les données de "data" soient écrites, ou que la connexion échoue ou expire.
|
Constantes
HOST_TRANSPORT
public static final String HOST_TRANSPORT
Valeur constante :
"host:transport:"
Champs
DEFAULT_CHARSET
public static final Charset DEFAULT_CHARSET
Méthodes publiques
createForward
public static void createForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec,
String remotePortSpec)
Crée un transfert de port entre un port local et un port distant.
| Paramètres |
adbSockAddr |
InetSocketAddress : adresse du socket pour se connecter à adb |
device |
IDevice : appareil sur lequel effectuer la redirection de port |
localPortSpec |
String : spécification du port local à transférer, au format tcp: |
remotePortSpec |
String : spécification du port distant vers lequel transférer, l'un des suivants : tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(distant uniquement) |
createHiddenException
public static AdbCommandRejectedException createHiddenException (String message,
boolean errorDuringDeviceSelection)
| Paramètres |
message |
String |
errorDuringDeviceSelection |
boolean |
createJdwpForwardRequest
public static byte[] createJdwpForwardRequest (int pid)
Crée une demande de transfert de port vers un processus JDWP. Cela renvoie un tableau contenant "####jwdp:{pid}".
| Paramètres |
pid |
int : PID du processus jdwp sur l'appareil. |
createPassThroughConnection
public static SocketChannel createPassThroughConnection (InetSocketAddress adbSockAddr,
String deviceSerialNumber,
int pid)
Crée et connecte un nouveau socket direct, de l'hôte à un port de l'appareil.
| Paramètres |
deviceSerialNumber |
String : numéro de série de l'appareil auquel se connecter. Peut être nul ou vide, auquel cas la connexion se fera au premier appareil disponible. |
pid |
int : PID du processus auquel se connecter. |
createReverse
public static void createReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec,
String localPortSpec)
Crée une inversion de port entre un port distant et un port local.
| Paramètres |
adbSockAddr |
InetSocketAddress : adresse du socket pour se connecter à adb |
device |
IDevice : appareil sur lequel inverser les ports |
remotePortSpec |
String : spécification du port distant à inverser, l'un des suivants : tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(distant uniquement) |
localPortSpec |
String : spécification du port local, doit être au format tcp: |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Exécute une commande shell sur l'appareil et récupère le résultat. Le résultat est transmis à rcvr dès qu'il est disponible.
| Paramètres |
adbSockAddr |
InetSocketAddress : ERROR(/InetSocketAddress) à adb. |
command |
String : commande shell à exécuter |
device |
IDevice : IDevice sur lequel exécuter la commande. |
rcvr |
IShellOutputReceiver : IShellOutputReceiver qui recevra la sortie de la commande shell |
maxTimeToOutputResponse |
long : durée maximale entre les sorties de commandes. Si plus de temps s'écoule entre les sorties de commande, la méthode génère ShellCommandUnresponsiveException. Une valeur de 0 signifie que la méthode attendra indéfiniment la sortie de la commande et ne générera jamais d'exception. |
maxTimeUnits |
TimeUnit : unités pour les valeurs maxTimeToOutputResponse non nulles. |
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
AdbHelper.AdbService adbService,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits,
InputStream is)
Exécute une commande à distance sur l'appareil et récupère le résultat. Le résultat est transmis à rcvr dès qu'il est disponible. La commande est exécutée par le service à distance identifié par le paramètre adbService.
| Paramètres |
adbSockAddr |
InetSocketAddress : ERROR(/InetSocketAddress) à adb. |
adbService |
AdbHelper.AdbService : AdbHelper.AdbService à utiliser pour exécuter la commande. |
command |
String : commande shell à exécuter |
device |
IDevice : IDevice sur lequel exécuter la commande. |
rcvr |
IShellOutputReceiver : IShellOutputReceiver qui recevra la sortie de la commande shell |
maxTimeout |
long : délai avant expiration maximal pour l'exécution de la commande complète. Une valeur de 0 signifie qu'il n'y a pas de délai d'expiration. |
maxTimeToOutputResponse |
long : durée maximale entre les sorties de commandes. Si plus de temps s'écoule entre les sorties de commande, la méthode génère ShellCommandUnresponsiveException. Une valeur de 0 signifie que la méthode attendra indéfiniment la sortie de la commande et ne générera jamais d'exception. |
maxTimeUnits |
TimeUnit : unités pour les valeurs non nulles maxTimeout et maxTimeToOutputResponse. |
is |
InputStream : ERROR(/InputStream) facultatif à diffuser après l'appel de la commande et avant la récupération de la réponse. |
executeRemoteCommand
public static void executeRemoteCommand (InetSocketAddress adbSockAddr,
String command,
IDevice device,
IShellOutputReceiver rcvr,
long maxTimeout,
long maxTimeToOutputResponse,
TimeUnit maxTimeUnits)
Exécute une commande shell sur l'appareil et récupère le résultat. Le résultat est transmis à rcvr dès qu'il est disponible.
| Paramètres |
adbSockAddr |
InetSocketAddress : ERROR(/InetSocketAddress) à adb. |
command |
String : commande shell à exécuter |
device |
IDevice : IDevice sur lequel exécuter la commande. |
rcvr |
IShellOutputReceiver : IShellOutputReceiver qui recevra la sortie de la commande shell |
maxTimeout |
long : durée maximale avant que la commande ne renvoie un résultat. Une valeur de 0 signifie qu'aucun délai maximal ne sera appliqué. |
maxTimeToOutputResponse |
long : durée maximale entre les sorties de commandes. Si plus de temps s'écoule entre les sorties de commande, la méthode génère ShellCommandUnresponsiveException. Une valeur de 0 signifie que la méthode attendra indéfiniment la sortie de la commande et ne générera jamais d'exception. |
maxTimeUnits |
TimeUnit : unités pour les valeurs non nulles maxTimeout et maxTimeToOutputResponse. |
public static byte[] formAdbRequest (String payloadString)
Créez une chaîne ASCII précédée de quatre chiffres hexadécimaux. Les quatre premiers caractères "####" correspondent à la longueur du reste de la chaîne, encodée en hexadécimal ASCII (la casse n'a pas d'importance).
| Paramètres |
payloadString |
String |
getFeatures
public static String getFeatures (IDevice device)
Interroge un ensemble de fonctionnalités compatibles de l'appareil.
| Paramètres |
device |
IDevice : appareil sur lequel effectuer la redirection de port |
getFrameBuffer
public static RawImage getFrameBuffer (InetSocketAddress adbSockAddr,
IDevice device,
long timeout,
TimeUnit unit)
Récupère le tampon de frame de l'appareil avec le délai d'attente spécifié. Un délai d'expiration de 0 indique qu'il attendra indéfiniment.
| Paramètres |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
timeout |
long |
unit |
TimeUnit |
getHostFeatures
public static String getHostFeatures ()
Interroge un ensemble de fonctionnalités compatibles à partir de l'hôte ADB.
développer
public static SocketChannel open (InetSocketAddress adbSockAddr,
IDevice device,
int devicePort)
Créez et connectez un nouveau socket direct, de l'hôte à un port de l'appareil.
| Paramètres |
device |
IDevice : appareil auquel se connecter. Peut être nul, auquel cas la connexion se fera au premier appareil disponible. |
devicePort |
int : port que nous ouvrons. |
rawAdbService
public static SocketChannel rawAdbService (InetSocketAddress socketAddress,
IDevice device,
String command,
AdbHelper.AdbService service)
Appelez le service sur un appareil distant. Renvoie un canal de socket connecté au processus d'exécution.
ddlmib renonce à la propriété du SocketChannel renvoyé et doit être explicitement fermé après utilisation.
| Paramètres |
device |
IDevice : appareil auquel se connecter. Peut être nul, auquel cas la connexion se fera au premier appareil disponible. |
command |
String : commande à exécuter |
service |
AdbHelper.AdbService : AdbHelper.AdbService à utiliser pour exécuter la commande. |
rawExec
public static SocketChannel rawExec (InetSocketAddress socketAddress,
IDevice device,
String executable,
String[] parameters)
Appelez le service host:exec sur un appareil distant. Renvoie un canal de socket connecté au processus d'exécution. Notez que le service d'exécution ne fait pas la différence entre stdout et stderr. Par conséquent, tout ce qui est lu à partir du socket peut provenir de l'une ou l'autre des sorties et être entrelacé.
ddlmib renonce à la propriété du SocketChannel renvoyé et doit être explicitement fermé après utilisation.
| Paramètres |
device |
IDevice : appareil auquel se connecter. Peut être nul, auquel cas la connexion se fera au premier appareil disponible. |
executable |
String : chemin absolu de l'exécutable à exécuter |
parameters |
String : paramètres à obtenir lors de l'exécution de l'exécutable |
readAdbResponse
public static AdbHelper.AdbResponse readAdbResponse (SocketChannel chan,
boolean readDiagString)
Lit la réponse d'ADB après une commande.
| Paramètres |
chan |
SocketChannel : canal de socket connecté à adb. |
readDiagString |
boolean : si la valeur est "true", nous attendons une réponse "OK" suivie d'une chaîne de diagnostic. Sinon, nous nous attendons à ce que la chaîne de diagnostic suive uniquement un échec. |
| Génère |
TimeoutException |
en cas de délai d'expiration de la connexion. |
|
en cas d'erreur d'E/S sur la connexion. |
redémarrer
public static void reboot (String into,
InetSocketAddress adbSockAddr,
IDevice device)
Redémarrez l'appareil.
| Paramètres |
into |
String : mode de redémarrage (récupération, bootloader). ou "null" pour simplement redémarrer. |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
removeForward
public static void removeForward (InetSocketAddress adbSockAddr,
IDevice device,
String localPortSpec)
Supprimez un transfert de port entre un port local et un port distant.
| Paramètres |
adbSockAddr |
InetSocketAddress : adresse du socket pour se connecter à adb |
device |
IDevice : appareil sur lequel supprimer la redirection de port |
localPortSpec |
String : spécification du port local qui a été transféré, doit être au format
tcp: |
removeReverse
public static void removeReverse (InetSocketAddress adbSockAddr,
IDevice device,
String remotePortSpec)
Supprimez l'inversion de port entre un port distant et un port local.
| Paramètres |
adbSockAddr |
InetSocketAddress : adresse du socket pour se connecter à adb |
device |
IDevice : appareil sur lequel supprimer l'inversion de port |
remotePortSpec |
String : spécification du port distant inversé, l'un des suivants : tcp:
localabstract: localreserved:
localfilesystem: dev: jdwp:
(remote only) |
racine
public static void root (InetSocketAddress adbSockAddr,
IDevice device)
Demandez au démon adb de devenir root sur l'appareil. Cette opération peut échouer silencieusement et ne peut réussir que sur les versions pour les développeurs. Pour en savoir plus, consultez "adb root". Si vous avez besoin de savoir si l'opération a réussi, vous pouvez vérifier le résultat de executeRemoteCommand sur "echo \$USER_ID". Si la valeur est 0, cela signifie qu'adbd s'exécute en tant que root.
| Paramètres |
adbSockAddr |
InetSocketAddress |
device |
IDevice |
setDevice
public static void setDevice (SocketChannel adbChan,
IDevice device)
Étant donné un IDevice, récupérez le numéro de série et demandez à adb de communiquer avec cet appareil.
| Paramètres |
adbChan |
SocketChannel : connexion du socket à adb. |
device |
IDevice : appareil auquel parler. |
setDevice
public static void setDevice (SocketChannel adbChan,
String deviceSerialNumber)
indique à adb de communiquer avec un appareil spécifique.
| Paramètres |
adbChan |
SocketChannel : connexion socket à adb |
deviceSerialNumber |
String : numéro de série de l'appareil avec lequel communiquer. Si la valeur est "null", l'appareil par défaut sélectionné est celui choisi par adb. |
à écrire
public static void write (SocketChannel chan,
byte[] data,
int length,
int timeout)
Écrivez jusqu'à ce que toutes les données de "data" soient écrites, que la longueur facultative soit atteinte, que le délai expire ou que la connexion échoue. Renvoie "true" si toutes les données ont été écrites.
| Paramètres |
chan |
SocketChannel : socket ouvert dans lequel écrire. |
data |
byte : tampon à envoyer. |
length |
int : longueur à écrire ou -1 pour envoyer l'intégralité du tampon. |
timeout |
int : valeur du délai d'inactivité. Un délai avant expiration de zéro signifie "attendre indéfiniment". |
| Génère |
TimeoutException |
en cas de délai d'expiration de la connexion. |
|
en cas d'erreur d'E/S sur la connexion. |
à écrire
public static void write (SocketChannel chan,
byte[] data)
Écrit jusqu'à ce que toutes les données de "data" soient écrites, ou que la connexion échoue ou expire.
Cette option utilise la valeur de délai avant expiration par défaut.
| Paramètres |
chan |
SocketChannel : socket ouvert dans lequel écrire. |
data |
byte : tampon à envoyer. |
| Génère |
TimeoutException |
en cas de délai d'expiration de la connexion. |
|
en cas d'erreur d'E/S sur la connexion. |