Android Debug Bridge (ADB)

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 einer geraden 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 dein 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:

  1. Entwickleroptionen aktivieren auf deinem Gerät.

  2. Öffne Android Studio und wähle Geräte über WLAN koppeln aus. Konfigurationsmenü.

    Drop-down-Menü für Ausführungskonfigurationen
    Abbildung 1: Menü „Run Configurations“ (Konfigurationen ausführen) aus.

    Das Fenster Geräte über WLAN koppeln öffnet sich, wie in Abbildung 2 dargestellt.

    Screenshot des Pop-up-Fensters zum Koppeln von Geräten über WLAN
    Abbildung 2: Pop-up-Fenster zum Koppeln von Geräten per QR-Code oder Koppeln Code.
  3. Tippen Sie auf Ihrem Gerät auf Debugging über WLAN und koppeln Sie das Gerät:

    Screenshot von
            Ein Pixel Smartphone, auf dem die Einstellung „Fehlerbehebungssysteme für WLAN“ zu sehen ist.
    Abbildung 3: Screenshot der Einstellung Debugging über WLAN bei aktiviertem ein Google Pixel Smartphone.
    1. 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).

    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.

      Screenshot des Beispiel-PIN-Code-Eintrags
      Abbildung 4: Beispiel für die Eingabe eines sechsstelligen Codes.
  4. 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.

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

    Screenshot von
            Kacheln für Schnelleinstellungen für Entwickler auf einem Google Pixel
    Abbildung 5: Die Einstellung Kacheln für Entwickler mit Schnelleinstellungen können Sie das Debugging über WLAN schnell aktivieren und deaktivieren.

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:

  1. Aktivieren Sie die Entwickleroptionen wie zuvor beschrieben auf Ihrem Gerät.

  2. Aktivieren Sie wie zuvor beschrieben Debugging über WLAN auf Ihrem Gerät.

  3. Öffnen Sie auf Ihrer Workstation ein Terminalfenster und gehen Sie zu android_sdk/platform-tools

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

  5. Führen Sie auf dem Terminal Ihrer Workstation adb pair ipaddr:port aus. IP-Adresse verwenden und die oben angegebene Portnummer.

  6. Wenn Sie dazu aufgefordert werden, geben Sie wie unten gezeigt den Kopplungscode ein.

    Screenshot von
            über die Befehlszeile ausführen.
    Abbildung 6: Eine Meldung zeigt an, dass dein Gerät erfolgreich war gekoppelt.

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 über adb 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:

  1. Android-Gerät und adb-Hostcomputer verbinden mit einem gemeinsamen WLAN-Netzwerk.
  2. 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.

  3. Verbinden Sie das Gerät über ein USB-Kabel mit dem Hostcomputer.
  4. Legen Sie das Zielgerät so fest, dass es auf Port 5555 auf eine TCP/IP-Verbindung wartet:
    adb tcpip 5555
    
  5. Ziehen Sie das USB-Kabel vom Zielgerät ab.
  6. Ermitteln Sie die IP-Adresse des Android-Geräts. Auf einem Nexus-Gerät können Sie beispielsweise IP-Adresse unter Einstellungen > Über das Tablet (oder Über das Telefon) > Status > IP-Adresse:
  7. Stellen Sie eine Verbindung zum Gerät über seine IP-Adresse her:
    adb connect device_ip_address:5555
    
  8. Prüfen Sie, ob der Hostcomputer mit dem Zielgerät verbunden ist:
    $ adb devices
    List of devices attached
    device_ip_address:5555 device
    

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:
    • offline: Das Gerät ist nicht mit adb verbunden oder nicht antworten.
    • device: Das Gerät ist mit dem adb-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 zu adb 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 Attribut devices 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 dem -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 ausführen. So geben Sie das Ziel an:

  1. Verwenden Sie den Befehl devices, um die Seriennummer des Ziels abzurufen.
  2. Sobald Sie die Seriennummer haben, verwenden Sie das -s-Option mit den adb-Befehlen zur Angabe der Seriennummer.
    1. Wenn Sie viele adb-Befehle verwenden möchten, können Sie Umgebungsvariable $ANDROID_SERIAL, die die Seriennummer enthält .
    2. Wenn Sie beides -s und $ANDROID_SERIAL, -s Überschreibungen $ANDROID_SERIAL.

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äte, aber nur ein Hardwaregerät angeschlossen 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

