So funktioniert Android Debug Bridge (adb)

Android Debug Bridge (adb)

Android Debug Bridge (adb) ist ein vielseitiges Befehlszeilentool, mit dem Sie mit einem Gerät kommunizieren können. Mit dem adb-Befehl können Sie verschiedene Aktionen auf dem Gerät ausführen, wie z.B. das Installieren und Debuggen von Apps. adb bietet Zugriff auf eine Unix-Shell, über die Sie verschiedene Befehle auf dem Gerät ausführen können. Es handelt sich um ein Client-Server-Programm, das aus drei Komponenten besteht:

Ein Client

Der Client sendet Befehle. Der Client läuft auf Ihrem Entwicklungssystem. Sie können den Client von einem Befehlszeilentool aus aufrufen, indem Sie einen adb-Befehl verwenden.

Ein Daemon (adbd)

Der Daemon führt Befehle auf einem Gerät aus. Der Daemon läuft als Hintergrundprozess auf jedem Gerät.

Ein Server

Der Server verwaltet die Kommunikation zwischen dem Client und dem Daemon. Der Server läuft als Hintergrundprozess auf Ihrem Entwicklungssystem.

adb ist Bestandteil des Android SDK Platform Tools-Pakets. Laden Sie dieses Paket mit dem SDK Manager herunter, das es unter “android_sdk/platform-tools/” installiert. Wenn Sie das eigenständige Android SDK Platform Tools-Paket möchten, können Sie es hier herunterladen.

Weitere Informationen zur Verbindung eines Geräts über adb, einschließlich Informationen zur Verwendung des Connection Assistant zur Behebung häufiger Probleme, finden Sie unter Ausführen von Apps auf einem Hardwaregerät.

So verwenden Sie adb über USB

Um adb mit einem über USB angeschlossenen Gerät zu verwenden, müssen Sie USB-Debugging in den Geräteeinstellungen unter Entwickleroptionen aktivieren. Öffnen Sie die Entwickleroptionen, um das USB-Debugging sichtbar zu machen.

Sie können Ihr Gerät jetzt über USB anschließen. Überprüfen Sie, ob Ihr Gerät verbunden ist, indem Sie den Befehl adb devices aus dem Verzeichnis “android_sdk/platform-tools/” ausführen. Wenn eine Verbindung besteht, wird der Gerätename als “Gerät” aufgelistet.

Beachten Sie, dass beim Anschließen eines Geräts mit Android 4.2.2 (API-Ebene 17) oder höher ein Dialogfeld angezeigt wird, in dem Sie gefragt werden, ob Sie einen RSA-Schlüssel akzeptieren möchten, der das Debuggen über diesen Computer ermöglicht. Dieser Sicherheitsmechanismus schützt Benutzergeräte, indem sichergestellt wird, dass das USB-Debugging und andere adb-Befehle nur ausgeführt werden können, wenn Sie das Gerät entsperren können und den Dialog bestätigen.

Weitere Informationen zur Verbindung mit einem Gerät über USB finden Sie unter Ausführen von Apps auf einem Hardwaregerät.

Verbindung zu einem Gerät über WLAN

Android 11 (API-Ebene 30) und höher unterstützen die drahtlose Bereitstellung und das Debuggen Ihrer App von Ihrem Arbeitsplatz aus mit Android Debug Bridge (adb). Sie können z.B. Ihre debugfähige App ohne physische Verbindung Ihres Geräts über USB auf mehrere Remote-Geräte bereitstellen. Dadurch entfällt die Notwendigkeit, sich mit häufig auftretenden USB-Verbindungsproblemen wie der Treiberinstallation auseinanderzusetzen.

Bevor Sie drahtloses Debuggen verwenden, führen Sie die folgenden Schritte aus:

  1. Stellen Sie sicher, dass Ihr Arbeitsplatz und Ihr Gerät mit demselben drahtlosen Netzwerk verbunden sind.
  2. Stellen Sie sicher, dass Ihr Gerät Android 11 (API-Ebene 30) oder höher für ein Telefon bzw. Android 13 (API-Ebene 33) oder höher für TV und WearOS ausführt. Weitere Informationen finden Sie unter Überprüfen und Aktualisieren Ihrer Android-Version.
  3. Stellen Sie sicher, dass Sie die neueste Version der Android Studio installiert haben, wenn Sie die IDE verwenden. Sie können sie hier herunterladen.
  4. Aktualisieren Sie auf Ihrem Arbeitsplatz die neueste Version der SDK Platform Tools.

