AndroidDebugBridge

public class AndroidDebugBridge
extends Object

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


Eine Verbindung zur Host-seitigen Android Debug Bridge (ADB)

Dies ist der zentrale Punkt für die Kommunikation mit Geräten, Emulatoren oder den darauf ausgeführten Anwendungen.

init() muss aufgerufen werden, bevor etwas anderes passiert.

Zusammenfassung

Verschachtelte Klassen

interface AndroidDebugBridge.IDebugBridgeChangeListener

Klassen, die diese Schnittstelle implementieren, bieten eine Methode, die sich mit AndroidDebugBridge-Änderungen (einschließlich Neustarts) befasst. 

interface AndroidDebugBridge.IDeviceChangeListener

Klassen, die diese Schnittstelle implementieren, bieten Methoden zum Hinzufügen, Löschen und Ändern von IDevice

Konstanten

int DEFAULT_START_ADB_TIMEOUT_MILLIS

Standard-Zeitlimit beim Starten des ADB-Servers

Felder

public static final AdbVersion MIN_ADB_VERSION

Mindest- und Höchstversion von ADB, die unterstützt werden.

Öffentliche Methoden

static void addDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)

Fügt den Listener der Sammlung von Listenern hinzu, die benachrichtigt werden, wenn ein neues AndroidDebugBridge verbunden wird. Dazu wird eine der im IDebugBridgeChangeListener-Interface definierten Nachrichten gesendet.

static void addDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)

Fügt den Listener der Sammlung von Listenern hinzu, die benachrichtigt werden, wenn ein IDevice verbunden oder getrennt wird oder wenn sich seine Eigenschaften oder seine ERROR(/ClientImpl)-Liste ändert. Dazu wird eine der im IDeviceChangeListener-Interface definierten Nachrichten gesendet.

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

Erstellt eine neue Debug-Bridge am Speicherort des Befehlszeilentools.

static AndroidDebugBridge createBridge(long timeout, TimeUnit unit)

Erstellt ein AndroidDebugBridge, das nicht mit einer bestimmten ausführbaren Datei verknüpft ist.

static AndroidDebugBridge createBridge(String osLocation, boolean forceNewBridge)

Diese Methode wurde eingestellt. Diese Methode kann hängen bleiben, wenn ADB nicht reagiert. Verwenden Sie stattdessen createBridge(String,boolean,long,TimeUnit).

static AndroidDebugBridge createBridge()

Diese Methode wurde eingestellt. Diese Methode kann hängen bleiben, wenn ADB nicht reagiert. Verwenden Sie stattdessen createBridge(long,TimeUnit).

static void deviceChanged(IDevice device, int changeMask)

Den Listener über eine geänderte IDevice benachrichtigen.

static void deviceConnected(IDevice device)

Benachrichtige den Zuhörer über eine neue IDevice.

static void deviceDisconnected(IDevice device)

Den Listener über eine getrennte IDevice benachrichtigen.

static void disableFakeAdbServerMode()
static void disconnectBridge()

Diese Methode wurde eingestellt. Diese Methode kann hängen bleiben, wenn ADB nicht reagiert. Verwenden Sie stattdessen disconnectBridge(long,TimeUnit).

static boolean disconnectBridge(long timeout, TimeUnit unit)

Trennt die aktuelle Debug-Bridge und zerstört das Objekt.

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

Gibt die aktuelle Debug-Bridge zurück.

int getConnectionAttemptCount()

Gibt die Anzahl der Versuche des AndroidDebugBridge-Objekts zurück, eine Verbindung zum ADB-Daemon herzustellen.

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

Gibt die Geräte zurück.

ListenableFuture<List<AdbDevice>> getRawDeviceList()

Gibt die Menge der Geräte zurück, die von der ADB-Befehlszeile gemeldet werden.

int getRestartAttemptCount()

Gibt die Anzahl der Versuche des AndroidDebugBridge-Objekts zurück, den ADB-Daemon neu zu starten.

static InetSocketAddress getSocketAddress()

Diese Methode wurde eingestellt. Diese Methode gibt eine Loopback-Serveradresse zurück, die möglicherweise nicht mit der vom ADB-Server verwendeten Adresse übereinstimmt. Das heißt, die JVM befindet sich möglicherweise im IPv4-Modus, während der ADB-Server auf der IPv6-Loopback-Adresse gehostet wird. Verwenden Sie stattdessen openConnection(), wenn Sie eine Verbindung zum ADB-Server öffnen.

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

