AndroidDebugBridge

public class AndroidDebugBridge
extends Object

java.lang.Object
   ↳ com.android.tradefed.device.server.AndroidDebugBridge


Una connessione ad Android Debug Bridge (ADB) lato host

Questo è il punto centrale per comunicare con qualsiasi dispositivo, emulatore o applicazione in esecuzione.

init(boolean) deve essere chiamato prima di qualsiasi altra operazione.

Riepilogo

Classi nidificate

interface AndroidDebugBridge.IClientChangeListener

Le classi che implementano questa interfaccia forniscono metodi che gestiscono le modifiche ClientImpl

interface AndroidDebugBridge.IDebugBridgeChangeListener

Le classi che implementano questa interfaccia forniscono un metodo che gestisce le modifiche di AndroidDebugBridge (inclusi i riavvii). 

interface AndroidDebugBridge.IDeviceChangeListener

Le classi che implementano questa interfaccia forniscono metodi che gestiscono l'aggiunta, l'eliminazione e le modifiche di IDevice

Costanti

int DEFAULT_START_ADB_TIMEOUT_MILLIS

Timeout predefinito utilizzato all'avvio del server ADB

Campi

public static final AdbVersion MIN_ADB_VERSION

Versione minima e massima di adb supportata.

Metodi pubblici

static void addClientChangeListener(AndroidDebugBridge.IClientChangeListener listener)

Aggiunge il listener alla raccolta di listener che riceveranno una notifica quando una proprietà ClientImpl cambia, inviando uno dei messaggi definiti nell'interfaccia IClientChangeListener.

static void addDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)

Aggiunge l'ascoltatore alla raccolta di ascoltatori che riceveranno una notifica quando viene connesso un nuovo AndroidDebugBridge, inviando uno dei messaggi definiti nell'interfaccia IDebugBridgeChangeListener.

static void addDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)

Aggiunge il listener alla raccolta di listener che riceveranno una notifica quando un IDevice viene connesso, disconnesso o quando le sue proprietà o il suo elenco ClientImpl sono cambiati, inviando uno dei messaggi definiti nell'interfaccia IDeviceChangeListener.

static void clientChanged(ClientImpl client, int changeMask)

Notifica all'ascoltatore di un ClientImpl modificato.

static AndroidDebugBridge createBridge(long timeout, TimeUnit unit)

Crea un AndroidDebugBridge non collegato a nessun eseguibile specifico.

static AndroidDebugBridge createBridge(String osLocation, boolean forceNewBridge)

Questo metodo è obsoleto. Questo metodo potrebbe bloccarsi se ADB non risponde. Utilizza invece createBridge(String, boolean, long, TimeUnit).

static AndroidDebugBridge createBridge()

Questo metodo è obsoleto. Questo metodo potrebbe bloccarsi se ADB non risponde. Utilizza invece createBridge(long, TimeUnit).

static AndroidDebugBridge createBridge(String osLocation, boolean forceNewBridge, long timeout, TimeUnit unit)

Crea un nuovo bridge di debug dalla posizione dello strumento a riga di comando.

static void deviceChanged(IDevice device, int changeMask)

Notifica all'ascoltatore di un IDevice modificato.

static void deviceConnected(IDevice device)

Notifica all'ascoltatore un nuovo IDevice.

static void deviceDisconnected(IDevice device)

Notifica all'ascoltatore la disconnessione di IDevice.

static void disableFakeAdbServerMode()
static void disconnectBridge()

Questo metodo è obsoleto. Questo metodo potrebbe bloccarsi se ADB non risponde. Utilizza invece disconnectBridge(long, TimeUnit).

static boolean disconnectBridge(long timeout, TimeUnit unit)

Scollega il bridge di debug corrente e distrugge l'oggetto.

static void enableFakeAdbServerMode(int port)
static ListenableFuture<AdbVersion> getAdbVersion(File adb)
static AndroidDebugBridge getBridge()

Restituisce il bridge di debug corrente.

static boolean getClientSupport()

Restituisce un valore che indica se ddmlib è configurato per supportare il monitoraggio e l'interazione con i ClientImpl in esecuzione sui IDevice.

int getConnectionAttemptCount()

Restituisce il numero di tentativi di connessione dell'oggetto AndroidDebugBridge al daemon adb.

static int getDebugBridgeChangeListenerCount()
static int getDeviceChangeListenerCount()
IDevice[] getDevices()

Restituisce i dispositivi.