Um das drahtlose Debuggen zu verwenden, müssen Sie Ihr Gerät mit Ihrem Arbeitsplatz über einen QR-Code oder einen Pairing-Code koppeln. Ihr Arbeitsplatz und Ihr Gerät müssen dabei mit demselben drahtlosen Netzwerk verbunden sein. Befolgen Sie diese Schritte, um eine Verbindung zu Ihrem Gerät herzustellen:

  1. Aktivieren Sie die Entwickleroptionen auf Ihrem Gerät.
  2. Öffnen Sie Android Studio und wählen Sie “Geräte per WLAN koppeln” im Menü “Laufkonfigurationen” aus.
  3. Es erscheint das Fenster “Geräte per WLAN koppeln”, wie in Abbildung 2 gezeigt.
  4. Tippen Sie auf Ihrem Gerät auf “WLAN-Debugging” und koppeln Sie Ihr Gerät:

    a. Wählen Sie “Gerät mit QR-Code koppeln”, um Ihr Gerät mit einem QR-Code zu koppeln und scannen Sie den QR-Code, den Sie aus dem Popup-Fenster “Geräte per WLAN koppeln” erhalten haben.

    b. Wählen Sie “Gerät mit Pairing-Code koppeln”, um Ihr Gerät über einen Pairing-Code zu koppeln. Wählen Sie auf Ihrem Gerät “Koppeln mit Pairing-Code” und notieren Sie den sechsstelligen Code. Sobald Ihr Gerät im Fenster “Geräte per WLAN koppeln” angezeigt wird, können Sie “Koppeln” auswählen und den sechsstelligen Code eingeben, der auf Ihrem Gerät angezeigt wird.

  5. Nachdem Ihr Gerät gekoppelt wurde, können Sie versuchen, Ihre App auf Ihr Gerät bereitzustellen.
LESEN  Unterschied zwischen Public Cloud und Private Cloud

Um ein anderes Gerät zu koppeln oder das aktuelle Gerät auf Ihrem Arbeitsplatz zu vergessen, gehen Sie zu “WLAN-Debugging” auf Ihrem Gerät. Tippen Sie auf den Namen Ihres Arbeitsplatzes unter “Gekoppelte Geräte” und wählen Sie “Vergessen”.

Wenn Sie das WLAN-Debuggen schnell ein- und ausschalten möchten, können Sie die Quick Settings Developer Tiles für “WLAN-Debuggen” verwenden, die in den “Entwickleroptionen” > “Quick Settings Developer Tiles” zu finden sind.

WLAN-Verbindung über die Befehlszeile

Alternativ können Sie über die Befehlszeile eine Verbindung zu Ihrem Gerät herstellen, ohne Android Studio zu verwenden. Gehen Sie dazu wie folgt vor:

  1. Aktivieren Sie die Entwickleroptionen auf Ihrem Gerät, wie bereits erwähnt.
  2. Aktivieren Sie das “WLAN-Debuggen” auf Ihrem Gerät, wie bereits erwähnt.
  3. Öffnen Sie ein Terminalfenster auf Ihrem Arbeitsplatz und navigieren Sie zu “android_sdk/platform-tools”.
  4. Ermitteln Sie Ihre IP-Adresse, Portnummer und Pairing-Code, indem Sie “Pair device with pairing code” auswählen. Notieren Sie die auf dem Gerät angezeigte IP-Adresse, Portnummer und Pairing-Code.
  5. Führen Sie im Terminal Ihres Arbeitsplatzes den Befehl “adb pair ipaddr:port” aus und verwenden Sie dabei die IP-Adresse und Portnummer von oben.
  6. Geben Sie bei Aufforderung den Pairing-Code ein, wie unten gezeigt.

Android Debug Bridge (adb)

Beheben von WLAN-Verbindungsproblemen

Wenn beim drahtlosen Verbinden Ihres Geräts Probleme auftreten, können Sie die folgenden Problembehandlungsschritte ausprobieren, um das Problem zu lösen:

Überprüfen Sie, ob Ihr Arbeitsplatz und Ihr Gerät die Voraussetzungen erfüllen

Stellen Sie sicher, dass Arbeitsplatz und Gerät die in diesem Abschnitt aufgeführten Voraussetzungen erfüllen.

Überprüfen Sie andere bekannte Probleme