Gibt zurück, ob die Bridge nach der Erstellung die erste Liste von adb abgerufen hat.

static void init(AdbInitOptions options)

Ähnlich wie bei init(), mit der Möglichkeit, einen benutzerdefinierten Satz von Umgebungsvariablen zu übergeben.

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

Ähnlich wie init(), mit der Möglichkeit, libusb zu aktivieren und eine benutzerdefinierte Umgebung zu übergeben.

static void init()

Initialisiert die ddm-Bibliothek.

static void initIfNeeded()

Die Bibliothek wurde nur bei Bedarf initialisiert. Die Verwendung für andere Zwecke als Tests ist nicht mehr zulässig.

boolean isConnected()

Gibt zurück, ob das AndroidDebugBridge-Objekt noch mit dem ADB-Daemon verbunden ist.

static boolean isUserManagedAdbMode()
static SocketChannel openConnection()

Es wird versucht, eine Verbindung zum lokalen Android Debug Bridge-Server herzustellen.

static void removeDebugBridgeChangeListener(AndroidDebugBridge.IDebugBridgeChangeListener listener)

Entfernt den Listener aus der Sammlung von Listenern, die benachrichtigt werden, wenn ein neuer AndroidDebugBridge gestartet wird.

static void removeDeviceChangeListener(AndroidDebugBridge.IDeviceChangeListener listener)

Entfernt den Listener aus der Sammlung von Listenern, die benachrichtigt werden, wenn ein IDevice verbunden oder getrennt wird oder wenn sich seine Eigenschaften oder seine ERROR(/ClientImpl)-Liste ändern.

boolean restart(long timeout, TimeUnit unit)

Startet adb neu, aber nicht die zugehörigen Dienste.

boolean restart()

Diese Methode wurde eingestellt. Diese Methode kann hängen bleiben, wenn ADB nicht reagiert. Verwenden Sie stattdessen restart(long,TimeUnit).

boolean startAdb(long timeout, TimeUnit unit)

Startet den ADB-Host-Server.

static void terminate()

Beendet die DDM-Bibliothek.

Konstanten

DEFAULT_START_ADB_TIMEOUT_MILLIS

public static final int DEFAULT_START_ADB_TIMEOUT_MILLIS

Standard-Zeitlimit beim Starten des ADB-Servers

Konstanter Wert: 20000 (0x00004e20)

Felder

MIN_ADB_VERSION

public static final AdbVersion MIN_ADB_VERSION

Mindest- und Höchstversion von ADB, die unterstützt werden. Das entspricht ADB_SERVER_VERSION in //device/tools/adb/adb.h.

Öffentliche Methoden

addDebugBridgeChangeListener

public static void addDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)

Fügt den Listener der Sammlung von Listenern hinzu, die benachrichtigt werden, wenn ein neues AndroidDebugBridge verbunden wird. Dazu wird eine der im IDebugBridgeChangeListener-Interface definierten Nachrichten gesendet.

Parameter
listener AndroidDebugBridge.IDebugBridgeChangeListener: Der Listener, der benachrichtigt werden soll.

addDeviceChangeListener

public static void addDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)

Fügt den Listener der Sammlung von Listenern hinzu, die benachrichtigt werden, wenn ein IDevice verbunden oder getrennt wird oder wenn sich seine Eigenschaften oder seine ERROR(/ClientImpl)-Liste ändert. Dazu wird eine der im IDeviceChangeListener-Interface definierten Nachrichten gesendet.

Parameter
listener AndroidDebugBridge.IDeviceChangeListener: Der Listener, der benachrichtigt werden soll.

createBridge

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

Erstellt eine neue Debug-Bridge am Speicherort des Befehlszeilentools.

Alle vorhandenen Server werden getrennt, sofern der Standort nicht derselbe ist und forceNewBridge auf „false“ gesetzt ist.

Parameter
osLocation String: Speicherort des Befehlszeilentools „adb“

forceNewBridge boolean: Erzwingt die Erstellung einer neuen Bridge, auch wenn bereits eine mit demselben Standort vorhanden ist.

timeout long: die maximale Wartezeit

unit TimeUnit: die Zeiteinheit des Arguments timeout

Gibt Folgendes zurück:
AndroidDebugBridge eine verbundene Bridge oder „null“, wenn beim Erstellen oder Herstellen einer Verbindung zur Bridge Fehler aufgetreten sind

createBridge