Tabelle 1 Verfügbare Aktivitätsmanager-Befehle

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:

  • -D: Debugging aktivieren
  • -W: Warten, bis der Start abgeschlossen ist.
  • --start-profiler file: Profiler starten und Ergebnisse senden an file.
  • -P file: Ähnlich wie --start-profiler, Die Profilerstellung endet jedoch, wenn die Anwendung inaktiv wird.
  • -R count: Wiederholen Sie den Aktivitätsstart count Mal. Vor jeder Wiederholung wird die Top-Aktivität abgeschlossen.
  • -S: Erzwinge das Beenden der Ziel-App, bevor die Aktivität gestartet wird.
  • --opengl-trace: Aktiviert das Tracing von OpenGL-Funktionen.
  • --user user_id | current: Geben Sie an, als welcher Nutzer ausgeführt werden soll. wenn nicht und dann als aktueller Nutzer ausgeführt werden.
startservice [options] intent Service starten, der durch intent.

Weitere Informationen finden Sie in der Spezifikation für Intent-Argumente.

Es gibt folgende Optionen:

  • --user user_id | current: Geben Sie an, als welcher Nutzer ausgeführt werden soll. Falls nicht und dann als aktueller Nutzer ausgeführt werden.
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:

  • --user user_id | all | current: Geben Sie an, welche Prozesse des Nutzers beendet werden sollen. Wenn nicht angegeben, alle Nutzer beenden Prozesse.
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:

  • [--user user_id | all | current]: Geben Sie an, an welchen Nutzer die Nachricht gesendet werden soll. Falls nicht und dann an alle Nutzer senden.
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:

  • -r: Rohergebnisse drucken (andernfalls decodieren) report_key_streamresult). Verwenden mit [-e perf true], um Rohdaten für Leistungsmessungen zu generieren.
  • -e name value: Argument name festlegen an value. Für Test-Runner ist das gängige Format -e testrunner_flag value[,value...].
  • -p file: Schreibt Profildaten in file.
  • -w: Warten Sie, bis die Instrumentierung abgeschlossen ist, bevor Sie zurückkehren. Erforderlich für Test-Runnern.
  • --no-window-animation: Deaktiviert Fensteranimationen während der Ausführung.
  • --user user_id | current: Geben Sie an, in welcher Nutzerinstrumentierung ausgeführt wird. Wird nicht angegeben, wird es im aktuellen Nutzer ausgeführt.
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:

  • --user [user_id | current]: Bei der Angabe eines Prozessnamens geben Sie den Nutzer des Prozesses an, der aus der Datei gespeichert werden soll. Wenn nicht angegeben, wird der aktuelle Nutzer verwendet.
  • -b [| png | jpg | webp]: Dump von Bitmaps aus dem Grafikspeicher. Geben Sie optional das Format für die Dumpdatei an (standardmäßig PNG).
  • -n: Dump des nativen Heaps anstelle des verwalteten Heaps.
set-debug-app [options] package App „package“ auf Fehlerbehebung setzen.

Es gibt folgende Optionen:

  • -w: Beim Start der Anwendung auf den Debugger warten.
  • --persistent: Diesen Wert beibehalten.
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:

  • --gdb: Startet gdbserv am angegebenen Anschluss bei Absturz/ANR.
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:
am display-size 1280x800

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:
am display-density 480

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

Tabelle 2: Verfügbare Paketmanager-Befehle

Befehl Beschreibung
list packages [options] filter Alle Pakete drucken (optional nur) diejenigen, deren Paketname den Text in filter enthält.

Optionen:

  • -f: Siehe zugehörige Datei.
  • -d: Filtert, um nur deaktivierte Pakete anzuzeigen.
  • -e: So filtern Sie nur die aktivierten Pakete.
  • -s: So filtern Sie nur Systempakete.
  • -3: So filtern Sie nur Drittanbieterpakete.
  • -i: Siehe das Installationsprogramm für die Pakete.
  • -u: Auch deinstallierte Pakete schließen.
  • --user user_id: Der abzufragende Userspace.
list permission-groups Alle bekannten Berechtigungsgruppen drucken.
list permissions [options] group Alle bekannten Berechtigungen drucken (optional) diejenigen in group.

Optionen:

  • -g: Nach Gruppe organisieren.
  • -f: Alle Informationen drucken.
  • -s: Kurze Zusammenfassung.
  • -d: Nur gefährliche Berechtigungen auflisten.
  • -u: nur die Berechtigungen auflisten, die Nutzer sehen.