Die folgende Liste enthält derzeit bekannte Probleme beim drahtlosen Debuggen (mit adb oder Android Studio) und Hinweise zur Fehlerbehebung:

  • Wi-Fi verbindet sich nicht: Sichere Wi-Fi-Netzwerke, wie z.B. Unternehmens-Wi-Fi-Netzwerke, können p2p-Verbindungen blockieren und eine Verbindung über Wi-Fi nicht zulassen. Versuchen Sie, eine Verbindung mit einem Kabel oder einem anderen (nicht-Unternehmens-) Wi-Fi-Netzwerk herzustellen. Eine andere Möglichkeit besteht darin, die kabellose Verbindung über adb connect ip:port über TCP/IP herzustellen (nach einer anfänglichen USB-Verbindung), wenn die Verwendung eines nicht-Unternehmens-Wi-Fi-Netzwerks möglich ist.
  • adb über Wi-Fi schaltet manchmal automatisch aus: Dies kann passieren, wenn das Gerät zwischen Wi-Fi-Netzwerken wechselt oder die Verbindung zum Netzwerk unterbrochen wird. Um dies zu beheben, verbinden Sie sich erneut mit dem Netzwerk.
  • Gerät verbindet sich nach erfolgreicher Koppelung nicht: adb verlässt sich auf mDNS, um gekoppelte Geräte zu entdecken und automatisch eine Verbindung zu ihnen herzustellen. Wenn Ihre Netzwerkkonfiguration oder Gerätekonfiguration mDNS nicht unterstützt oder deaktiviert hat, müssen Sie eine Verbindung zum Gerät manuell über adb connect ip:port herstellen.

Drahtlose Verbindung mit einem Gerät nach einer initialen USB-Verbindung herstellen (nur auf Android 10 und niedriger möglich)

Anmerkung:

Dieser Workflow gilt auch für Android 11 (und höher), wobei der Vorbehalt besteht, dass er auch eine *initiale* Verbindung über physikalisches USB beinhaltet.

LESEN  Ist das Homematic IP Thermostat Basic wirklich nur Basic?

Anmerkung:

Die folgenden Anweisungen gelten nicht für Wear-Geräte, die Android 10 (API-Ebene 29) oder niedriger ausführen. Weitere Informationen finden Sie in der Anleitung zur Fehlerbehebung einer Wear OS-App.

adb kommuniziert normalerweise über USB mit dem Gerät, aber Sie können auch adb über Wi-Fi verwenden. Um eine Verbindung mit einem Gerät herzustellen, das Android 10 (API-Ebene 29) oder niedriger ausführt, befolgen Sie die folgenden anfänglichen Schritte über USB:

  1. Verbinden Sie Ihr Android-Gerät und Ihren adb-Hostcomputer mit einem gemeinsamen Wi-Fi-Netzwerk.

Anmerkung:

Beachten Sie, dass nicht alle Access Points geeignet sind. Möglicherweise müssen Sie einen Access Point verwenden, dessen Firewall richtig konfiguriert ist, um adb zu unterstützen.

  1. Verbinden Sie das Gerät mit dem Hostcomputer mit einem USB-Kabel. Stellen Sie das Zielgerät auf TCP/IP-Verbindungen im Port 5555 ein: adb tcpip 5555 Trennen Sie das USB-Kabel vom Zielgerät. Ermitteln Sie die IP-Adresse des Android-Geräts. Sie finden die IP-Adresse beispielsweise unter “Einstellungen” > “Über Tablet” (oder “Über Telefon”) > “Status” > “IP-Adresse”. Stellen Sie über die IP-Adresse eine Verbindung zum Gerät her: adb connect Geräte_IP_Adresse:5555 Bestätigen Sie, dass Ihr Hostcomputer mit dem Zielgerät verbunden ist: $ adb devices Liste der verbundenen Geräte: Geräte_IP_Adresse:5555 Gerät

Ihr Gerät ist jetzt mit adb verbunden.

Wenn die Verbindung des adb zu Ihrem Gerät verloren geht:

  1. Stellen Sie sicher, dass Ihr Hostcomputer weiterhin mit demselben Wi-Fi-Netzwerk wie Ihr Android-Gerät verbunden ist.
  2. Stellen Sie die Verbindung mit dem adb connect-Befehl erneut her.
  3. Wenn das nicht funktioniert, setzen Sie Ihren adb-Host zurück: adb kill-server

Starten Sie dann von vorne.

Nach Geräten suchen