ListenableFuture<> getRawDeviceList()

Restituisce l'insieme di dispositivi segnalati dalla riga di comando adb.

int getRestartAttemptCount()

Restituisce il numero di tentativi di riavvio del daemon adb dell'oggetto AndroidDebugBridge.

static InetSocketAddress getSocketAddress()

Questo metodo è obsoleto. Questo metodo restituisce un indirizzo del server di loopback che potrebbe non corrispondere a quello utilizzato dal server ADB. Ad esempio, la JVM potrebbe essere in modalità IPv4, mentre il server ADB è ospitato sull'indirizzo di loopback IPv6. Preferisci openConnection() quando apri una connessione al server ADB.

static ListenableFuture<String> getVirtualDeviceId(ListeningExecutorService service, File adb, IDevice device)
boolean hasInitialDeviceList()

Restituisce un valore che indica se il bridge ha acquisito l'elenco iniziale da adb dopo la creazione.

static void init(AdbInitOptions options)

Simile a init(boolean), con la possibilità di passare un insieme personalizzato di variabili di ambiente.

static void init(boolean clientSupport)

Inizializza la libreria ddm.

static void init(boolean clientSupport, boolean useLibusb, env)

Simile a init(boolean), con la possibilità di attivare libusb e passare un insieme personalizzato di env.

static void initIfNeeded(boolean clientSupport)

Inizializza la libreria solo se necessario; deprecata per utilizzi non di test.

boolean isConnected()

Restituisce un valore che indica se l'oggetto AndroidDebugBridge è ancora connesso al daemon adb.

static boolean isUserManagedAdbMode()
static SocketChannel openConnection()

Tenta di connettersi al server Android Debug Bridge locale.

static void removeClientChangeListener(AndroidDebugBridge.IClientChangeListener listener)

Rimuove il listener dalla raccolta di listener che riceveranno una notifica quando una proprietà ClientImpl cambia.

static void removeDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)

Rimuove il listener dalla raccolta di listener che riceveranno una notifica quando viene avviato un nuovo AndroidDebugBridge.

static void removeDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)

Rimuove il listener dalla raccolta di listener che riceveranno una notifica quando un IDevice viene connesso, disconnesso o quando le sue proprietà o il suo elenco di ClientImpl sono state modificate.

boolean restart(long timeout, TimeUnit unit)

Riavvia adb, ma non i servizi correlati.

boolean restart()

Questo metodo è obsoleto. Questo metodo potrebbe bloccarsi se ADB non risponde. Utilizza invece restart(long, TimeUnit).

boolean startAdb(long timeout, TimeUnit unit)

Avvia il server lato host adb.

static void terminate()

Termina la libreria ddm.

Costanti

DEFAULT_START_ADB_TIMEOUT_MILLIS

public static final int DEFAULT_START_ADB_TIMEOUT_MILLIS

Timeout predefinito utilizzato all'avvio del server ADB

Constant Value: 20000 (0x00004e20)

Campi

MIN_ADB_VERSION

public static final AdbVersion MIN_ADB_VERSION

Versione minima e massima di adb supportata. Corrisponde ad ADB_SERVER_VERSION trovato in //device/tools/adb/adb.h

Metodi pubblici

addClientChangeListener

public static void addClientChangeListener (AndroidDebugBridge.IClientChangeListener listener)

Aggiunge il listener alla raccolta di listener che riceveranno una notifica quando una proprietà ClientImpl cambia, inviando uno dei messaggi definiti nell'interfaccia IClientChangeListener.

Parametri
listener AndroidDebugBridge.IClientChangeListener: il listener a cui inviare la notifica.

addDebugBridgeChangeListener

public static void addDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)

Aggiunge l'ascoltatore alla raccolta di ascoltatori che riceveranno una notifica quando viene connesso un nuovo AndroidDebugBridge, inviando uno dei messaggi definiti nell'interfaccia IDebugBridgeChangeListener.

Parametri
listener AndroidDebugBridge.IDebugBridgeChangeListener: il listener a cui inviare la notifica.

addDeviceChangeListener

public static void addDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)

Aggiunge il listener alla raccolta di listener che riceveranno una notifica quando un IDevice viene connesso, disconnesso o quando le sue proprietà o il suo elenco ClientImpl sono cambiati, inviando uno dei messaggi definiti nell'interfaccia IDeviceChangeListener.

Parametri
listener AndroidDebugBridge.IDeviceChangeListener: il listener a cui inviare la notifica.