list instrumentation [options] Listen Sie alle Testpakete auf.

Optionen:

  • -f: APK-Datei für das Testpaket auflisten
  • target_package: Listet Testpakete nur für diese App auf.
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:

  • -r: Vorhandene App unter Beibehaltung der Daten neu installieren
  • -t: Die Installation von Test-APKs zulassen. Gradle generiert ein Test-APK, wenn Sie Ihre App nur ausgeführt, Fehler behoben oder die Android Studio-Build > Erstellen APK-Befehl. Wenn das APK mit einem SDK für die Entwicklervorschau erstellt wurde, musst du das Attribut Option „-t durch den Befehl install, wenn Sie ein Test-APK installieren.
  • -i installer_package_name: Geben Sie den Namen des Installationspakets an.
  • --install-location location: Installationsort festlegen Verwenden Sie dazu einen der folgenden Werte:
    • 0: Der Standardinstallationspfad wird verwendet.
    • 1: Im internen Gerätespeicher installieren.
    • 2: Auf externen Medien installieren.
  • -f: Paket auf dem internen Systemspeicher installieren
  • -d: Ermöglicht das Downgrade des Versionscodes.
  • -g: Alle im App-Manifest aufgeführten Berechtigungen werden gewährt.
  • --fastdeploy: Schnelles Aktualisieren eines installierten Pakets, indem nur Teile von aktualisiert werden das geänderte APK.
  • --incremental: Installiert genug des APK, um die App zu starten. während die verbleibenden Daten im Hintergrund gestreamt werden. Wenn du diese Funktion nutzen möchtest, musst du die APK haben, erstellen Sie ein APK Signature Scheme v4-Datei und speichere sie im selben Verzeichnis wie das APK. Diese Funktion wird nur auf folgenden Geräten unterstützt: bestimmte Geräte. Diese Option zwingt adb dazu, die Funktion zu verwenden oder schlägt andernfalls fehl mit ausführlichen Informationen zur Fehlerursache. Fügen Sie die Option --wait an Warten Sie, bis das APK vollständig installiert ist, bevor Sie Zugriff auf das APK gewähren.

    --no-incremental verhindert, dass adb diese Funktion verwenden kann.

uninstall [options] package Entfernt ein Paket aus dem System.

Optionen:

  • -k: Die Daten- und Cache-Verzeichnisse werden nach dem Entfernen des Pakets beibehalten.
  • --user user_id: Gibt den Nutzer an, für den das Paket entfernt wird.
  • --versionCode version_code: Die App wird nur deinstalliert, wenn sie den angegebenen Versionscode hat.
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:

  • --user user_id: Der zu deaktivierende Nutzer.
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:
  • 0: Automatisch: Das System wählt den besten Standort aus.
  • 1: Intern: Installation im internen Gerätespeicher.
  • 2: Extern: Auf externen Medien installieren.

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:
  • 0 [auto]: Vom System den besten Standort auswählen lassen
  • 1 [internal]: Im internen Gerätespeicher installieren
  • 2 [external]: Auf externen Medien installieren
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:

  • none: Für diese Domain wurden keine Daten aufgezeichnet
  • verified: Die Domain wurde bestätigt.
  • approved: Erzwungene Genehmigung, in der Regel über die Shell
  • denied: erzwungene Ablehnung, in der Regel über die Shell
  • migrated: Bestätigung aus einer alten Antwort beibehalten
  • restored: Bestätigung aus einer Wiederherstellung von Nutzerdaten beibehalten
  • legacy_failure: von einem alten Prüfer abgelehnt, unbekannter Grund
  • system_configured: automatisch von der Gerätekonfiguration genehmigt
  • >= 1024: benutzerdefinierter Fehlercode, der für die Geräteprüfung spezifisch ist

Es gibt folgende Optionen:

  • --user user_id: Nutzerauswahl einschließen. Alle Domains einschließen, und nicht nur diejenigen mit automatischer Überprüfung.
reset-app-links [options] [package]

Domainbestätigungsstatus für das angegebene Paket oder für alle zurücksetzen Pakete, wenn keins angegeben ist.

  • package: das Paket, das zurückgesetzt werden soll, oder „alle“ zum Zurücksetzen aller Pakete