Bevor Sie adb-Befehle ausgeben, ist es hilfreich zu wissen, welche Geräteinstanzen mit dem adb-Server verbunden sind. Generieren Sie eine Liste der angeschlossenen Geräte mithilfe des Befehls adb devices -l. adb gibt dann Informationen zu jedem Gerät in der Liste aus, wie z.B. die Seriennummer, den Verbindungsstatus und eine Beschreibung des Geräts.

In folgendem Beispiel wird der Befehl adb devices mit der Option -l verwendet, um eine Liste der angeschlossenen Geräte und weitere Informationen anzuzeigen:

Geräte: Liste der Geräte:

emulator-5556 Gerät
Produkt:sdk_google_phone_x86_64 Modell:Android_SDK_built_for_x86_64 Gerät:generic_x86_64

emulator-5554 Gerät
Produkt:sdk_google_phone_x86 Modell:Android_SDK_built_for_x86 Gerät:generic_x86

0a388e93 Gerät
USB:1-1 Produkt:razor Modell:Nexus_7 Gerät:flo

Emulator wird nicht aufgelistet

Der Befehl adb devices hat eine spezielle Befehlssequenz für eine Randbedingung, die bewirkt, dass laufende Emulatoren nicht in der adb devices-Ausgabe angezeigt werden, obwohl die Emulatoren auf Ihrem Desktop sichtbar sind. Dies geschieht, wenn alle der folgenden Bedingungen erfüllt sind:

  • Der adb-Server läuft nicht.
  • Sie verwenden den Emulator-Befehl mit der Option -port oder -ports und einem ungeraden Portwert zwischen 5554 und 5584.
  • Der von Ihnen gewählte ungerade Port ist nicht belegt, sodass eine Verbindung unter der angegebenen Portnummer hergestellt werden kann, oder wenn er belegt ist, wechselt der Emulator zu einem anderen Port, der den Anforderungen in 2 entspricht.
  • Sie starten den adb-Server, nachdem Sie den Emulator gestartet haben.

Eine Möglichkeit, diese Situation zu vermeiden, besteht darin, den Emulator seine eigenen Ports wählen zu lassen und maximal 16 Emulatoren gleichzeitig auszuführen. Eine andere Möglichkeit besteht darin, den adb-Server immer zu starten, bevor Sie den Emulator-Befehl verwenden, wie in den folgenden Beispielen erläutert.

Beispiel 1: In der folgenden Befehlssequenz startet der adb-Befehl adb devices den adb-Server, aber die Liste der Geräte wird nicht angezeigt.

Beenden Sie den adb-Server und geben Sie die folgenden Befehle in der gezeigten Reihenfolge ein. Geben Sie für den AVD-Namen einen gültigen AVD-Namen von Ihrem System an. Um eine Liste der AVD-Namen zu erhalten, geben Sie emulator -list-avds ein. Der Emulator-Befehl befindet sich im Verzeichnis android_sdk/tools.

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5555
$ adb devices
   List of devices attached
   * daemon not running. starting it now on port 5037 *
   * daemon started successfully *

Beispiel 2: In der folgenden Befehlssequenz zeigt adb devices die Liste der Geräte an, weil der adb-Server zuerst gestartet wurde.

LESEN  MacBook Pro oder MacBook Air – Welches passt besser zu mir?

Geben Sie den Emulator-Befehl erst ein, nachdem Sie den adb-Server beendet und vor der Ausführung des adb devices-Befehls gestartet haben, wie in den folgenden Beispielen erläutert.

$ adb kill-server
$ emulator -avd Nexus_6_API_25 -port 5557
$ adb start-server
$ adb devices
   List of devices attached
   emulator-5557   device

Weitere Informationen zu Emulator-Befehlszeilenoptionen finden Sie unter Befehlszeilenstartoptionen.

App installieren

Sie können adb verwenden, um eine APK auf einem Emulator oder einem verbundenen Gerät mit dem Befehl “install” zu installieren:

adb install Pfad_zur_APK

Bei der Installation eines Test-APKs müssen Sie die Option -t mit dem install-Befehl verwenden. Weitere Informationen finden Sie unter -t.

Verwenden Sie den Befehl “install-multiple”, um mehrere APKs zu installieren. Dies ist nützlich, wenn Sie alle APKs für ein bestimmtes Gerät für Ihre App aus dem Play Console herunterladen und auf einem Emulator oder physischen Gerät installieren möchten.

Weitere Informationen dazu, wie Sie eine APK-Datei erstellen können, die Sie auf einer Emulator- oder Geräteinstanz installieren können, finden Sie unter App erstellen und ausführen.