clientChanged

public static void clientChanged (ClientImpl client, 
                int changeMask)

Notifica all'ascoltatore di un ClientImpl modificato.

La notifica degli ascoltatori viene eseguita in un blocco sincronizzato. È importante aspettarsi che gli ascoltatori possano accedere a vari metodi di IDevice, nonché getDevices() che utilizzano serrature interne.

Parametri
client ClientImpl: il Client modificato.

changeMask int: la maschera che indica cosa è cambiato in Client

createBridge

public static AndroidDebugBridge createBridge (long timeout, 
                TimeUnit unit)

Crea un AndroidDebugBridge non collegato a nessun eseguibile specifico.

Questo bridge si aspetta che adb sia in esecuzione. Non sarà in grado di avviare/interrompere/riavviare adb.

Se un bridge è già stato avviato, viene restituito direttamente senza modifiche (in modo simile alla chiamata di getBridge()).

Parametri
timeout long

unit TimeUnit

Ritorni
AndroidDebugBridge un bridge connesso o null se si sono verificati errori durante la creazione o la connessione al bridge

createBridge

public static AndroidDebugBridge createBridge (String osLocation, 
                boolean forceNewBridge)

Questo metodo è obsoleto.
Questo metodo potrebbe bloccarsi se ADB non risponde. Utilizza invece createBridge(String, boolean, long, TimeUnit).

Crea un nuovo bridge di debug dalla posizione dello strumento a riga di comando.

Qualsiasi server esistente verrà disconnesso, a meno che la posizione non sia la stessa e forceNewBridge sia impostato su false.

Parametri
osLocation String: la posizione dello strumento a riga di comando "adb"

forceNewBridge boolean: forza la creazione di un nuovo bridge anche se ne esiste già uno con la stessa posizione.

Ritorni
AndroidDebugBridge un bridge connesso o null se si sono verificati errori durante la creazione o la connessione al bridge

createBridge

public static AndroidDebugBridge createBridge ()

Questo metodo è obsoleto.
Questo metodo potrebbe bloccarsi se ADB non risponde. Utilizza invece createBridge(long, TimeUnit).

Crea un AndroidDebugBridge non collegato a nessun eseguibile specifico.

Questo bridge si aspetta che adb sia in esecuzione. Non sarà in grado di avviare/interrompere/riavviare adb.

Se un bridge è già stato avviato, viene restituito direttamente senza modifiche (in modo simile alla chiamata di getBridge()).

Ritorni
AndroidDebugBridge un bridge connesso o null se si sono verificati errori durante la creazione o la connessione al bridge

createBridge

public static AndroidDebugBridge createBridge (String osLocation, 
                boolean forceNewBridge, 
                long timeout, 
                TimeUnit unit)

Crea un nuovo bridge di debug dalla posizione dello strumento a riga di comando.

Qualsiasi server esistente verrà disconnesso, a meno che la posizione non sia la stessa e forceNewBridge sia impostato su false.

Parametri
osLocation String: la posizione dello strumento a riga di comando "adb"

forceNewBridge boolean: forza la creazione di un nuovo bridge anche se ne esiste già uno con la stessa posizione.

timeout long: il tempo massimo di attesa

unit TimeUnit: l'unità di tempo dell'argomento timeout

Ritorni
AndroidDebugBridge un bridge connesso o null se si sono verificati errori durante la creazione o la connessione al bridge

deviceChanged

public static void deviceChanged (IDevice device, 
                int changeMask)

Notifica all'ascoltatore di un IDevice modificato.

La notifica degli ascoltatori viene eseguita in un blocco sincronizzato. È importante aspettarsi che gli ascoltatori possano accedere a vari metodi di IDevice, nonché getDevices() che utilizzano serrature interne.

Parametri
device IDevice: la IDevice modificata.

changeMask int

deviceConnected

public static void deviceConnected (IDevice device)

Notifica all'ascoltatore un nuovo IDevice.

La notifica degli ascoltatori viene eseguita in un blocco sincronizzato. È importante aspettarsi che gli ascoltatori possano accedere a vari metodi di IDevice, nonché getDevices() che utilizzano serrature interne.

Parametri
device IDevice: il nuovo IDevice.

deviceDisconnected

public static void deviceDisconnected (IDevice device)

Notifica all'ascoltatore la disconnessione di IDevice.

La notifica degli ascoltatori viene eseguita in un blocco sincronizzato. È importante aspettarsi che gli ascoltatori possano accedere a vari metodi di IDevice, nonché getDevices() che utilizzano serrature interne.