Es gibt folgende Optionen:

  • --user user_id: Nutzerauswahl einschließen. Alle Domains einschließen, und nicht nur diejenigen mit automatischer Überprüfung.
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.

  • --re-verify: wird gesendet, auch wenn das Paket eine Antwort erfasst hat
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.

  • --package package: das festzulegende Paket oder „all“ zum Festlegen aller Pakete
  • state: Der Code, der für die Domains festgelegt werden soll. Gültige Werte sind:
    • STATE_NO_RESPONSE (0): wird zurückgesetzt, als wäre keine Antwort aufgezeichnet worden.
    • STATE_SUCCESS (1): Domain als erfolgreich von Domain bestätigt behandeln Verification Agent erhalten. Der Agent für die Domainbestätigung kann überschreiben.
    • STATE_APPROVED (2): Domain wie immer genehmigt behandeln, wodurch der Domainbestätigungs-Agent daran, es zu ändern.
    • STATE_DENIED (3): Domain als immer abgelehnt behandeln, wodurch die Domain verhindert wird Überprüfungs-Agent daran hindern, ihn zu ändern.
  • domains: durch Leerzeichen getrennte Liste der Domains, die geändert werden sollen, oder "alle" bis um jede Domain zu ändern.
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.

  • --user user_id: der Nutzer, für den die Auswahl geändert werden soll
  • --package package: das festzulegende Paket
  • enabled: ob die Domain genehmigt werden soll
  • domains: durch Leerzeichen getrennte Liste der Domains, die geändert werden sollen, oder "alle" bis jede Domain ändern
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.

  • --user user_id: der Nutzer, für den die Auswahl geändert werden soll
  • --package package: das festzulegende Paket
  • enabled: ob die Domain genehmigt werden soll
  • domains: durch Leerzeichen getrennte Liste der Domains, die geändert werden sollen, oder "alle" bis jede Domain ändern
set-app-links-allowed --user user_id [--package package] allowed

Einstellung für die automatisch bestätigte Linkverarbeitung für ein Paket umschalten.

  • --user user_id: der Nutzer, für den die Auswahl geändert werden soll
  • --package package: das festzulegende Paket oder „all“ zum Festlegen aller Pakete; Pakete werden zurückgesetzt, wenn kein Paket angegeben ist.
  • allowed: „true“, damit das Paket automatisch bestätigte Links öffnen kann, „false“ zum Deaktivieren
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.

  • --user user_id: der Nutzer, der abgefragt werden soll
  • --package package: Optional auch für alle Webdomains drucken von einem Paket oder „all“ deklariert sind. zum Drucken aller Pakete
  • domains: durch Leerzeichen getrennte Liste der Domains, die abgefragt werden sollen

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

Tabelle 3 Verfügbare Befehle von Device Policy Manager

Befehl Beschreibung
set-active-admin [options] component Legt component als aktiven Administrator fest.

Es gibt folgende Optionen:

  • --user user_id: Geben Sie den Zielnutzer an. Sie können auch --user current, um den aktuellen Nutzer auszuwählen.
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:

  • --user user_id: Geben Sie den Zielnutzer an. Sie können auch --user current übergeben, um den aktuellen Nutzer auszuwählen.
  • --name name: Geben Sie den visuell lesbaren Organisationsnamen an.
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:

  • --user user_id: Geben Sie den Zielnutzer an. Sie können auch --user current, um den aktuellen Nutzer auszuwählen.
  • --name name: Geben Sie den visuell lesbaren Organisationsnamen an.
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:

  • --user user_id: Geben Sie den Zielnutzer an. Sie können auch --user current, um den aktuellen Nutzer auszuwählen.
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.

Tabelle 4 screenrecord Optionen

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. Untersuchen Sie 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 Gerät wechselt in einen Status, über den Sie Ihre App schnell installieren, debuggen und testen können.
  • Einstellungen:
    • Deaktiviert den Sperrbildschirm.
    • Deaktiviert Notfallbenachrichtigungen.
    • Dadurch wird die automatische Synchronisierung für Konten deaktiviert.
    • Deaktiviert automatische Systemupdates.
  • Sonstiges:
    • Deaktiviert vorinstallierte Sicherheits-Apps

Wenn deine App die Standardeinstellungen der testharness erkennen und sich daran anpassen muss verwenden Sie die Methode 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, wird damit bestimmt, 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-Backends

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 ADB-Anleitung.