Anmerkung: Wenn Sie Android Studio verwenden, müssen Sie adb nicht direkt verwenden, um Ihre App im Emulator oder Gerät zu installieren. Android Studio kümmert sich stattdessen um das Verpacken und die Installation der App für Sie.

Portweiterleitung einrichten

Mit dem Befehl “forward” können Sie die Weiterleitung von bestimmten Ports auf einem Host an einen anderen Port auf einem Gerät einrichten. Das folgende Beispiel richtet die Weiterleitung des Host-Ports 6100 auf den Geräte-Port 7100 ein:

adb forward tcp:6100 tcp:7100

Das folgende Beispiel richtet die Weiterleitung des Host-Ports 6100 auf local:logd ein:

adb forward tcp:6100 local:logd

Dies kann nützlich sein, um herauszufinden, was an einen bestimmten Port auf dem Gerät gesendet wird. Alle empfangenen Daten werden an den System-Logging-Daemon geschrieben und in den Geräte-Logs angezeigt.

Dateien von und zu einem Gerät kopieren

Verwenden Sie die Befehle “pull” und “push”, um Dateien von und zu einem Gerät zu kopieren. Im Gegensatz zum “install”-Befehl, der nur eine APK-Datei an einen bestimmten Ort kopiert, ermöglichen Ihnen die “pull”- und “push”-Befehle das Kopieren beliebiger Verzeichnisse und Dateien an jeden beliebigen Ort in einem Gerät.

Um eine Datei oder ein Verzeichnis und dessen Unterverzeichnisse von dem Gerät zu kopieren, führen Sie folgende Schritte aus:

adb pull remote local

Um eine Datei oder ein Verzeichnis und dessen Unterverzeichnisse auf das Gerät zu kopieren, führen Sie folgende Schritte aus:

adb push local remote

Ersetzen Sie “local” und “remote” durch die Pfade zu den Ziel-Dateien/Verzeichnissen auf Ihrem Entwicklungssystem (local) und auf dem Gerät (remote). Hier ist zum Beispiel ein Befehl zum Kopieren einer Datei:

adb push myfile.txt /sdcard/myfile.txt

Stoppen des adb-Servers

In einigen Fällen müssen Sie den adb-Server-Prozess beenden und dann neu starten, um das Problem zu lösen. Ein Beispiel wäre, wenn auf einen Befehl von adb nicht reagiert wird.

Verwenden Sie den Befehl “adb kill-server”, um den adb-Server zu stoppen. Sie können den Server dann neu starten, indem Sie einen anderen adb-Befehl ausführen.

adb-Befehle ausgeben

Geben Sie adb-Befehle über die Befehlszeile auf Ihrem Entwicklungssystem oder über ein Skript mit dem folgenden Format aus:

adb [-d | -e | -s Seriennummer] Befehl

Wenn nur ein Emulator ausgeführt wird oder nur ein Gerät angeschlossen ist, wird der adb-Befehl standardmäßig an dieses Gerät gesendet. Wenn mehrere Emulatoren ausgeführt werden und/oder mehrere Geräte angeschlossen sind, müssen Sie die Option -d, -e oder -s verwenden, um das Zielgerät zu spezifizieren, an das der Befehl gerichtet werden soll.

Sie können eine detaillierte Liste aller unterstützten adb-Befehle mit dem Befehl adb -help anzeigen.

Shell-Befehle ausgeben

Sie können den Shell-Befehl verwenden, um Gerätebefehle über adb auszugeben oder eine interaktive Shell zu starten. Um einen einzelnen Befehl auszuführen, verwenden Sie den Shell-Befehl folgendermaßen:

adb [-d | -e | -s Seriennummer] shell shell-Befehl

Um eine interaktive Shell auf einem Gerät zu starten, verwenden Sie den Shell-Befehl folgendermaßen:

adb [-d | -e | -s Seriennummer] shell

Um eine interaktive Shell zu beenden, drücken Sie Strg+D oder geben Sie “exit” ein.

Android stellt die meisten üblichen Unix-Befehlszeilentools zur Verfügung. Eine Liste der verfügbaren Tools erhalten Sie mit dem Befehl adb shell ls /system/bin.

Hilfe ist für die meisten Befehle über das Argument “-help” verfügbar. Viele der Shell-Befehle werden von Toybox bereitgestellt. Eine allgemeine Hilfe, die für alle Toybox-Befehle gilt, erhalten Sie über “toybox -help”.

Ab Android Platform