Parametri
device IDevice: il IDevice disconnesso.

disableFakeAdbServerMode

public static void disableFakeAdbServerMode ()

disconnectBridge

public static void disconnectBridge ()

Questo metodo è obsoleto.
Questo metodo potrebbe bloccarsi se ADB non risponde. Utilizza invece disconnectBridge(long, TimeUnit).

Scollega il bridge di debug corrente e distrugge l'oggetto. Dovrà essere creato un nuovo oggetto con createBridge(String, boolean).

In questo modo, viene arrestato anche il server host adb corrente.

disconnectBridge

public static boolean disconnectBridge (long timeout, 
                TimeUnit unit)

Scollega il bridge di debug corrente e distrugge l'oggetto. Dovrà essere creato un nuovo oggetto con createBridge(String, boolean).

In questo modo, viene arrestato anche il server host adb corrente.

Parametri
timeout long

unit TimeUnit

Ritorni
boolean true se il metodo ha esito positivo entro il timeout specificato.

enableFakeAdbServerMode

public static void enableFakeAdbServerMode (int port)

Parametri
port int

getAdbVersion

public static ListenableFuture<AdbVersion> getAdbVersion (File adb)

Parametri
adb File

Ritorni
ListenableFuture<AdbVersion>

getBridge

public static AndroidDebugBridge getBridge ()

Restituisce il bridge di debug corrente. Può essere null se non ne è stato creato nessuno.

Ritorni
AndroidDebugBridge

getClientSupport

public static boolean getClientSupport ()

Restituisce un valore che indica se ddmlib è configurato per supportare il monitoraggio e l'interazione con i ClientImpl in esecuzione sui IDevice.

Ritorni
boolean

getConnectionAttemptCount

public int getConnectionAttemptCount ()

Restituisce il numero di tentativi di connessione dell'oggetto AndroidDebugBridge al daemon adb.

Ritorni
int

getDebugBridgeChangeListenerCount

public static int getDebugBridgeChangeListenerCount ()

Ritorni
int

getDeviceChangeListenerCount

public static int getDeviceChangeListenerCount ()

Ritorni
int

getDevices

public IDevice[] getDevices ()

Restituisce i dispositivi.

Ritorni
IDevice[]

getRawDeviceList

public ListenableFuture<> getRawDeviceList ()

Restituisce l'insieme di dispositivi segnalati dalla riga di comando adb. Questa funzionalità è pensata principalmente per l'assistente alla connessione o altri strumenti di diagnostica che devono convalidare lo stato dell'elenco getDevices() tramite un altro canale. Il codice che deve solo accedere all'elenco dei dispositivi deve chiamare getDevices().

Ritorni
ListenableFuture<>

getRestartAttemptCount

public int getRestartAttemptCount ()

Restituisce il numero di tentativi di riavvio del daemon adb dell'oggetto AndroidDebugBridge.

Ritorni
int

getSocketAddress

public static InetSocketAddress getSocketAddress ()

Questo metodo è obsoleto.
Questo metodo restituisce un indirizzo del server di loopback che potrebbe non corrispondere a quello utilizzato dal server ADB. Ad esempio, la JVM potrebbe essere in modalità IPv4, mentre il server ADB è ospitato sull'indirizzo di loopback IPv6. Preferisci openConnection() quando apri una connessione al server ADB.

Restituisce l'indirizzo socket del server ADB sull'host.

Questo metodo tenterà di restituire un indirizzo socket noto per funzionare aprendo un canale socket al server ADB. Verrà tentato sia l'indirizzo di loopback IPv4 che IPv6. Nel caso in cui nessuno dei due riesca a connettersi, questo metodo tornerà a restituire l'indirizzo di loopback preferito dalla JVM. Questa logica di fallback è necessaria per evitare interruzioni dell'API.

Se la modalità server ADB fittizio è attivata, questo metodo eseguirà automaticamente il fallback all'implementazione legacy senza tentare di connettersi ad ADB.

Ritorni
InetSocketAddress

getVirtualDeviceId

public static ListenableFuture<String> getVirtualDeviceId (ListeningExecutorService service, 
                File adb, 
                IDevice device)

Parametri
service ListeningExecutorService

adb File

device IDevice

Ritorni
ListenableFuture<String>

hasInitialDeviceList

public boolean hasInitialDeviceList ()