public static AndroidDebugBridge createBridge (long timeout, 
                TimeUnit unit)

Erstellt ein AndroidDebugBridge, das nicht mit einer bestimmten ausführbaren Datei verknüpft ist.

Für diese Bridge muss ADB ausgeführt werden. adb kann nicht gestartet, beendet oder neu gestartet werden.

Wenn eine Bridge bereits gestartet wurde, wird sie ohne Änderungen zurückgegeben (ähnlich wie beim Aufrufen von getBridge()).

Parameter
timeout long

unit TimeUnit

Gibt Folgendes zurück:
AndroidDebugBridge eine verbundene Bridge oder „null“, wenn beim Erstellen oder Herstellen einer Verbindung zur Bridge Fehler aufgetreten sind

createBridge

public static AndroidDebugBridge createBridge (String osLocation, 
                boolean forceNewBridge)

Diese Methode wurde eingestellt.
Diese Methode kann hängen bleiben, wenn ADB nicht reagiert. Verwenden Sie stattdessen createBridge(String,boolean,long,TimeUnit).

Erstellt eine neue Debug-Bridge am Speicherort des Befehlszeilentools.

Alle vorhandenen Server werden getrennt, sofern der Standort nicht derselbe ist und forceNewBridge auf „false“ gesetzt ist.

Parameter
osLocation String: Speicherort des Befehlszeilentools „adb“

forceNewBridge boolean: Erzwingt die Erstellung einer neuen Bridge, auch wenn bereits eine mit demselben Standort vorhanden ist.

Gibt Folgendes zurück:
AndroidDebugBridge eine verbundene Bridge oder „null“, wenn beim Erstellen oder Herstellen einer Verbindung zur Bridge Fehler aufgetreten sind

createBridge

public static AndroidDebugBridge createBridge ()

Diese Methode wurde eingestellt.
Diese Methode kann hängen bleiben, wenn ADB nicht reagiert. Verwenden Sie stattdessen createBridge(long,TimeUnit).

Erstellt ein AndroidDebugBridge, das nicht mit einer bestimmten ausführbaren Datei verknüpft ist.

Für diese Bridge muss ADB ausgeführt werden. adb kann nicht gestartet, beendet oder neu gestartet werden.

Wenn eine Bridge bereits gestartet wurde, wird sie ohne Änderungen zurückgegeben (ähnlich wie beim Aufrufen von getBridge()).

Gibt Folgendes zurück:
AndroidDebugBridge eine verbundene Bridge oder „null“, wenn beim Erstellen oder Herstellen einer Verbindung zur Bridge Fehler aufgetreten sind

deviceChanged

public static void deviceChanged (IDevice device, 
                int changeMask)

Den Listener über eine geänderte IDevice benachrichtigen.

Die Benachrichtigung der Zuhörer erfolgt in einem synchronisierten Block. Es ist wichtig, dass Zuhörer möglicherweise auf verschiedene Methoden von IDevice sowie getDevices() zugreifen, die interne Sperren verwenden.

Parameter
device IDevice: die geänderte IDevice.

changeMask int

deviceConnected

public static void deviceConnected (IDevice device)

Benachrichtige den Zuhörer über eine neue IDevice.

Die Benachrichtigung der Zuhörer erfolgt in einem synchronisierten Block. Es ist wichtig, dass Zuhörer möglicherweise auf verschiedene Methoden von IDevice sowie getDevices() zugreifen, die interne Sperren verwenden.

Parameter
device IDevice: die neue IDevice.

deviceDisconnected

public static void deviceDisconnected (IDevice device)

Den Listener über eine getrennte IDevice benachrichtigen.

Die Benachrichtigung der Zuhörer erfolgt in einem synchronisierten Block. Es ist wichtig, dass Zuhörer möglicherweise auf verschiedene Methoden von IDevice sowie getDevices() zugreifen, die interne Sperren verwenden.

Parameter
device IDevice: die getrennte IDevice.

disableFakeAdbServerMode

public static void disableFakeAdbServerMode ()

disconnectBridge

public static void disconnectBridge ()

Diese Methode wurde eingestellt.
Diese Methode kann hängen bleiben, wenn ADB nicht reagiert. Verwenden Sie stattdessen disconnectBridge(long,TimeUnit).

Trennt die aktuelle Debug-Bridge und zerstört das Objekt. Ein neues Objekt muss mit createBridge(String,boolean) erstellt werden.

Dadurch wird auch der aktuelle ADB-Hostserver beendet.

