Android Debug Bridge (adb
) ist ein vielseitiges Befehlszeilentool, das die Kommunikation mit einem
. Der Befehl adb
ermöglicht eine Vielzahl von Geräteaktionen wie die Installation und
Fehlerbehebung in Apps. adb
bietet Zugriff auf eine Unix-Shell, mit der Sie verschiedene
für Befehle auf einem Gerät. Es ist ein Client-Server-Programm, das drei Komponenten umfasst:
- Einen Client, der Befehle sendet. Der Client wird auf Ihrem Entwicklungscomputer ausgeführt. Sie können
Mit dem Befehl
adb
können Sie einen Client über ein Befehlszeilenterminal aufrufen. - Ein Daemon (adbd), der Befehle auf einem Gerät ausführt. Der Daemon wird im Hintergrund ausgeführt auf jedem Gerät.
- Ein Server, der die Kommunikation zwischen dem Client und dem Daemon verwaltet. Der Server als Hintergrundprozess auf Ihrem Entwicklungscomputer ausgeführt.
adb
ist im Android SDK Platform Tools-Paket enthalten. Herunterladen
mit dem SDK-Manager, wodurch die Installation
um android_sdk/platform-tools/
. Wenn Sie das eigenständige Android SDK
Platform Tools-Paket – können Sie es hier herunterladen.
Informationen zum Verbinden eines Geräts für die Verwendung über adb
, einschließlich der Verwendung der Verbindung
zur Behebung häufiger Probleme mit Assistant, siehe
Führen Sie Apps auf einem Hardwaregerät aus.
Funktionsweise von ADB
Wenn Sie einen adb
-Client starten, prüft dieser zuerst, ob ein
adb
Serverprozess wird bereits ausgeführt. Ist dies nicht der Fall, wird der Serverprozess gestartet.
Beim Start verbindet sich der Server mit dem lokalen TCP-Port 5037 und wartet auf Befehle, die von
adb
-Clients.
Hinweis: Alle adb
-Clients verwenden für die Kommunikation Port 5037.
mit dem adb
-Server.
Der Server richtet dann Verbindungen zu allen ausgeführten Geräten ein.
Findet Emulatoren, indem er ungerade nummerierte Ports im Bereich scannt
5555 bis 5585. Dies ist der Bereich, der von den ersten 16 Emulatoren verwendet wird. Wo der Server ein adb
findet
Daemon (adbd), richtet er eine Verbindung zu diesem Port ein.
Jeder Emulator verwendet ein Paar sequenzielle Ports – einen Port mit gerader Nummer für
Konsolenverbindungen und einem Port mit ungerader Nummer für adb
-Verbindungen. Beispiel:
Emulator 1, Konsole: 5554
Emulator 1, adb
: 5555
Emulator 2, Konsole: 5556
Emulator 2, adb
: 5557
und so weiter.
Wie gezeigt, ist der Emulator, der an Port 5555 mit adb
verbunden ist, derselbe wie der Emulator.
dessen Konsole Port 5554 überwacht.
Sobald der Server Verbindungen zu allen Geräten hergestellt hat, können Sie mit adb
-Befehlen folgende Aktionen ausführen:
auf diese Geräte zugreifen können. Da der Server Verbindungen zu Geräten verwaltet
Befehle von mehreren adb
-Clients können Sie jedes Gerät von jedem Client aus oder
aus einem Skript.
ADB-Debugging auf Ihrem Gerät aktivieren
Um ADB mit einem über USB angeschlossenen Gerät zu verwenden, müssen Sie USB-Debugging in den Gerätesystemeinstellungen unter Entwickleroptionen. Auf Geräten mit Android 4.2 (API-Level 17) und höher wird der Bildschirm Entwickleroptionen angezeigt. ist standardmäßig ausgeblendet. Um sie sichtbar zu machen, aktivieren Sie Entwickleroptionen.
Du kannst dein Gerät jetzt über USB verbinden. Sie können überprüfen, ob Ihr Gerät
durch Ausführen von adb devices
aus dem
android_sdk/platform-tools/
-Verzeichnis. Wenn eine Verbindung besteht,
sehen Sie den Gerätenamen als „Gerät“.
Hinweis:Wenn Sie ein Gerät mit Android 4.2.2 (API) verbinden Ebene 17) oder höher wird ein Dialogfeld angezeigt, in dem Sie gefragt werden, ob Sie einen RSA-Schlüssel akzeptieren möchten, der die Debugging über diesen Computer ausführen. Dieser Sicherheitsmechanismus schützt Nutzergeräte, dass USB-Debugging und andere ADB-Befehle nur ausgeführt werden können, wenn Sie das Gerät und bestätigen Sie das Dialogfeld.
Weitere Informationen zum Verbinden eines Geräts über USB findest du unter Apps auf einem Hardwaregerät ausführen
Gerät über WLAN verbinden
Hinweis:Die folgende Anleitung gilt nicht für Wear-Geräte, auf denen Android 11 (API-Level 30) Weitere Informationen finden Sie im Leitfaden zur Fehlerbehebung bei Wear OS-Apps für erhalten Sie weitere Informationen.
Android 11 (API-Level 30) und höher unterstützt die kabellose Bereitstellung und Fehlerbehebung für deine App mit Android Debug Bridge (ADB) überprüfen. Sie können z. B. ein Debug-fähiges App auf mehreren Remote-Geräten installieren, ohne Ihr Gerät physisch verbinden zu müssen. USB So müssen Sie sich nicht mit gängigen USB-Verbindungsproblemen wie Treibern Installation.
Bevor Sie mit dem Debugging über WLAN beginnen, sollten Sie Folgendes tun:
-
Achten Sie darauf, dass die Workstation und das Gerät mit demselben WLAN verbunden sind.
-
Auf deinem Gerät muss Android 11 (API-Level 30) oder höher (Smartphone oder Android) ausgeführt werden 13 (API-Level 33) oder höher für TV und Wear OS. Weitere Informationen finden Sie unter Prüfen und aktualisiere deine Android-Version
-
Wenn Sie die IDE verwenden, achten Sie darauf, dass Sie die neueste Version von Android Studio installiert haben. Du kannst es herunterladen hier.
-
Führen Sie auf Ihrer Workstation ein Update auf die neueste Version des SDK Platform Tools
Um das Debugging über WLAN zu verwenden, müssen Sie Ihr Gerät über einen QR-Code oder einen Kopplungscode. Die Workstation und das Gerät müssen mit demselben WLAN verbunden sein. Bis eine Verbindung zum Gerät herstellen, gehen Sie so vor:
-
Entwickleroptionen aktivieren auf deinem Gerät.
-
Öffne Android Studio und wähle Geräte über WLAN koppeln aus. Konfigurationsmenü.
Das Fenster Geräte über WLAN koppeln öffnet sich, wie in Abbildung 2 dargestellt.
-
Tippen Sie auf Ihrem Gerät auf Debugging über WLAN und koppeln Sie das Gerät:
-
Wenn du dein Gerät über einen QR-Code koppeln möchtest, wähle Gerät mit QR-Code koppeln aus und scanne den QR-Code, der über das Pop-up Geräte über WLAN koppeln abgerufen wird (siehe Abbildung 2).
-
Um Ihr Gerät mit einem Kopplungscode zu koppeln, wählen Sie Gerät mit Kopplungscode koppeln aus das Pop-up Geräte über WLAN koppeln. Wählen Sie auf Ihrem Gerät Koppeln mit Kopplungscode und notiere den sechsstelligen Code. Sobald Ihr Gerät im Geräte über WLAN koppeln können Sie Koppeln auswählen und den sechsstelligen Code, der auf deinem Gerät angezeigt wird.
-
-
Nachdem Ihr Gerät gekoppelt ist, können Sie versuchen, Ihre App auf dem Gerät bereitzustellen.
Um ein anderes Gerät zu koppeln oder das aktuelle Gerät von Ihrer Workstation zu entfernen, gehen Sie zu Debugging über WLAN auf Ihrem Gerät Tippen Sie unter Gekoppelt (Pairing) auf den Namen Ihrer Workstation Geräte und wählen Sie Entfernen aus.
-
Wenn du das Debugging über WLAN schnell aktivieren und deaktivieren möchtest, kannst du die Funktion Kacheln für Entwickler von Schnelleinstellungen für Debugging über WLAN unter Entwickleroptionen > Entwickler für Schnelleinstellungen Kacheln.
WLAN-Verbindung über die Befehlszeile
Wenn Sie eine Verbindung zu Ihrem Gerät über die Befehlszeile ohne Android Studio herstellen möchten, folgen Sie diese Schritte:
-
Aktivieren Sie die Entwickleroptionen wie zuvor beschrieben auf Ihrem Gerät.
-
Aktivieren Sie wie zuvor beschrieben Debugging über WLAN auf Ihrem Gerät.
-
Öffnen Sie auf Ihrer Workstation ein Terminalfenster und gehen Sie zu
android_sdk/platform-tools
-
Suchen Sie Ihre IP-Adresse, Portnummer und den Kopplungscode, indem Sie Gerät koppeln mit Kopplungscode Notieren Sie sich die IP-Adresse, die Portnummer und den Kopplungscode, die auf dem auf dem Gerät.
-
Führen Sie auf dem Terminal Ihrer Workstation
adb pair ipaddr:port
aus. IP-Adresse verwenden und die oben angegebene Portnummer. -
Wenn Sie dazu aufgefordert werden, geben Sie wie unten gezeigt den Kopplungscode ein.
Probleme mit der drahtlosen Verbindung beheben
Wenn Sie Probleme haben, eine kabellose Verbindung zu Ihrem Gerät herzustellen, versuchen Sie Folgendes: Schritte zur Fehlerbehebung.
Prüfen, ob Ihre Workstation und Ihr Gerät die Voraussetzungen erfüllen
Prüfen Sie, ob die Workstation und das Gerät die Voraussetzungen erfüllen, die im Anfang dieses Abschnitts.
Nach weiteren bekannten Problemen suchen
Im Folgenden finden Sie eine Liste der derzeit bekannten Probleme beim Debugging über WLAN (mit ADB oder Android) Studio) und wie Sie diese beheben können:
-
Es wird keine WLAN-Verbindung hergestellt: Sichere WLANs, etwa Unternehmens-WLANs, blockiert möglicherweise P2P-Verbindungen, sodass eine Verbindung über WLAN nicht möglich ist. Versuche es mit einem Kabel oder ein anderes WLAN-Netzwerk (kein Unternehmens-WLAN) verwenden. Drahtlose Verbindung über
adb connect ip:port
über tcp/ip (nach einer ersten USB-Verbindung) ist eine weitere Option. falls das Netzwerk nicht zum Unternehmens gehört. -
adb
über WLAN wird manchmal automatisch deaktiviert: Das kann passieren, wenn das Gerät das WLAN wechselt oder die Verbindung zum Netzwerk getrennt wird. Stelle die Verbindung wieder her, um das Problem zu beheben mit dem Netzwerk verbunden sind. -
Gerät stellt nach erfolgreicher Kopplung keine Verbindung her:
adb
benötigt mDNS, um gekoppelte Geräte erkennen und sich automatisch mit ihnen verbinden. Wenn Ihr Netzwerk oder Gerät mDNS nicht unterstützt oder mDNS deaktiviert wurde, müssen Sie es manuell stellen Sie überadb connect ip:port
eine Verbindung zum Gerät her.
Drahtlose Verbindung mit einem Gerät nach der ersten USB-Verbindung (nur unter Android 10 und niedriger verfügbar)
Hinweis:Dieser Workflow gilt auch für Android 11 (und angegeben ist. Allerdings ist dabei auch eine *Erstverbindung* über physischen USB-Speicher erforderlich.
Hinweis:Die folgende Anleitung gilt nicht für Wear-Geräte. mit Android 10 (API-Level 29) oder niedriger. Weitere Informationen finden Sie im Leitfaden zu Fehlerbehebung bei Wear OS-Apps für erhalten Sie weitere Informationen.
adb
kommuniziert mit dem Gerät normalerweise über USB, du kannst aber auch
adb
über WLAN. Wenn du ein Gerät mit Android 10 (API-Level 29) oder niedriger verbinden möchtest:
führen Sie die ersten Schritte über USB aus:
-
Android-Gerät und
adb
-Hostcomputer verbinden mit einem gemeinsamen WLAN-Netzwerk. - Verbinden Sie das Gerät über ein USB-Kabel mit dem Hostcomputer.
-
Legen Sie das Zielgerät so fest, dass es auf Port 5555 auf eine TCP/IP-Verbindung wartet:
adb tcpip 5555
- Ziehen Sie das USB-Kabel vom Zielgerät ab.
- Ermitteln Sie die IP-Adresse des Android-Geräts. Auf einem Nexus-Gerät finden Sie beispielsweise IP-Adresse unter Einstellungen > Über das Tablet (oder Über das Telefon) > Status > IP-Adresse:
-
Stellen Sie eine Verbindung zum Gerät über seine IP-Adresse her:
adb connect device_ip_address:5555
-
Prüfen Sie, ob der Hostcomputer mit dem Zielgerät verbunden ist:
$ adb devices List of devices attached device_ip_address:5555 device
Hinweis:Beachten Sie, dass nicht alle Zugangspunkte
geeignet sind. Möglicherweise musst du dafür einen Zugangspunkt verwenden
dessen Firewall ordnungsgemäß für die Unterstützung von adb
konfiguriert ist.
Dein Gerät ist jetzt mit adb
verbunden.
Wenn die adb
-Verbindung zu deinem Gerät unterbrochen wird:
- Achten Sie darauf, dass der Host immer noch mit demselben WLAN wie Ihr Android-Gerät verbunden ist.
-
Stellen Sie die Verbindung wieder her, indem Sie den Schritt
adb connect
noch einmal ausführen. -
Sollte das nicht funktionieren, setzen Sie den
adb
-Host zurück:adb kill-server
Fangen Sie dann noch einmal von vorn an.
Geräteabfrage
Bevor Sie adb
-Befehle ausführen, sollten Sie wissen, welche Geräteinstanzen verbunden sind
mit dem adb
-Server. Erstelle eine Liste der angeschlossenen Geräte mithilfe der
Befehl devices
:
adb devices -l
Als Antwort gibt adb
diese Statusinformationen für jedes Gerät aus:
- Seriennummer:Mit
adb
wird ein String erstellt, um das Gerät eindeutig zu identifizieren. nach der Portnummer suchen. Hier ein Beispiel für eine Seriennummer:emulator-5554
- Status:Der Verbindungsstatus des Geräts kann einer der folgenden sein:
<ph type="x-smartling-placeholder">
- </ph>
offline
: Das Gerät ist nicht mitadb
verbunden oder nicht antworten.device
: Das Gerät ist mit demadb
-Server verbunden. Beachten Sie, dass Dieser Status bedeutet nicht, dass das Android-System vollständig gestartet und betriebsbereit ist, Das Gerät stellt eine Verbindung zuadb
her während das System noch hochfährt. Nach dem Hochfahren ist dies der normale Betrieb Status eines Geräts.no device
: Es ist kein Gerät verbunden.
- Beschreibung: Wenn Sie die Option
-l
verwenden, wird das Attributdevices
um welches Gerät es sich handelt. Diese Informationen sind hilfreich, wenn du mehrere Geräte hast damit Sie sie auseinanderhalten können.
Das folgende Beispiel zeigt den Befehl devices
und seine Ausgabe. Es gibt drei
ausgeführte Geräte. Die ersten beiden Zeilen in der Liste sind Emulatoren und die dritte Zeile
an den Computer angeschlossen.
$ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo
Emulator nicht aufgeführt
Der Befehl adb devices
hat eine Befehlssequenz in Groß- und Kleinschreibung, die dazu führt, dass
Emulatoren, die nicht in der adb devices
-Ausgabe angezeigt werden,
sind die Emulatoren auf Ihrem Desktop sichtbar. Das passiert, wenn alle der folgenden
Bedingungen erfüllt sind:
- Der
adb
-Server wird nicht ausgeführt. - Sie verwenden den Befehl
emulator
mit der Methode-port
oder-ports
-Option mit einem Portwert mit ungerader Nummer zwischen 5.554 und 5.584. - Der von Ihnen gewählte Port mit einer ungeraden Nummer ist nicht ausgelastet, daher kann die Portverbindung am Port-Nummer angegeben – oder der Emulator wechselt, wenn dieser ausgelastet ist, zu der die Anforderungen in Port 2 erfüllt.
- Sie starten den
adb
-Server nach dem Start des Emulators.
Eine Möglichkeit, dies zu vermeiden, besteht darin, dem Emulator eigene Ports überlassen und nicht mehr ausführen zu lassen.
als 16 Emulatoren gleichzeitig. Eine andere Möglichkeit besteht darin, den adb
-Server immer vor
Verwenden Sie den Befehl emulator
, wie in den folgenden Beispielen erläutert.
Beispiel 1: In der folgenden Befehlssequenz startet der Befehl adb devices
adb
, aber die Geräteliste wird nicht angezeigt.
Beenden Sie den adb
-Server und geben Sie die folgenden Befehle in der angegebenen Reihenfolge ein. Für die AVD
Name eingeben, geben Sie einen gültigen AVD-Namen aus Ihrem System an. Um eine Liste der AVD-Namen aufzurufen, geben Sie
emulator -list-avds
Der Befehl emulator
befindet sich in der
android_sdk/tools
-Verzeichnis.
$ 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, da der Server adb
zuerst gestartet wurde.
Damit der Emulator in der Ausgabe von adb devices
angezeigt wird, beenden Sie den Server adb
und
Starten Sie ihn dann neu, nachdem Sie den Befehl emulator
verwendet haben, und bevor Sie den
adb devices
so:
$ 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 den Befehlszeilenoptionen des Emulators siehe Befehlszeile Startoptionen.
Befehle an ein bestimmtes Gerät senden
Wenn mehrere Geräte ausgeführt werden, musst du das Zielgerät angeben
wenn Sie den Befehl adb
ausgeben.
So geben Sie das Ziel an:
- Verwenden Sie den Befehl
devices
, um die Seriennummer des Ziels abzurufen. - Sobald Sie die Seriennummer haben, verwenden Sie das
-s
-Option mit denadb
-Befehlen zur Angabe der Seriennummer.- Wenn Sie viele
adb
-Befehle verwenden möchten, können Sie Umgebungsvariable$ANDROID_SERIAL
, die die Seriennummer enthält . - Wenn Sie beides
-s
und$ANDROID_SERIAL
,-s
Überschreibungen$ANDROID_SERIAL
.
- Wenn Sie viele
Im folgenden Beispiel wird die Liste der angeschlossenen Geräte abgerufen.
Nummer eines der Geräte, die zur Installation von helloWorld.apk
auf diesem Gerät verwendet wird:
$ adb devices List of devices attached emulator-5554 device emulator-5555 device 0.0.0.0:6520 device # To install on emulator-5555 $ adb -s emulator-5555 install helloWorld.apk # To install on 0.0.0.0:6520 $ adb -s 0.0.0.0:6520 install helloWorld.apk
Hinweis:Wenn Sie einen Befehl ausgeben, ohne ein Zielgerät anzugeben,
Wenn mehrere Geräte verfügbar sind, zeigt adb
einen Fehler an.
„adb: mehr als ein Gerät/Emulator“.
Wenn du mehrere Geräte hast, aber nur eines ein Emulator ist,
verwenden Sie die Option -e
, um Befehle an den Emulator zu senden. Wenn es mehrere
Geräten aber nur ein angeschlossenes Hardwaregerät verbunden ist, verwenden Sie die Option -d
, um Befehle an
des Hardwaregeräts.
App installieren
Du kannst adb
verwenden, um ein APK auf einem Emulator oder einem verbundenen Gerät zu installieren
mit dem Befehl install
:
adb install path_to_apk
Sie müssen die Option -t
mit dem install
verwenden.
wenn Sie ein Test-APK installieren. Weitere Informationen
Weitere Informationen finden Sie unter -t
.
Verwende install-multiple
, um mehrere APKs zu installieren. Dies ist nützlich, wenn Sie alle
die APKs für ein bestimmtes Gerät für Ihre App aus der Play Console erstellen und sie auf einem
Emulators oder physisches Gerät.
Weitere Informationen zum Erstellen einer APK-Datei, die du auf einem Emulator/Gerät installieren kannst Informationen hierzu finden Sie unter Anwendung erstellen und ausführen.
Hinweis: Wenn Sie Android Studio verwenden, müssen Sie den Link
adb
, um deine App auf dem Emulator oder auf dem Gerät zu installieren. Stattdessen wird Android Studio
die Verpackung und Installation der App für Sie übernimmt.
Portweiterleitung einrichten
Verwenden Sie den Befehl forward
, um eine beliebige Portweiterleitung einzurichten, die
Anfragen eines bestimmten Hostports an einen anderen Port auf einem Gerät weiterleiten.
Im folgenden Beispiel wird die Weiterleitung vom Hostport 6100 zum Geräteport 7100 eingerichtet:
adb forward tcp:6100 tcp:7100
Im folgenden Beispiel wird die Weiterleitung vom Hostport 6100 an „local:logd“ eingerichtet:
adb forward tcp:6100 local:logd
Dies kann nützlich sein, um zu ermitteln, was an einen bestimmten Port auf dem . Alle empfangenen Daten werden in den System-Logging-Daemon geschrieben und in den Geräteprotokollen.
Dateien von und auf ein Gerät kopieren
Verwenden Sie die Befehle pull
und push
, um Dateien zu kopieren nach
und von einem Gerät. Im Gegensatz zum Befehl install
mit der eine APK-Datei nur an einen bestimmten Speicherort kopiert wird, in den pull
und push
.
können Sie beliebige Verzeichnisse und Dateien an einen beliebigen Speicherort auf einem Gerät kopieren.
So kopieren Sie eine Datei oder ein Verzeichnis und zugehörige Unterverzeichnisse vom Gerät: Gehen Sie so vor:
adb pull remote local
So kopieren Sie eine Datei oder ein Verzeichnis und zugehörige Unterverzeichnisse auf das Gerät: Gehen Sie so vor:
adb push local remote
Ersetzen Sie local
und remote
durch die Pfade zu
die Zieldateien/das Zielverzeichnis auf Ihrem Entwicklungscomputer (lokal) und auf dem
Gerät (Fernbedienung). Beispiel:
adb push myfile.txt /sdcard/myfile.txt
ADB-Server anhalten
In einigen Fällen müssen Sie möglicherweise den adb
-Serverprozess beenden und dann neu starten
um das Problem zu lösen. Das könnte beispielsweise der Fall sein, wenn adb
nicht auf einen Befehl reagiert.
Verwenden Sie den Befehl adb kill-server
, um den adb
-Server zu beenden.
Anschließend können Sie den Server mit einem beliebigen anderen adb
-Befehl neu starten.
ADB-Befehle ausgeben
Führen Sie adb
-Befehle über eine Befehlszeile auf Ihrem Entwicklungscomputer oder über ein Skript mithilfe der Methode
Folgendes:
adb [-d | -e | -s serial_number] command
Wird nur ein Emulator ausgeführt oder nur ein Gerät angeschlossen, lautet der Befehl adb
:
die standardmäßig an dieses Gerät gesendet werden. Wenn mehrere Emulatoren ausgeführt werden und/oder mehrere Geräte aktiv sind
angehängt ist, müssen Sie die -d
, -e
oder -s
verwenden
Option zur Angabe des Zielgeräts, an das der Befehl weitergeleitet werden soll.
Mit dem folgenden Befehl können Sie eine detaillierte Liste aller unterstützten adb
-Befehle aufrufen:
Befehl:
adb --help
Shell-Befehle ausgeben
Mit dem Befehl shell
können Sie Gerätebefehle über adb
ausführen oder eine
Interactive Shell erstellen. Um einen einzelnen Befehl auszugeben, verwenden Sie den shell
-Befehl so:
adb [-d |-e | -s serial_number] shell shell_command
Wenn Sie eine interaktive Shell auf einem Gerät starten möchten, verwenden Sie den Befehl shell
so:
adb [-d | -e | -s serial_number] shell
Drücken Sie Control+D
oder geben Sie exit
ein, um eine interaktive Shell zu beenden.
Android bietet die meisten der üblichen Unix-Befehlszeilentools. Eine Liste der verfügbaren Tools erhalten Sie unter folgenden 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
Allgemeine Hilfe zu allen Toybox-Befehlen ist über toybox --help
verfügbar.
Ab Android Platform Tools 23 verarbeitet adb
Argumente auf dieselbe Weise wie
mit dem Befehl ssh(1)
. Durch diese Änderung wurden viele Probleme
Command Injection
und ermöglicht die sichere Ausführung von Befehlen,
Metazeichen,
wie z. B. adb install Let\'sGo.apk
. Das bedeutet, dass die Interpretation
aller Befehle, die Shell-Metazeichen enthalten, wurden ebenfalls geändert.
Beispielsweise ist adb shell setprop key 'value'
jetzt ein Fehler, da der
einfache Anführungszeichen ('
) werden von der lokalen Shell verschluckt und das Gerät erkennt
adb shell setprop key value
Damit der Befehl funktioniert,
schreiben Sie zweimal
einmal für die lokale Shell und einmal für die Remote-Shell, wie Sie
ssh(1)
Beispiel: adb shell setprop key 'value'
.
Weitere Informationen finden Sie unter Logcat-Befehlszeilentool. zur Überwachung des Systemprotokolls.
Anrufaktivitäts-Manager
Innerhalb einer adb
-Shell können Sie mit dem Aktivitätsmanager-Tool (am
) Befehle ausführen, um
verschiedene Systemaktionen ausführen, z. B. eine Aktivität starten, das Beenden eines Prozesses erzwingen,
Intents übertragen, die Bildschirmeigenschaften des Geräts ändern und vieles mehr.
In einer Shell lautet die am
-Syntax so:
am command
Sie können auch direkt über adb
einen Aktivitätsmanager-Befehl erteilen
ohne eine Remote-Shell zu nutzen. Beispiel:
adb shell am start -a android.intent.action.VIEW
Befehl | Beschreibung |
---|---|
start [options] intent
|
Startet einen Activity wie angegeben
intent . Weitere Informationen finden Sie in der Spezifikation für Intent-Argumente. Es gibt folgende Optionen:
|
startservice [options] intent
|
Service starten, der durch
intent . Weitere Informationen finden Sie in der Spezifikation für Intent-Argumente. Es gibt folgende Optionen:
|
force-stop package
|
Erzwingen Sie das Beenden aller mit package verknüpften Elemente.
|
kill [options] package
|
Beenden Sie alle mit package verknüpften Prozesse. Dieser Befehl beendet nur
Prozesse, die sicher beendet werden können und keine Auswirkungen auf die Nutzenden haben.
Nutzererfahrung.
Es gibt folgende Optionen:
|
kill-all
|
Beenden Sie alle Hintergrundprozesse. |
broadcast [options] intent
|
Sende einen Broadcast-Intent. Weitere Informationen finden Sie in der Spezifikation für Intent-Argumente. Es gibt folgende Optionen:
|
instrument [options] component
|
Beginnen Sie die Überwachung mit einem
Instrumentation -Instanz.
In der Regel die Ziel-component
hat die Form test_package/runner_class . Es gibt folgende Optionen:
|
profile start process file
|
Profiler auf process starten, Ergebnisse in file schreiben
|
profile stop process
|
Profiler auf process beenden.
|
dumpheap [options] process file
|
Dump des Heaps von process und schreibe in file . Es gibt folgende Optionen:
|
set-debug-app [options] package
|
App „package “ auf Fehlerbehebung setzen. Es gibt folgende Optionen:
|
clear-debug-app
|
Löscht das vorherige Paket zur Fehlerbehebung mit set-debug-app .
|
monitor [options]
|
Starte die Überwachung auf Abstürze oder ANRs. Es gibt folgende Optionen:
|
screen-compat {on | off} package
|
Bildschirm steuern
Kompatibilitätsmodus von package .
|
display-size [reset | widthxheight]
|
Überschreibt die Anzeigegröße des Geräts.
Mit diesem Befehl können Sie Ihre App für verschiedene Bildschirmgrößen testen, indem Sie eine kleine
Bildschirmauflösung und umgekehrt.
Beispiel: |
display-density dpi
|
Kompaktheitsgrad des Geräts überschreiben.
Dieser Befehl ist hilfreich, um deine App bei verschiedenen Bildschirmdichten zu testen, indem eine hohe Punktdichte nachgeahmt wird
und umgekehrt.
Beispiel: |
to-uri intent
|
Gibt die angegebene Intent-Spezifikation als URI aus. Weitere Informationen finden Sie in der Spezifikation für Intent-Argumente. |
to-intent-uri intent
|
Gibt die angegebene Intent-Spezifikation als intent: -URI aus. Weitere Informationen finden Sie in der Spezifikation für Intent-Argumente. |
Spezifikation für Intent-Argumente
Für Aktivitätsmanager-Befehle, die ein intent
-Argument annehmen, können Sie
geben Sie den Intent mit den folgenden Optionen an:
Paketmanager aufrufen (pm
)
Innerhalb einer adb
-Shell können Sie mit dem Paketmanager-Tool (pm
) Befehle ausführen, um
Aktionen und Abfragen für auf dem Gerät installierte App-Pakete durchführen
In einer Shell lautet die pm
-Syntax so:
pm command
Sie können einen Paketmanager-Befehl auch direkt über adb
ausführen
ohne dafür eine Remote-Shell zu nutzen. Beispiel:
adb shell pm uninstall com.example.MyApp
Befehl | Beschreibung |
---|---|
list packages [options] filter
|
Alle Pakete drucken (optional nur)
diejenigen, deren Paketname den Text in filter enthält. Optionen:
|
list permission-groups
|
Alle bekannten Berechtigungsgruppen drucken. |
list permissions [options] group
|
Alle bekannten Berechtigungen drucken (optional)
diejenigen in group . Optionen:
|
list instrumentation [options]
|
Listen Sie alle Testpakete auf. Optionen:
|
list features
|
Alle Funktionen des Systems drucken. |
list libraries
|
Alle vom aktuellen Gerät unterstützten Bibliotheken drucken. |
list users
|
Alle Nutzer im System drucken. |
path package
|
Geben Sie den Pfad zum APK der angegebenen package aus.
|
install [options] path
|
Installieren Sie ein durch path angegebenes Paket auf dem System. Optionen:
|
uninstall [options] package
|
Entfernt ein Paket aus dem System. Optionen:
|
clear package
|
Löscht alle mit einem Paket verknüpften Daten. |
enable package_or_component
|
Aktiviert das angegebene Paket oder die angegebene Komponente (geschrieben als "package/class"). |
disable package_or_component
|
Deaktiviert das angegebene Paket oder die Komponente (geschrieben als „package/class“). |
disable-user [options] package_or_component
|
Optionen:
|
grant package_name permission
|
App eine Berechtigung erteilen Auf Geräten mit Android 6.0 (API-Level 23) und höher kann die Berechtigung jede im App-Manifest deklarierte Berechtigung sein. Auf Geräten mit Android 5.1 (API-Level 22) und niedriger muss eine optionale Berechtigung sein, die vom |
revoke package_name permission
|
Berechtigung für eine App widerrufen Auf Geräten mit Android 6.0 (API-Level) 23) und höher kann die Berechtigung jede im App-Manifest deklarierte Berechtigung sein. Auf Geräten mit Android 5.1 (API-Level 22) und niedriger muss eine optionale Berechtigung sein, die vom |
set-install-location location
|
Ändern Sie den Standardspeicherort für die Installation. Standortwerte:
<ph type="x-smartling-placeholder">
Hinweis:Diese Anleitung dient nur der Fehlerbehebung. Dies kann dazu führen, und andere unerwünschte Verhaltensweisen. |
get-install-location
|
Gibt den aktuellen Installationspfad zurück. Rückgabewerte:
<ph type="x-smartling-placeholder">
|
set-permission-enforced permission [true | false]
|
Geben Sie an, ob die gegebene Berechtigung erzwungen werden soll. |
trim-caches desired_free_space
|
Schneiden Sie Cache-Dateien, um den angegebenen freien Speicherplatz zu erreichen. |
create-user user_name
|
Erstellt einen neuen Nutzer mit dem angegebenen user_name ,
gibt die neue Nutzer-ID des Nutzers aus.
|
remove-user user_id
|
Entfernen Sie den Nutzer mit den angegebenen user_id ,
Löschen aller mit diesem Nutzer verknüpften Daten
|
get-max-users
|
Die maximale Anzahl der vom Gerät unterstützten Nutzer ausgeben. |
get-app-links [options] [package]
|
Status der Domainbestätigung für die angegebene package oder für alle drucken Pakete, wenn keins angegeben ist. Bundesstaatcodes sind wie folgt definiert:
Es gibt folgende Optionen:
|
reset-app-links [options] [package]
|
Domainbestätigungsstatus für das angegebene Paket oder für alle zurücksetzen Pakete, wenn keins angegeben ist.
Es gibt folgende Optionen:
|
verify-app-links [--re-verify] [package]
|
Bestätigungsanfrage für die angegebenen package oder für alle senden Pakete, wenn keins angegeben ist. Wird nur gesendet, wenn das Paket zuvor keine Antwort erfasst.
|
set-app-links [--package package] state domains
|
Legen Sie den Status einer Domain für ein Paket manuell fest. Die Domain muss vom Paket als „autoVerify“ deklariert, damit dies funktioniert. Dieser Befehl wird für Domains, die nicht angewendet werden konnten, kein Fehler gemeldet.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Legen Sie den Status einer Hostnutzerauswahl für ein Paket manuell fest. Domain muss vom Paket deklariert werden, damit dies funktioniert. Mit diesem Befehl können Sie einen Fehler für Domains melden, die nicht angewendet werden konnten.
|
set-app-links-user-selection --user user_id [--package package]
enabled domains
|
Legen Sie den Status einer Hostnutzerauswahl für ein Paket manuell fest. Domain muss vom Paket deklariert werden, damit dies funktioniert. Mit diesem Befehl können Sie einen Fehler für Domains melden, die nicht angewendet werden konnten.
|
set-app-links-allowed --user user_id [--package package] allowed
|
Einstellung für die automatisch bestätigte Linkverarbeitung für ein Paket umschalten.
|
get-app-link-owners --user user_id [--package package] domains
|
Drucken Sie die Inhaber für eine bestimmte Domain für einen bestimmten Nutzer in der Reihenfolge von niedriger bis hoher Priorität.
|
Geräterichtlinien-Manager anrufen (dpm
)
Damit Sie Ihre Apps zur Geräteverwaltung entwickeln und testen können,
an den Device Policy Manager (dpm
) senden. Mit dem Tool können Sie die aktiven
Admin-App ändern oder die Statusdaten einer Richtlinie auf dem Gerät ändern.
In einer Shell lautet die dpm
-Syntax wie folgt:
dpm command
Sie können den Befehl „Device Policy Manager“ auch direkt über adb
ausführen
ohne eine Remote-Shell zu öffnen:
adb shell dpm command
Befehl | Beschreibung |
---|---|
set-active-admin [options] component
|
Legt component als aktiven Administrator fest.
Es gibt folgende Optionen:
|
set-profile-owner [options] component
|
Legen Sie component als aktiven Administrator und das zugehörige Paket als Profilinhaber für einen vorhandenen Nutzer fest.
Es gibt folgende Optionen:
|
set-device-owner [options] component
|
Legen Sie component als aktiven Administrator und das zugehörige Paket als Geräteeigentümer fest.
Es gibt folgende Optionen:
|
remove-active-admin [options] component
|
Deaktivieren Sie einen aktiven Administrator. In der App muss Folgendes deklariert werden:
android:testOnly
im Manifest. Mit diesem Befehl werden auch Geräte- und Profilinhaber entfernt.
Es gibt folgende Optionen:
|
clear-freeze-period-record
|
Löscht den Eintrag des Geräts über zuvor festgelegte Aufbewahrungszeiträume für OTA-Updates des Systems. Hilfreich
um Einschränkungen bei der Geräteplanung bei der Entwicklung von Apps zu vermeiden, mit denen Zeiträume, in denen die Geräte eingestellt werden können, verwaltet werden. Weitere Informationen finden Sie unter
Systemupdates verwalten
Diese Option wird auf Geräten mit Android 9.0 (API-Level 28) und höher unterstützt. |
force-network-logs
|
Erzwingen, dass das System alle vorhandenen Netzwerkprotokolle zum Abrufen durch einen DPC bereit macht. Wenn es
oder DNS-Protokollen vorliegen, empfängt der DPC die
onNetworkLogsAvailable()
Callback des Nutzers an. Siehe Logging der Netzwerkaktivität.
Dieser Befehl ist ratenbegrenzt. Diese Option wird auf Geräten mit Android 9.0 (API-Level 28) und höher unterstützt. |
force-security-logs
|
Erzwingen, dass das System alle vorhandenen Sicherheitsprotokolle für den DPC verfügbar macht. Wenn Logs vorhanden sind
verfügbar ist, erhält der DPC die
onSecurityLogsAvailable()
Callback des Nutzers an. Siehe Unternehmensgerät protokollieren
Aktivitäten.
Dieser Befehl ist ratenbegrenzt. Diese Option wird auf Geräten mit Android 9.0 (API-Level 28) und höher unterstützt. |
Screenshot erstellen
Der Befehl screencap
ist ein Shell-Dienstprogramm, mit dem du einen Screenshot von einem Gerät erstellen kannst.
Display.
In einer Shell lautet die screencap
-Syntax so:
screencap filename
Geben Sie Folgendes ein, um screencap
über die Befehlszeile zu verwenden:
adb shell screencap /sdcard/screen.png
Hier ist ein Beispiel für eine Screenshot-Sitzung mit der adb
-Shell.
und den Befehl pull
, um die Datei von dem Gerät herunterzuladen:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
Video aufnehmen
Der Befehl screenrecord
ist ein Shell-Dienstprogramm zum Aufzeichnen der Geräteanzeige.
mit Android 4.4 (API-Level 19) oder höher. Das Dienstprogramm zeichnet die Bildschirmaktivität im MPEG-4-Format auf
-Datei. Sie können diese Datei verwenden, um Werbe- oder Schulungsvideos zu erstellen oder um Fehler zu beheben und zu testen.
Verwenden Sie in einer Shell die folgende Syntax:
screenrecord [options] filename
Geben Sie Folgendes ein, um screenrecord
über die Befehlszeile zu verwenden:
adb shell screenrecord /sdcard/demo.mp4
Beenden Sie die Bildschirmaufzeichnung, indem Sie Strg+C drücken. Andernfalls wird die Aufzeichnung
stoppt automatisch bei drei Minuten oder nach Ablauf des von --time-limit
festgelegten Zeitlimits.
Wenn du den Bildschirm deines Geräts aufzeichnen möchtest, führe den Befehl screenrecord
aus
Video. Führen Sie dann den Befehl pull
aus, um das Video vom Gerät auf den Host herunterzuladen.
Computer. Hier ein Beispiel für eine Aufzeichnung:
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
Das Dienstprogramm screenrecord
kann mit jeder unterstützten Auflösung und Bitrate aufzeichnen,
und das Seitenverhältnis des Gerätebildschirms beibehalten wird. Die Dienstprogrammeinträge am nativen
Displayauflösung und -ausrichtung. Die maximale Dauer beträgt drei Minuten.
Einschränkungen des screenrecord
-Dienstprogramms:
- In der Videodatei wird kein Ton aufgezeichnet.
- Die Videoaufzeichnung ist für Geräte mit Wear OS nicht verfügbar.
- Einige Geräte können möglicherweise nicht in der nativen Bildschirmauflösung aufnehmen. Wenn Sie Probleme mit der Bildschirmaufzeichnung haben, versuchen Sie es mit einer niedrigeren Bildschirmauflösung.
- Das Drehen des Bildschirms während der Aufnahme wird nicht unterstützt. Dreht sich der Bildschirm während Aufzeichnung wird ein Teil des Bildschirms abgeschnitten.
Optionen | Beschreibung |
---|---|
--help
|
Befehlssyntax und Optionen anzeigen |
--size widthxheight
|
Legen Sie die Videogröße fest: 1280x720 . Der Standardwert ist die native
Bildschirmauflösung (falls unterstützt), 1280 x 720, falls nicht. Die besten Ergebnisse erzielen Sie mit einer unterstützten Größe
über den Advanced Video Coding (AVC)-Encoder deines Geräts. |
--bit-rate rate |
Legen Sie die Video-Bitrate in Megabit pro Sekunde fest. Der Standardwert ist 20 Mbit/s.
Du kannst die Bitrate erhöhen, um die Videoqualität zu verbessern. Dadurch erhältst du jedoch ein größeres Movie
Dateien. Im folgenden Beispiel wird die Bitrate für die Aufnahme auf 6 Mbit/s festgelegt:
screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time |
Lege die maximale Aufnahmezeit in Sekunden fest. Der Standardwert und der Höchstwert sind 180 (3 Minuten) |
--rotate |
Drehen Sie die Ausgabe um 90 Grad. Diese Funktion wird noch getestet. |
--verbose |
Zeigen Sie Loginformationen auf dem Befehlszeilenbildschirm an. Wenn Sie diese Option nicht festlegen, zeigt das Dienstprogramm während der Ausführung keine Informationen an. |
ART-Profile für Apps lesen
Ab Android 7.0 (API-Level 24) erfasst Android Runtime (ART) Ausführungsprofile für installierten Apps, mit denen die App-Leistung optimiert wird. Sehen Sie sich die erfassten Profile Finden Sie heraus, welche Methoden häufig ausgeführt werden und welche Klassen beim Start der App verwendet werden.
Hinweis:Das Ausführungsprofil kann nur abgerufen werden. filename, wenn Sie Root-Zugriff auf das Dateisystem haben, z. B. in einem Emulator.
Verwenden Sie den folgenden Befehl, um ein Textformat der Profilinformationen zu erstellen:
adb shell cmd package dump-profiles package
Verwenden Sie zum Abrufen der erstellten Datei:
adb pull /data/misc/profman/package.prof.txt
Testgeräte zurücksetzen
Wenn Sie Ihre App auf mehreren Testgeräten testen, kann es sinnvoll sein, Ihr Gerät zwischen
um beispielsweise Nutzerdaten zu entfernen und die Testumgebung zurückzusetzen. Sie können eine Werkstatt
eines Testgeräts mit Android 10 (API-Level 29) oder höher mithilfe der
testharness
adb
-Shell-Befehl, wie hier gezeigt:
adb shell cmd testharness enable
Beim Wiederherstellen des Geräts mit testharness
sichert das Gerät automatisch den RSA
Schlüssel, der das Debugging über die aktuelle Workstation an einem nichtflüchtigen Speicherort ermöglicht. Das heißt, nach
das Gerät zurückgesetzt wurde, kann die Workstation weiterhin Fehler beheben und adb
-Befehle ausgeben,
ohne manuell einen neuen Schlüssel zu registrieren.
Damit Sie Ihre App einfacher und sicherer weiter testen können, verwenden Sie dazu die
Wenn testharness
ein Gerät wiederherstellen möchte, werden auch die folgenden Geräteeinstellungen geändert:
- Das Gerät legt bestimmte Systemeinstellungen fest, sodass keine Assistenten für die Ersteinrichtung des Geräts angezeigt werden. Das heißt, das Gerät wechselt in einen Status, über den Sie Ihre App schnell installieren, debuggen und testen können.
- Einstellungen:
<ph type="x-smartling-placeholder">
- </ph>
- Deaktiviert den Sperrbildschirm.
- Deaktiviert Notfallbenachrichtigungen.
- Dadurch wird die automatische Synchronisierung für Konten deaktiviert.
- Deaktiviert automatische Systemupdates.
- Sonstiges:
<ph type="x-smartling-placeholder">
- </ph>
- Deaktiviert vorinstallierte Sicherheits-Apps
Wenn deine App die Standardeinstellungen der testharness
erkennen und sich daran anpassen muss
verwenden Sie die Methode
<ph type="x-smartling-placeholder"></ph>
ActivityManager.isRunningInUserTestHarness()
Squarelite
sqlite3
startet das sqlite
-Befehlszeilentool zum Untersuchen von SQLite-Datenbanken.
Sie enthält Befehle wie .dump
, um den Inhalt einer Tabelle auszugeben
.schema
, um die SQL CREATE
-Anweisung für eine vorhandene Tabelle auszugeben.
Sie können SQLite-Befehle auch über die Befehlszeile ausführen, wie hier gezeigt:
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
Hinweis: Es kann nur auf eine SQLite-Datenbank zugegriffen werden. wenn Sie Root-Zugriff auf das Dateisystem haben, z. B. in einem Emulator.
Weitere Informationen finden Sie in der Dokumentation zur sqlite3
-Befehlszeile.
ADB-USB-Back-Ends
Der ADB-Server kann über zwei Back-Ends mit dem USB-Stack interagieren. Dabei kann entweder die native
des Betriebssystems (Windows, Linux oder macOS) oder das libusb
-Back-End verwenden.
Einige Funktionen wie attach
, detach
und die Erkennung der USB-Geschwindigkeit
nur bei Verwendung des libusb
-Back-Ends verfügbar.
Sie können ein Back-End mithilfe der Umgebungsvariable ADB_LIBUSB
auswählen.
Wenn es nicht festgelegt ist, verwendet ADB sein Standard-Back-End. Das Standardverhalten variiert je nach Betriebssystem. Wird gestartet
mit ADB v34, ist der
Das Back-End liubusb
wird standardmäßig für alle Betriebssysteme mit Ausnahme von Windows verwendet, wo das native Back-End
werden standardmäßig verwendet. Wenn ADB_LIBUSB
gleich
festgelegt ist, bestimmt sie, ob das native Back-End oder libusb
verwendet wird. Weitere Informationen finden Sie in der
ADB manuelle Seite
finden Sie weitere Informationen zu ADB-Umgebungsvariablen.
ADB mDNS-Back-Ends
ADB kann das Multicast-DNS-Protokoll verwenden, um den Server und die Geräte automatisch zu verbinden. Der ADB-Server wird mit zwei Back-Ends ausgeliefert: Bonjour (mdnsResponseer von Apple) und Openscreen.
Für das Bonjour-Back-End muss auf dem Hostcomputer ein Daemon ausgeführt werden.
Unter macOS wird der integrierte Daemon von Apple immer ausgeführt. Unter Windows und Linux muss der Nutzer jedoch dafür sorgen, dass der mdnsd
-Daemon aktiv ist.
Wenn der Befehl adb mdns check
einen Fehler zurückgibt, verwendet ADB wahrscheinlich das Bonjour-Back-End, aber es wird kein Bonjour-Daemon ausgeführt.
Das Openscreen-Back-End benötigt keinen Daemon, um auf der Maschine ausgeführt zu werden. Die Unterstützung des Openscreen-Back-Ends unter macOS beginnt bei ADB v35. Windows und Linux werden ab ADB v34 unterstützt.
Standardmäßig verwendet ADB das Bonjour-Back-End. Dieses Verhalten kann mithilfe der Umgebungsvariable ADB_MDNS_OPENSCREEN
geändert werden.
(auf 1
oder 0
festgelegt).
Weitere Informationen findest du auf der Seite mit der ADB-Anleitung.