Restituisce un valore che indica se il bridge ha acquisito l'elenco iniziale da adb dopo la creazione.

Chiamare getDevices() subito dopo createBridge(String, boolean) in genere restituisce un elenco vuoto. Ciò è dovuto al meccanismo di comunicazione asincrona interno con adb che non garantisce che l'elenco IDevice sia stato creato prima della chiamata a getDevices().

Il modo consigliato per ottenere l'elenco degli oggetti IDevice è creare un oggetto IDeviceChangeListener.

Ritorni
boolean

init

public static void init (AdbInitOptions options)

Simile a init(boolean), con la possibilità di passare un insieme personalizzato di variabili di ambiente.

Parametri
options AdbInitOptions

init

public static void init (boolean clientSupport)

Inizializza la libreria ddm.

Questo metodo deve essere chiamato una volta prima di qualsiasi chiamata a createBridge(String, boolean).

Anche le preferenze di ddmlib devono essere inizializzate con i valori predefiniti modificati rispetto a quelli predefiniti.

Quando l'applicazione viene chiusa, deve essere chiamato terminate().

Parametri
clientSupport boolean: indica se la libreria deve attivare il monitoraggio e l'interazione con le applicazioni in esecuzione sui dispositivi.

init

public static void init (boolean clientSupport, 
                boolean useLibusb, 
                 env)

Simile a init(boolean), con la possibilità di attivare libusb e passare un insieme personalizzato di variabili di ambiente.

Parametri
clientSupport boolean

useLibusb boolean

env

initIfNeeded

public static void initIfNeeded (boolean clientSupport)

Inizializza la libreria solo se necessario; deprecata per utilizzi non di test.

Parametri
clientSupport boolean: indica se la libreria deve attivare il monitoraggio e l'interazione con le applicazioni in esecuzione sui dispositivi.

Vedi anche:

isConnected

public boolean isConnected ()

Restituisce un valore che indica se l'oggetto AndroidDebugBridge è ancora connesso al daemon adb.

Ritorni
boolean

isUserManagedAdbMode

public static boolean isUserManagedAdbMode ()

Ritorni
boolean Se operi in modalità ADB gestita dall'utente in cui ddmlib non gestirà e non deve gestire il server ADB.

openConnection

public static SocketChannel openConnection ()

Tenta di connettersi al server Android Debug Bridge locale.

Ritorni
SocketChannel una presa connessa in caso di esito positivo

Lanci
in caso di errori all'apertura della connessione

removeClientChangeListener

public static void removeClientChangeListener (AndroidDebugBridge.IClientChangeListener listener)

Rimuove il listener dalla raccolta di listener che riceveranno una notifica quando una proprietà ClientImpl cambia.

Parametri
listener AndroidDebugBridge.IClientChangeListener: il listener che non deve più ricevere notifiche.

removeDebugBridgeChangeListener

public static void removeDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)

Rimuove il listener dalla raccolta di listener che riceveranno una notifica quando viene avviato un nuovo AndroidDebugBridge.

Parametri
listener AndroidDebugBridge.IDebugBridgeChangeListener: il listener che non deve più ricevere notifiche.

removeDeviceChangeListener

public static void removeDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)

Rimuove il listener dalla raccolta di listener che riceveranno una notifica quando un IDevice viene connesso, disconnesso o quando le sue proprietà o il suo elenco di ClientImpl sono state modificate.

Parametri
listener AndroidDebugBridge.IDeviceChangeListener: il listener che non deve più ricevere notifiche.

riavvia

public boolean restart (long timeout, 
                TimeUnit unit)

Riavvia adb, ma non i servizi correlati.

Parametri
timeout long

unit TimeUnit

Ritorni
boolean true se l'operazione è riuscita.

riavvia

public boolean restart ()

Questo metodo è obsoleto.
Questo metodo potrebbe bloccarsi se ADB non risponde. Utilizza invece restart(long, TimeUnit).

Riavvia adb, ma non i servizi correlati.

Ritorni
boolean true se l'operazione è riuscita.

startAdb

public boolean startAdb (long timeout, 
                TimeUnit unit)

Avvia il server lato host adb. Questo metodo non deve essere utilizzato quando si utilizza il server ADB gestito dall'utente, poiché il ciclo di vita del server deve essere gestito dall'utente, non da ddmlib.

Parametri
timeout long

unit TimeUnit

Ritorni
boolean true se success

terminare

public static void terminate ()

Termina la libreria ddm. Deve essere chiamato al termine dell'applicazione.