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() deve essere chiamato prima di qualsiasi altra operazione.

Riepilogo

Classi nidificate

interface AndroidDebugBridge.IDebugBridgeChangeListener

Le classi che implementano questa interfaccia forniscono un metodo che gestisce le modifiche 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 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 è connesso, disconnesso o quando le sue proprietà o il suo elenco ERROR(/ClientImpl) sono cambiati, inviando uno dei messaggi definiti nell'interfaccia IDeviceChangeListener.

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 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 void deviceChanged(IDevice device, int changeMask)

Notificare all'ascoltatore un IDevice modificato.

static void deviceConnected(IDevice device)

Notifica all'ascoltatore un nuovo IDevice.

static void deviceDisconnected(IDevice device)

Notifica all'ascoltatore che IDevice è stato disconnesso.

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.

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<List<AdbDevice>> 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(), con la possibilità di trasmettere un insieme personalizzato di variabili di ambiente.

static void init(boolean useLibusb, Map<String, String> env)

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

static void init()

Inizializza la libreria ddm.

static void initIfNeeded()

Inizializza la libreria solo se necessario; deprecata per gli 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 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 ERROR(/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

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 è connesso, disconnesso o quando le sue proprietà o il suo elenco ERROR(/ClientImpl) sono cambiati, inviando uno dei messaggi definiti nell'interfaccia IDeviceChangeListener.

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

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

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

createBridge

public static AndroidDebugBridge createBridge (long timeout, 
                TimeUnit unit)

Crea un AndroidDebugBridge non collegato a nessun eseguibile specifico.

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

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

Parametri
timeout long

unit TimeUnit

Resi
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.

Resi
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 prevede che adb sia in esecuzione. Non sarà in grado di avviare/interrompere/riavviare adb.

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

Resi
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)

Notificare all'ascoltatore 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: il valore di IDevice modificato.

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 accedano potenzialmente 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 ed elimina l'oggetto. Dovrà essere creato un nuovo oggetto con createBridge(String,boolean).

Viene arrestato anche il server host adb corrente.

disconnectBridge

public static boolean disconnectBridge (long timeout, 
                TimeUnit unit)

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

Viene arrestato anche il server host adb corrente.

Parametri
timeout long

unit TimeUnit

Resi
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

Resi
ListenableFuture<AdbVersion>

getBridge

public static AndroidDebugBridge getBridge ()

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

Resi
AndroidDebugBridge

getConnectionAttemptCount

public int getConnectionAttemptCount ()

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

Resi
int

getDebugBridgeChangeListenerCount

public static int getDebugBridgeChangeListenerCount ()

Resi
int

getDeviceChangeListenerCount

public static int getDeviceChangeListenerCount ()

Resi
int

getDevices

public IDevice[] getDevices ()

Restituisce i dispositivi.

Resi
IDevice[]

getRawDeviceList

public ListenableFuture<List<AdbDevice>> getRawDeviceList ()

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

Resi
ListenableFuture<List<AdbDevice>>

getRestartAttemptCount

public int getRestartAttemptCount ()

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

Resi
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 quello 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 è abilitata, questo metodo eseguirà automaticamente il fallback all'implementazione legacy senza tentare di connettersi ad ADB.

Resi
InetSocketAddress

getVirtualDeviceId

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

Parametri
service ListeningExecutorService

adb File

device IDevice

Resi
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.

Resi
boolean

init

public static void init (AdbInitOptions options)

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

Parametri
options AdbInitOptions

init

public static void init (boolean useLibusb, 
                Map<String, String> env)

Simile a init(), con la possibilità di attivare libusb e passare un insieme personalizzato di env. come la codifica one-hot delle variabili categoriche.

Parametri
useLibusb boolean

env Map

init

public static void init ()

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().

initIfNeeded

public static void initIfNeeded ()

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

Vedi anche:

isConnected

public boolean isConnected ()

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

Resi
boolean

isUserManagedAdbMode

public static boolean isUserManagedAdbMode ()

Resi
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.

Resi
SocketChannel una presa connessa in caso di esito positivo

Genera
IOException in caso di errori all'apertura della connessione

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 ERROR(/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

Resi
boolean true se successo.

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.

Resi
boolean true se successo.

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

Resi
boolean true se successo

chiudere

public static void terminate ()

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