disconnectBridge

public static boolean disconnectBridge (long timeout, 
                TimeUnit unit)

Trennt die aktuelle Debug-Bridge und zerstört das Objekt. Ein neues Objekt muss mit createBridge(String,boolean) erstellt werden.

Dadurch wird auch der aktuelle ADB-Hostserver beendet.

Parameter
timeout long

unit TimeUnit

Gibt Folgendes zurück:
boolean true, wenn die Methode innerhalb des angegebenen Zeitlimits erfolgreich ist.

enableFakeAdbServerMode

public static void enableFakeAdbServerMode (int port)

Parameter
port int

getAdbVersion

public static ListenableFuture<AdbVersion> getAdbVersion (File adb)

Parameter
adb File

Gibt Folgendes zurück:
ListenableFuture<AdbVersion>

getBridge

public static AndroidDebugBridge getBridge ()

Gibt die aktuelle Debug-Bridge zurück. Kann null sein, wenn keine erstellt wurden.

Gibt Folgendes zurück:
AndroidDebugBridge

getConnectionAttemptCount

public int getConnectionAttemptCount ()

Gibt die Anzahl der Versuche des AndroidDebugBridge-Objekts zurück, eine Verbindung zum ADB-Daemon herzustellen.

Gibt Folgendes zurück:
int

getDebugBridgeChangeListenerCount

public static int getDebugBridgeChangeListenerCount ()

Gibt Folgendes zurück:
int

getDeviceChangeListenerCount

public static int getDeviceChangeListenerCount ()

Gibt Folgendes zurück:
int

getDevices

public IDevice[] getDevices ()

Gibt die Geräte zurück.

Gibt Folgendes zurück:
IDevice[]

Weitere Informationen

getRawDeviceList

public ListenableFuture<List<AdbDevice>> getRawDeviceList ()

Gibt die Menge der Geräte zurück, die von der ADB-Befehlszeile gemeldet werden. Diese Funktion ist hauptsächlich für den Verbindungsassistenten oder andere Diagnosetools gedacht, die den Status der getDevices()-Liste über einen anderen Kanal validieren müssen. Code, der nur auf die Liste der Geräte zugreifen muss, sollte stattdessen getDevices() aufrufen.

Gibt Folgendes zurück:
ListenableFuture<List<AdbDevice>>

getRestartAttemptCount

public int getRestartAttemptCount ()

Gibt die Anzahl der Versuche des AndroidDebugBridge-Objekts zurück, den ADB-Daemon neu zu starten.

Gibt Folgendes zurück:
int

getSocketAddress

public static InetSocketAddress getSocketAddress ()

Diese Methode wurde eingestellt.
Diese Methode gibt eine Loopback-Serveradresse zurück, die möglicherweise nicht mit der Adresse des ADB-Servers übereinstimmt. Das heißt, die JVM befindet sich möglicherweise im IPv4-Modus, während der ADB-Server auf der IPv6-Loopback-Adresse gehostet wird. Verwenden Sie stattdessen openConnection(), wenn Sie eine Verbindung zum ADB-Server öffnen.

Gibt die Socketadresse des ADB-Servers auf dem Host zurück.

Diese Methode versucht, eine Socketadresse zurückzugeben, die bekanntermaßen funktioniert, indem ein Socketkanal zum ADB-Server geöffnet wird. Es wird sowohl die IPv4- als auch die IPv6-Loopback-Adresse versucht. Wenn keine Verbindung hergestellt werden kann, wird mit dieser Methode die von der JVM bevorzugte Loopback-Adresse zurückgegeben. Diese Fallback-Logik ist erforderlich, um API-Fehler zu vermeiden.

Wenn der gefälschte ADB-Servermodus aktiviert ist, wird diese Methode automatisch auf die Legacy-Implementierung zurückgesetzt, ohne dass versucht wird, eine Verbindung zu ADB herzustellen.

Gibt Folgendes zurück:
InetSocketAddress

getVirtualDeviceId

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

Parameter
service ListeningExecutorService

adb File

device IDevice

Gibt Folgendes zurück:
ListenableFuture<String>

hasInitialDeviceList

public boolean hasInitialDeviceList ()

Gibt zurück, ob die Bridge nach der Erstellung die erste Liste von adb abgerufen hat.

Wenn Sie getDevices() direkt nach createBridge(String,boolean) aufrufen, erhalten Sie in der Regel eine leere Liste. Das liegt am internen asynchronen Kommunikationsmechanismus mit adb, der nicht garantiert, dass die Liste IDevice vor dem Aufruf von getDevices() erstellt wurde.

