Es gibt vieles an der Android Debug Bridge, über das Sie vielleicht noch nichts wissen. Klicken Sie hier für einige nützliche Tipps und Tricks zur Verwendung von ADB!
Quicklinks
- Shell-Zugriff
- Verbindung mit mehreren Geräten herstellen
- Dateien übertragen
- Protokollierung
- Auflisten installierter Apps über ADB
- Installieren und Deinstallieren von Apps über ADB
- Extrahieren von APKs mit ADB
- Anwendungsdaten sichern und wiederherstellen
- App-Komponenten auflisten
- Einführung von Aktivitäten, Diensten und Rundfunkempfängern
- Deaktivieren und Aktivieren fast jeder App
- Screenshots aufnehmen
- Übertragen von Binärdaten zwischen dem PC und dem Android-Gerät
Wenn Sie ein Android-Enthusiast sind, der in der Modding-Szene lauert, oder schon länger App-Entwickler sind Mit der Zeit werden Sie früher oder später auf ein nettes Tool namens Android Debug Bridge oder ADB stoßen kurz. Es wird in Android Studio häufig als Befehlszeilen-Begleitdienstprogramm verwendet. Android-Entwickler nutzen es auch als eigenständige Lösung, um Apps manuell zu installieren und zu testen Android-Smartphones sowie emulierte Android-Geräte.
Aber ADB kann viel, und das meiste davon ist nicht nur für Entwickler nützlich. Selbst wenn Sie kein Entwickler sind und diesen Artikel lesen, besteht eine gute Chance, dass Sie ADB wahrscheinlich schon ein- oder zweimal verwendet haben Eine App seitlich laden oder eine Berechtigung anpassen. Aber das ist nicht alles, wofür ADB verwendet werden kann. Lesen Sie weiter, um einige Tipps und Tricks zur Verwendung von ADB zu erhalten, von denen Sie vielleicht noch nichts wussten.
Sie müssen ADB auf Ihrem Computer installiert und ausgeführt haben. Schauen Sie sich unbedingt unseren Artikel an wie man ADB installiert Wenn du Hilfe benötigst. Falls Sie Windows verwenden, müssen Sie dies auch tun Installieren Sie die entsprechenden OEM-USB-Treiber für Ihr Android-Gerät.
Shell-Zugriff
Wenn Sie ADB bereits verwendet haben, sind Sie möglicherweise daran gewöhnt, Befehle alle in einer Zeile auszuführen. Sie können ADB aber auch verwenden, um eine Terminal-Shell auf Ihrem Gerät zu öffnen und Befehle direkt auszuführen. Und es ist ganz einfach!
In Ihrem Terminal- oder Eingabeaufforderungsfenster:
adb shell
Sie werden dann mit einem begrüßt $
Symbol, mit dem Sie Befehle direkt auf Ihrem Gerät ausführen können.
Verbindung mit mehreren Geräten herstellen
ADB kann mit mehreren Geräten gleichzeitig kommunizieren. Allerdings müssen Sie in solchen Szenarien das Zielgerät angeben, wenn Sie ADB-Befehle ausgeben.
Dazu müssen Sie die Seriennummer des Zielgeräts kennen. Sie können die Seriennummer mit dem Befehl devices abrufen:
adb devices
Benutzen Sie jetzt die -s
Option zur Angabe der Seriennummer des Zielgeräts. Beispiel:
adb -s <serialnumber> shell
Dateien übertragen
Für Befehlszeilen-Fans bietet ADB eine sehr einfache Möglichkeit, Dateien auf und von Ihrem Android-Gerät zu übertragen. Benutzen Sie einfach die pull
Befehl zum Kopieren von Dateien und Verzeichnissen vom Gerät und dem push
Befehl zum Kopieren von Dateien und Verzeichnissen auf das Gerät:
Wenn Sie eine Datei oder ein Verzeichnis mit seinen Unterverzeichnissen auf das Android-Gerät kopieren möchten:
adb push local_path device_path
- Beispiel:
adb push D:\image.png /sdcard
Der folgende Befehl kopiert eine Datei oder ein Verzeichnis mit seinen Unterverzeichnissen vom Android-Gerät auf den Host-PC:
adb pull device_path local_path
- Beispiel:
adb pull /sdcard/backup_April.tar D:\Backup
Protokollierung
Android Studio bietet das Logcat-Fenster, das die Anzeige von Protokollen von Ihrem Gerät in Echtzeit unterstützt. Allerdings ist es für die Stapelverarbeitung nicht gerade nützlich. Glücklicherweise werden Android-Geräte mit dem über ADB verfügbaren Befehl logcat ausgeliefert, mit dem System- und Anwendungsprotokollmeldungen ausgegeben und auf dem Bildschirm ausgegeben werden können.
Die grundlegende Syntax lautet wie folgt:
adb logcat
Um mehr zu erfahren, schauen Sie sich unser Tutorial an So übernehmen Sie System-Logcats, Kernel-Protokolle und DMESG auf Android.
Ostereier
Google bietet zwei praktische Easter Eggs rund um den Logcat-Befehl an.
- Das erste ist lolcat, eine Anspielung auf das LOLcat Meme. Es liefert die gleiche Ausgabe wie der reguläre Logcat-Befehl.
adb lolcat
- Der zweite ist Longcat, der dem Befehl logcat -v long entspricht. Es zeigt alle Metadatenfelder an und trennt Nachrichten mit einer Leerzeile.
adb longcat
Auflisten installierter Apps über ADB
Um die auf Ihrem Gerät installierten Apps anzuzeigen, können Sie den folgenden Befehl verwenden:
adb shell pm list packages
Dadurch wird eine Liste der Paketnamen der installierten Apps zurückgegeben, wobei jede einzelne in einer eigenen Zeile mit vorangestellt ist package:
.
Optionen
Es gibt auch einige Optionen, mit denen Sie spezifischere Listen abrufen können.
- -F enthält den Pfad zum Basis-APK für jede App sowie den Paketnamen.
- -A stellt sicher, dass alle bekannten Nicht-APEX-Pakete zurückgegeben werden.
- -D führt dazu, dass der Befehl nur deaktivierte Pakete zurückgibt.
- -e führt dazu, dass der Befehl nur aktivierte Pakete zurückgibt.
- -S führt dazu, dass der Befehl nur Systempakete zurückgibt.
- -3 führt dazu, dass der Befehl nur Pakete von Drittanbietern zurückgibt.
- -ich enthält den Namen des Installationspakets für jedes Paket.
- -U enthält die Paket-UID für jedes Paket.
- -u schließt deinstallierte Pakete ein.
- --show-versioncode enthält den Versionscode für jedes Paket.
- --apex-only gibt nur APEX-Pakete zurück.
- --uid zeigt nur Pakete mit der angegebenen UID an.
- --Benutzer zeigt nur Pakete an, die zur angegebenen Benutzer-ID gehören.
Installieren und Deinstallieren von Apps über ADB
Dies ist eine relativ häufige Verwendung von ADB, aber es ist trotzdem erwähnenswert. Unter anderem können Sie auch ADB nutzen Android-Apps installieren und deinstallieren auf Ihr Android-Gerät.
Installieren einer APK
Wenn Sie ein APK auf Ihrem Computer haben, können Sie es wie folgt auf Ihrem Gerät installieren:
adbinstall-rsomeapk.apk
Denken Sie daran, es auszutauschen someapk.apk
mit dem vollständigen Pfad zu der APK, die Sie installieren möchten.
Optionen
Es gibt eine Reihe von Optionen für die Installation von APKs über ADB.
- Der -R Mit der Option kann ADB über eine vorhandene App installiert (d. h. aktualisiert) werden. Auf Android Pie und höher müssen Sie diese Option nicht angeben.
- Der -R Option für Android Pie und höher führt dazu, dass die Installation fehlschlägt, wenn die App bereits installiert ist.
- Der -ich Mit der Option können Sie einen Namen für das Installationspaket angeben. Dies wird zurückgegeben, wenn Android wissen möchte, was das APK installiert hat.
- Der -T Option ermöglicht eine APK mit android: testOnly="true" in seinem zu installierenden Manifest.
- Der -D Mit dieser Option kann die angegebene APK ein Downgrade auf eine bereits installierte App sein. Dies funktioniert nur, wenn beide Versionen der App debuggbar sind.
- Der -G Option für Android Marshmallow und höher gewährt der installierten App automatisch alle Laufzeitberechtigungen.
Das sind nicht alle. Wenn Sie eine vollständige Liste wünschen, können Sie sich die integrierte Dokumentation ansehen.
Mehrere APKs und Bundles
Wenn Sie eine Reihe von APKs gleichzeitig installieren möchten, entweder von mehreren Apps oder weil Sie ein App-Bundle installieren, können Sie ADBs verwenden install-multiple
Und install-multi-package
Merkmale.
Wenn alle Ihre APKs für eine App bestimmt sind, verwenden Sie install-multiple
:
adbinstall-multipleapk1.apkapk2.apk ...
Andernfalls verwenden Sie install-multi-package
:
adbinstall-multi-packageapp1.apkapp2.apk ...
Die Optionen für diese Befehle ähneln: install
, allerdings mit einigen Einschränkungen. Sehen Sie sich die integrierte Dokumentation von ADB an, um zu erfahren, welche Optionen verfügbar sind.
Eine App deinstallieren
Für die Deinstallation mit ADB benötigen Sie den Paketnamen der App, die Sie deinstallieren möchten. Schauen Sie sich den Abschnitt für an Auflistung der installierten Apps falls Sie es noch nicht getan haben.
Sobald Sie den Paketnamen kennen, ist die Deinstallation so einfach wie:
adb uninstall <packagename>
Im Allgemeinen können Sie mit diesem Befehl keine System- oder vorinstallierten Apps deinstallieren. Möglicherweise können Sie sie jedoch mit ADB deaktivieren. Schauen Sie sich den Abschnitt an Deaktivieren und Aktivieren fast jeder App für Details.
Extrahieren von APKs mit ADB
Es gibt viele Gründe, warum Sie die APK(s) für eine App extrahieren möchten. Vielleicht möchten Sie es für die zukünftige Verwendung sichern, oder es ist nicht mehr online verfügbar und Sie möchten es auf ein anderes Gerät übertragen.
Das Extrahieren einer App mit ADB ist ziemlich einfach. Zunächst möchten Sie den Paketnamen der App finden, die Sie extrahieren möchten. Es gibt mehrere Möglichkeiten, dies zu tun, aber am einfachsten ist es normalerweise, die App „Einstellungen“ Ihres Geräts zu verwenden, um das anzuzeigen Öffnen Sie die Liste aller installierten Apps, wählen Sie die gewünschte aus und scrollen Sie nach unten, bis Sie den Paketnamen oder die App finden AUSWEIS.
Sobald Sie den Paketnamen haben, führen Sie den folgenden Befehl aus:
adb shell pm path <packagename>
Dieser Befehl gibt den Pfad aller APKs für diesen Paketnamen zurück.
Sie können dann den folgenden Befehl verwenden, um jedes APK auf Ihren Computer zu laden:
adb pull /path/to/apk.apk
Anwendungsdaten sichern und wiederherstellen
Obwohl Google noch keine iOS-ähnliche Ein-Klick-Sicherungsmethode entwickelt hat, können Sie ADB verwenden, um installierte Apps zusammen mit ihren Daten zu sichern und wiederherzustellen. Allerdings ist die Funktionalität noch lange nicht perfekt, und Google hat es bereits getan Habe die Funktion als veraltet markiert.
Sichern
So sichern Sie eine einzelne Anwendung mit ihrer APK:
adb backup -apk <packagename> -f package_name_backup.ab
Falls Sie alle App-Daten auf einmal sichern möchten:
adb backup -f all -all -apk -nosystem
Da das Wiederherstellungsmodul keine einzelne App-spezifische Wiederherstellung durchführen kann, ist es besser, paketspezifische Backups zu erstellen. Der folgende Befehlsausschnitt (kompatibel mit Linux/macOS und dem Windows-Subsystem für Linux) kann dies für Sie erledigen:
for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done
Wiederherstellen
Zuerst müssen Sie die gespeicherte APK installieren;
adb install <packagename>.apk
Dann können Sie seine Daten wiederherstellen:
adbrestorepackage_name_backup.ab
Um es noch einmal zu betonen: Die Sicherungs- und Wiederherstellungsfunktionen von ADB weisen mehrere Einschränkungen auf, einschließlich unterschiedlicher Ergebnisse je nach ROM
App-Komponenten auflisten
Die Komponenten einer App sind Dinge wie Aktivitäten, BroadcastReceivers, Dienste usw. Manchmal ist es nützlich, die Namen dieser Komponenten in einer bestimmten App zu kennen, insbesondere wenn Sie versteckte Aktivitäten starten oder eine Übertragung mit bestimmten Daten senden möchten.
Leider verfügt ADB nicht über eine sehr saubere Möglichkeit, die Komponenten einer App aufzulisten. Aber es ist möglich. Führen Sie den folgenden Befehl aus:
adb shell dumpsys package
Es wird eine ganze Menge Text zurückgegeben.
- Scrollen Sie, bis Sie das finden Aktivitäts-Resolver-Tabelle Klicken Sie auf den Titel, um die Aktivitäten anzuzeigen.
- Schau unter Empfänger-Resolver-Tabelle für BroadcastReceiver.
- Überprüf den Service-Resolver-Tabelle für Dienstleistungen.
- Und so weiter.
Für jede Komponente werden die zum Starten erforderliche Aktion, der Name der Komponente und möglicherweise einige zusätzliche Informationen angezeigt.
Wenn Sie Aktivitäten, Dienste und Empfänger einfacher anzeigen möchten, können Sie alternativ die Root Activity Launcher-App von XDA Recognized Developer verwenden Zacharee1. Es zeigt Ihnen diese Komponenten für jede App sowie eine Reihe anderer praktischer Funktionen.
Preis: 0,99.
Einführung von Aktivitäten, Diensten und Rundfunkempfängern
ADB kann auch zum Starten von Aktivitäten, zum Starten von Diensten und zum Benachrichtigen von BroadcastReceivern verwendet werden. Bei Bedarf können Sie sogar Daten-URIs und Intent-Extras angeben.
Um Komponenten zu starten, benötigen Sie den Komponentennamen dessen, was Sie starten möchten. Wie man das bekommt, können Sie hier sehen Auflisten von App-Komponenten Abschnitt.
Die Befehlssyntax zum Starten einer Aktivität sieht etwa so aus:
am start -a <action> -n <component>
Die Befehlssyntax zum Starten eines Dienstes sieht etwa so aus:
am startservice -a <action> -n <component>
Die Befehlssyntax zum Benachrichtigen eines BroadcastReceivers sieht etwa so aus:
am broadcast -a <action> -n <component>
In den meisten Fällen müssen Sie für Aktivitäten und Dienste keine Aktion explizit angeben. Sie benötigen es normalerweise nur, wenn die Komponente eine andere als verwendet android.intent.action. HAUPTSÄCHLICH.
Zusätzlich zur grundlegenden Syntax erfahren Sie hier, wie Sie weitere zu übergebende Daten angeben. Im Allgemeinen sollten alle Datenwerte in doppelte Anführungszeichen gesetzt werden.
- -D ermöglicht Ihnen die Angabe eines Daten-URI.
- -e oder --es ermöglicht Ihnen die Angabe eines String-Extras.
- --esn ermöglicht Ihnen die Angabe eines Null-String-Extras.
- --ez wird verwendet, um ein boolesches Extra anzugeben.
- --ei wird verwendet, um ein ganzzahliges Extra anzugeben.
- --el dient zur Angabe eines langen Extras.
- --ef wird ein Float-Extra übergeben.
- --EU übergibt einen zusätzlichen URI.
- --ecn kann verwendet werden, um einen zusätzlichen Komponentennamen anzugeben.
-
--eia
übergibt die Werte als Integer[]-Extra., ,... -
--eial
übergibt die Werte als Liste, ,... . - Dieselben Array- und Listenargumente funktionieren auch für Longs, Floats und Strings. Ersetzen Sie einfach die ich mit dem entsprechenden Buchstaben.
- -F ermöglicht Ihnen die Angabe eines Flags.
Es stehen Ihnen noch mehr Verhaltensoptionen zur Verfügung. Weitere Informationen finden Sie in der integrierten Dokumentation.
Deaktivieren und Aktivieren fast jeder App
System-Apps in Android können nicht deinstalliert werden und viele davon können leider auch nicht über die Einstellungen deaktiviert werden. Mit ADB können Sie sie zwar nicht deinstallieren, es kann Ihnen aber möglicherweise dabei helfen, sie zu deaktivieren.
Stellen Sie zunächst sicher, dass Sie den Paketnamen der App erhalten, die Sie deaktivieren möchten. Probieren Sie dann diese Befehle aus. Wenn einer fehlschlägt, versuchen Sie es mit der nächsten Option.
-
Uhr deaktivieren
- Zum erneuten Aktivieren verwenden Sie pm aktivieren
-
pmdisable-user --user 0
- Zum erneuten Aktivieren verwenden Sie pm aktivieren
-
PN verstecken
- Zum erneuten Aktivieren verwenden Sie Uhr einblenden
-
Uhr suspendieren
- Zum erneuten Aktivieren verwenden Sie Suspendierung aufheben
-
pm uninstall -k --user 0
- Zum erneuten Aktivieren verwenden Sie pm install-existing
- Dadurch wird die Anwendung effektiv aus Ihrem Benutzerprofil deinstalliert. Während der Befehl zum erneuten Aktivieren sollen funktioniert, es gibt keine Garantie dafür. Möglicherweise müssen Sie die App auf die Werkseinstellungen zurücksetzen, um sie wiederherzustellen.
- Wenn Sie mehrere Benutzerprofile auf Ihrem Gerät verwenden, stellen Sie sicher, dass Sie in den obigen Befehlen 0 durch Ihre tatsächliche Benutzer-ID ersetzen.
- Zum erneuten Aktivieren verwenden Sie pm install-existing
Um mehr zu erfahren, schauen Sie sich unser Tutorial an So deinstallieren Sie Carrier- und OEM-Bloatware ohne Root-Zugriff.
Screenshots aufnehmen
Die meisten Android-ROMs bieten zwei praktische Shell-Dienstprogramme – Screencap und Screenrecord – zum Erstellen von Screenshots bzw. zum Aufzeichnen von Bildschirmaktivitäten. Sie können sie direkt über die ADB-Shell aufrufen, um einen statischen Screenshot oder einen Videoausschnitt Ihres Telefonbildschirms aufzunehmen und ihn direkt im internen Speicher des Geräts zu speichern.
Die Syntax zum Aufnehmen eines Screenshots ist ziemlich einfach:
adb shell screencap /sdcard/screenshot.png
Wenn Sie einen dynamischen Screenshot erstellen müssen, gehen Sie entsprechend wie folgt vor:
adb shell screenrecord /sdcard/recording.mp4
Wie zu erwarten ist, ist das Screencap-Tool eher einfach, während das Screenrecord-Dienstprogramm mehrere Parameter bietet. Die Optionen für Letzteres sind wie folgt:
-
--size WIDTHxHEIGHT
- Stellen Sie die Auflösung der Videodatei ein (z. B. „1280x720“). Standardmäßig wird versucht, die Hauptbildschirmauflösung des Zielgeräts zu verwenden (falls unterstützt), andernfalls wird auf 1280 x 720 zurückgegriffen.
-
--bit-rate RATE
- Legen Sie die Videobitrate in Bits pro Sekunde fest. Der Wert kann in Bits oder Megabits angegeben werden, z. B. „4000000“ entspricht „4M“.
-
--Fehlerbericht
- Sie können zusätzliche Informationen hinzufügen, z. B. eine Zeitstempel-Einblendung, die zur Veranschaulichung von Fehlern nützlich sein kann.
-
--time-limit ZEIT
- Legen Sie die maximale Aufnahmezeit in Sekunden fest. Standard/Maximum ist 180.
-
--display-id ID
- Geben Sie die aufzuzeichnende physische Display-ID an. Die Standardeinstellung ist auf die primäre Anzeige eingestellt. Gültige Anzeige-IDs finden Sie unter „dumpsys SurfaceFlinger --display-id“.
-
--verbose
- Zeigen Sie detaillierte Informationen zur Aufnahmesitzung an.
Sie können die Funktionen der in Android integrierten Dienstprogramme zur Bildschirmaufnahme weiter erweitern scrcpy. Es handelt sich um eine Open-Source-Bildschirmspiegelungslösung, die die Leistungsfähigkeit von ADB nutzt.
Übertragen von Binärdaten zwischen dem PC und dem Android-Gerät
Falls Sie keine vollwertige ADB-Shell erstellen möchten, sondern einen optimierten Passthrough von Binärdaten zwischen dem Host-PC und dem Android-Zielgerät integrieren möchten, können Sie dies nutzen exec-in
Und exec-out
Befehle.
Trotz ihrer längere Existenz, die Befehle exec-in und exec-out sind noch nicht dokumentiert. Sie können aufgrund der Art und Weise, wie unterschiedliche Shells Ein- und Ausgaben verarbeiten, zu Dateibeschädigungen führen. Mit Vorsicht verwenden.
Der erste hilft Ihnen, einen Befehl auf Android auszuführen und die ungefilterte Konsoleneingabe als Parameter einzugeben, während der Die zweite macht genau das Gegenteil, d. h. führt einen Befehl auf Android aus und erfasst dessen ungefilterte Binärausgabe vom Host-Betriebssystem.
Beispiel:
adb exec-out "screencap -p" > "D:\screenshot.png"
Dies wird die verwenden screencap
Befehl von Android, einen Screenshot des Displays des Telefons aufzunehmen, speichert ihn aber direkt als „screenshot.png“ in der D:-Partition des Host-PCs (vorausgesetzt, dieser läuft unter Windows). Andererseits,
adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"
Dadurch wird der Inhalt der Datei „backup.tar“ extrahiert, die in der Partition D: des Host-PCs (unter Windows) im Stammverzeichnis des internen Speichers des Android-Geräts gespeichert ist.
ADB ist ein unglaublich leistungsfähiges Tool und kann noch viel mehr als nur das, was oben beschrieben wurde. Die Befehle in diesem Artikel sind nur ein nützlicher Ausgangspunkt. Für eine fortgeschrittenere Verwendung sehen Sie sich Befehle wie an cmd -l um verschiedene Dienste anzuzeigen, mit denen Sie möglicherweise interagieren können und ls -l /system/bin um die verschiedenen ausführbaren Befehlsdateien anzuzeigen, die in Ihrem Android-ROM verfügbar sind.
Weitere Android-Reisen und -Ticks finden Sie in unseren Leitfäden unter So rooten Sie Ihr Android-Smartphone, So installieren Sie die TWRP-Wiederherstellung, Und So installieren Sie ein benutzerdefiniertes ROM auf Ihrem Android-Gerät.