Wir empfehlen, ein IDeviceChangeListener-Objekt zu erstellen, um die Liste der IDevice-Objekte abzurufen.

Gibt Folgendes zurück:
boolean

init

public static void init (AdbInitOptions options)

Ähnlich wie init(), aber mit der Möglichkeit, einen benutzerdefinierten Satz von Umgebungsvariablen zu übergeben.

Parameter
options AdbInitOptions

init

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

Ähnlich wie init(), mit der Möglichkeit, libusb zu aktivieren und eine benutzerdefinierte Umgebung zu übergeben. der kategorischen Variablen.

Parameter
useLibusb boolean

env Map

init

public static void init ()

Initialisiert die ddm-Bibliothek.

Diese Methode muss einmal vor einem Aufruf von createBridge(String,boolean) aufgerufen werden.

Die Einstellungen von ddmlib sollten auch mit allen Standardwerten initialisiert werden, die von den Standardwerten geändert wurden.

Wenn die Anwendung beendet wird, sollte terminate() aufgerufen werden.

initIfNeeded

public static void initIfNeeded ()

Die Bibliothek wurde nur bei Bedarf initialisiert. Die Verwendung für andere Zwecke als Tests ist nicht mehr zulässig.

Weitere Informationen

isConnected

public boolean isConnected ()

Gibt zurück, ob das AndroidDebugBridge-Objekt noch mit dem ADB-Daemon verbunden ist.

Gibt Folgendes zurück:
boolean

isUserManagedAdbMode

public static boolean isUserManagedAdbMode ()

Gibt Folgendes zurück:
boolean Wenn der vom Nutzer verwaltete ADB-Modus verwendet wird, darf und soll ddmlib den ADB-Server nicht verwalten.

openConnection

public static SocketChannel openConnection ()

Es wird versucht, eine Verbindung zum lokalen Android Debug Bridge-Server herzustellen.

Gibt Folgendes zurück:
SocketChannel eine verbundene Steckdose, wenn die Verbindung erfolgreich hergestellt wurde

Löst aus
IOException sollten beim Öffnen der Verbindung Fehler auftreten.

removeDebugBridgeChangeListener

public static void removeDebugBridgeChangeListener (AndroidDebugBridge.IDebugBridgeChangeListener listener)

Entfernt den Listener aus der Sammlung von Listenern, die benachrichtigt werden, wenn ein neuer AndroidDebugBridge gestartet wird.

Parameter
listener AndroidDebugBridge.IDebugBridgeChangeListener: Der Listener, der nicht mehr benachrichtigt werden soll.

removeDeviceChangeListener

public static void removeDeviceChangeListener (AndroidDebugBridge.IDeviceChangeListener listener)

Entfernt den Listener aus der Sammlung von Listenern, die benachrichtigt werden, wenn ein IDevice verbunden oder getrennt wird oder wenn sich seine Eigenschaften oder seine ERROR(/ClientImpl)-Liste ändern.

Parameter
listener AndroidDebugBridge.IDeviceChangeListener: Der Listener, der nicht mehr benachrichtigt werden soll.

restart

public boolean restart (long timeout, 
                TimeUnit unit)

Startet adb neu, aber nicht die zugehörigen Dienste.

Parameter
timeout long

unit TimeUnit

Gibt Folgendes zurück:
boolean „true“, wenn erfolgreich.

restart

public boolean restart ()

Diese Methode wurde eingestellt.
Diese Methode kann hängen bleiben, wenn ADB nicht reagiert. Verwenden Sie stattdessen restart(long,TimeUnit).

Startet adb neu, aber nicht die zugehörigen Dienste.

Gibt Folgendes zurück:
boolean „true“, wenn erfolgreich.

startAdb

public boolean startAdb (long timeout, 
                TimeUnit unit)

Startet den ADB-Host-Server. Diese Methode sollte nicht verwendet werden, wenn ein vom Nutzer verwalteter ADB-Server verwendet wird, da der Lebenszyklus des Servers vom Nutzer und nicht von ddmlib verwaltet werden sollte.

Parameter
timeout long

unit TimeUnit

Gibt Folgendes zurück:
boolean „true“, wenn erfolgreich

beenden

public static void terminate ()

Beendet die DDM-Bibliothek. Diese Funktion muss beim Beenden der Anwendung aufgerufen werden.