ADB und der USB-Debugging-Modus sind vor allem Power-Usern ein Begriff. Die Android Debug Bridge ist aber auch im Android-Alltag ein praktisches Tool. So gelingen Ihnen die ersten Schritte mit ADB.
Wer Apps für Android entwickeln möchte, kommt an der ADB (Android Debug Bridge [1]) nicht vorbei. Doch auch für den „normalen Anwender“ kann sich diese als sehr nützlich erweisen, wie dieser Artikel aufzeigen soll. Dafür muss auch nicht gleich das komplette Android-SDK (Software Development Kit [2]) installiert werden, wenige Dateien sind in der Regel völlig ausreichend.
Dass ein Android-Entwickler nicht ohne dieses Tool auskommt, leuchtet fast jedem ein. Doch wozu soll ein „normaler Anwender“ sich damit herumschlagen? Auch wenn das „D“ in „ADB“ nicht für „Developer“ (Entwickler), sondern für „Debug“ (Fehlersuche) steht: Welcher Anwender beschäftigt sich schon mit der Fehlersuche in Apps?
Damit niemand aufgrund dieses Vorurteils diesen Artikel überspringt, gleich vorab: Mit ADB lässt sich weit mehr bewerkstelligen. Etwa das Anlegen (oder Wiederherstellen) eines vollständigen Backups des Android-Gerätes, ganz ohne „Root“, ab Android 4.0. Aber auch weitere Möglichkeiten zur Verwaltung des Androiden sind hier gegeben: ADB und der USB-Debugging-Modus Androids dient Power-Usern etwa als universelles Werkzeug beim Rooten und Flashen von Handys. So können Sie Dateien in Bereiche des Systems schmuggeln, auf die Sie sonst keinen Zugriff haben.
Damit Sie über ADB jedoch Zugriff auf Ihr Handy erlangen, müssen Sie in den Einstellungen unter den Entwickleroptionen das USB-Debugging aktivieren. In aktuellen Android-Versionen sind die Entwickleroptionen jedoch versteckt, so dass Sie USB-Debugging nicht auf Anhieb finden. Die Entwickleroptionen müssen erst aktiviert werden.
USB-Debugging aktivieren
Wer auf seinem Androiden schon ein aktuelles Android ab Version „Jelly Bean“ 4.2 hat, der findet in den Einstellungen die Entwickleroptionen erst einmal gar nicht. Aus Sicherheitsgründen hat Google diese tief in das Android-System eingreifenden Funktionen inzwischen versteckt. Doch das Versteck ist bewusst nicht allzu sicher gewählt, Bastlern und Entwicklern sollen keine Stöcke zwischen die Beine geworfen werden.
Zum Freischalten der Entwickleroptionen öffnen Sie die Einstellungen und gehen in den Abschnitt „Über das Telefon“ beziehungsweise „Über das Tablet“. Dort tippen Sie sieben (oder ruhig auch mehr) mal auf die Build-Nummer, ein kleiner Countdown sagt Ihnen wann es soweit ist. Sobald Sie die Tipperei hinter sich gebracht haben, gehen Sie in den Einstellungen einen Schritt zurück und finden nun am Ende der Liste die jetzt freigeschalteten Entwickleroptionen.
Die Optionen sind auf den meisten Androiden und auch nach dem Freischalten noch nicht aktiv. Das müssen Sie abschließend über den Schieberegler auf der rechten oberen Ecke noch von Hand übernehmen. Eine kurze Warnung gibt Ihnen noch einmal zu verstehen, dass die Entwickleroptionen durchaus nur für User gedacht sind, die verstehen was sie tun.
Auch USB-Debugging möchte noch einmal extra aktiviert werden, den entsprechenden Punkt finden Sie wieder in den Entwickleroptionen. Besonders auf Androiden mit Android 4.1 oder jünger sollten Sie darauf achten, dass Sie USB-Debugging nur dann aktivieren, wenn Sie die Funktion auch wirklich benötigen. Theoretisch denkbar ist ein Angriff Ihres Handys über manipulierte öffentliche Ladestationen. Das System warnt Sie nicht, wenn ein Rechner auf die erweiterten Funktionen zugreifen möchte.
Aus diesem Grund wurde ab Android 4.2.2 RSA-Schlüssel zur Authentifizierung eingebaut. Dieser individuelle Schlüssel wird bei der Installation des SDKs jeweils individuell generiert. So kann ein Rechner sich nur dann per USB-Debugging verbinden, wenn Sie den Zugriff explizit erlauben. Sollten Sie öfters das USB-Debugging mit diesem Rechner benötigen, dann setzen Sie den Haken beim „Von diesem Computer immer zulassen“.
Haben Sie das Android-SDK auf Ihrem PC installiert, können Sie nun via adb devices
überprüfen, ob Ihr Androide erfolgreich gefunden werden kann. Eventuell müssen Sie auch noch einen ADB-Treiber des Handy-Herstellers einspielen. Alternativ gibt es auch einen universellen ADB-Treiber, der besonders Handy-Bastlern – die immer wieder andere Androiden in der Hand haben – viel Arbeit ersparen kann.
Installation von ADB
Wie bereits eingangs erwähnt: Um die ADB nutzen zu können, müssen Sie nicht gleich das vollständige Android-SDK herunterladen (ca. 100 MByte) und installieren. Einige wenige Dateien genügen vollauf. So finden sich beispielsweise bei Minimal ADB & Fastboot [3] Pakete für eine Minimal-Installation, deren Download-Größe weniger als 2 MByte (installiert weniger als 15 MByte) beträgt. Windows-Anwender benötigen zusätzlich noch einen für ihr Android-Gerät passenden Treiber: Hier hat glücklicherweise Koushik Dutta (der Entwickler von ClockworkMod und Helium Backup) einen für nahezu alle Android-Geräte passenden universellen Treiber erstellt [4].
Zur Installation entpacken Sie einfach die im ZIP-Archiv enthaltenen Dateien in ein Verzeichnis der Wahl, welches dann empfohlenerweise auch dem Such-Pfad hinzugefügt wird – und schon ist ADB einsatzbereit. Ob alles geklappt hat, lässt sich nun über den Befehl adb devices
prüfen – sobald Sie Ihr Android-Gerät per USB-Kabel mit dem Computer verbunden haben. War die Installation erfolgreich, sollte die Ausgabe etwa folgendermaßen aussehen:
$ adb devices List of devices attached 015ECFC703028007 device
Sollte dieser Befehl fehlen schlagen und die Ausgabe leer bleiben, finden sich in einem Artikel bei StackExchange [5] noch zahlreiche weitere Tipps ADB zum Laufen bekommen.
Backups erstellen/einspielen
Ein vollständiges Backup des Android-Gerätes lässt sich ab Android 4.0 mit Hilfe der ADB erstellen. Von der Kommandozeile aus erledigt dies der Befehl adb backup -apk -shared -all -f /Pfad/zur/backup.ab
. Wird der Parameter -f
nicht angegeben, landet das Backup in der Datei backup.ab
im aktuellen Verzeichnis. Nach Absetzen des Befehls muss die Erstellung des Backups noch auf dem Gerät selbst bestätigt werden (damit nicht irgend ein Missetäter sich einfach eine Kopie verschaffen kann). Dabei kann auch ein Passwort zur Verschlüsselung des Backups angegeben werden.
Zahlreiche weitere Parameter stehen für adb backup
zur Verfügung: So lassen sich etwa auch einzelne Apps sichern, oder nur die Daten einer Anwendung. Sie können festlegen, ob Daten von der SD-Karte mit gesichert werden sollen (-shared
), und mehr. Für eine vollständige Übersicht, ruft man einfach adb backup
ohne Parameter auf.
Anders sieht es bei der Wiederherstellung aus. Hier gilt: „Alles oder Nichts“. Der Befehl adb restore /Pfad/zur/backup.ab
stellt das komplette Backup wieder her, eine Auswahl einzelner Elemente ist nicht möglich.
Wer es lieber grafisch mag, kann auch zu Holo Backup [6] greifen. Diese kleine Applikation steht als Frontend zu adb backup
sowie adb restore
für Windows und Linux zur Verfügung. Für Unterwegs – wenn gerade einmal kein PC zur Hand ist – bietet sich überdies Helium App Sync and Backup [7] an. Auch diese App setzt auf adb backup
auf, läuft jedoch direkt auf dem Handy.
Apps installieren und löschen
Hin und wieder möchte sich eine App nicht deinstallieren lassen; hier kann die Kommandozeile mit adb shell pm uninstall <PaketName>
gute Dienste leisten. Sollen die Daten bei der De-Installation erhalten bleiben, setzen Sie zusätzlich den Schalter -k
(für „keep“ = „behalten“) ein, also etwa adb shell pm uninstall -k com.facebook.katana
zur De-Installation der Facebook-App unter Beibehaltung ihrer Daten. Nach einer Neu-Installation der App stehen die Daten somit wieder zur Verfügung.
Auch das Installieren einer App aus einer vorhandenen .apk
Datei ist auf diese Weise möglich: adb shell pm install <Pfad>
wäre der entsprechende Befehl. Die .apk
Datei muss sich dazu allerdings bereits auf dem Gerät befinden (wie sie dort hin gelangt, findet sich im nächsten Abschnitt). Für diesen Befehl stehen ebenfalls zusätzliche Optionen zur Verfügung, die sich unter [8] finden. Wer sich den Zwischenschritt sparen möchte: adb install MyApp.apk
stößt die Installation direkt an, wenn sich MyApp.apk
im aktuellen Verzeichnis befindet.
Dateien zwischen PC und Androide kopieren
Mal eben eine Datei oder gar ein ganzes Verzeichnis vom Androiden auf den PC kopieren? Kein Problem: Mit adb pull <remote> <local>
ist dies im Handumdrehen erledigt. In der Gegenrichtung geht es genau so einfach mit adb push <local> <remote>
. In beiden Fällen ist „<local>“ durch den Pfad auf dem PC, und „<remote>“ durch den Pfad auf dem Android-Gerät zu ersetzen.
Will man also beispielsweise die Datei MyApp.apk
aus dem aktuellen Verzeichnis zur späteren Installation auf die SD-Karte befördern, ließe sich dies mit adb push MyApp.apk /sdcard
erledigen (und selbige gleich anschließend per adb shell pm install /sdcard/MyApp.apk
installieren, siehe oben).
Shell-Befehle auf dem Androiden absetzen
Mittels adb shell
begibt man sich direkt auf die Kommandozeile des Androiden. Shell-geübte Linuxianer werden sich hier gleich ganz zu Hause fühlen, handelt es sich doch um einen Linux-Shell-Prompt. Und so lässt sich hier auch mit den gewohnen Befehlen navigieren:
ls
: Anzeigen des Inhalts des aktuellen Verzeichnisses, oder eines anderen mitls /pfad/zum/verzeichnis
cd
: in ein Verzeichnis wechselncp <quelle> <ziel>
: eine Datei kopierenpwd
: das aktuelle Verzeichnis ausgeben (wo bin ich?)
Dies sind nur einige Beispiele. Eine ganze Reihe weiterer Unix-Befehle finden sich unter anderem bei Wikipedia [9], wobei nicht alles dort Aufgeführte auch wirklich unter Android zur Verfügung steht. Wer wissen möchte, was sich damit noch alles anstellen lässt, mag vielleicht einen Blick auf den Artikel Android from the command-line [10] werfen.
Fehler-Protokolle einsehen
Dank adb logcat
lassen sich die System-Logs an der Kommandozeile ausgeben. Das ist besonders praktisch bei der Fehlersuche: Warum stürzt die App immer ab, wenn man diesen Button drückt? Oder: Warum will sich mein Gerät nicht mit meinem WLAN verbinden?
Um von der Informations-Flut nicht erschlagen zu werden, leitet man die Ausgabe am Besten via adb logcat > logcat.log
oder adb logcat -f logcat.log
in eine Datei um. Auf spezielle Bereiche lässt sich die Ausgabe auch zuschneiden, indem man den Parameter -b <buffer>
angibt. Als „buffer“ stehen hier „event“, „radio“, und „main“ (default) zur Verfügung. Weitere Details zur Syntax (u. a. auch zur Option -v
, mit der sich das Ausgabe-Format festlegen lässt), finden sich auf der Entwicklerseite [11].
Geht es um einen Fehlerbericht für den Entwickler, kann darüber hinaus der Befehl adb bugreport
interessant sein – den Sie allerdings auf jeden Fall mit adb bugreport > bugreport.txt
immer in eine Datei umleiten sollten, da die Ausgabe mehrere Megabyte umfassen kann.
Hier ist dann aber auch alles enthalten, was man dem Entwickler an System-Informationen zur Verfügung stellen kann. Zur Sicherheit sollten Sie die erzeugte Datei noch auf vertrauliche Informationen (etwa Account-Namen oder andere Logins) durchsuchen, bevor Sie eine Mail mit dieser Datei als Attachment verschicken.
Grafische Helferlein
Alles obige lässt sich auch bequem mit einer grafischen Oberfläche erledigen. Ein Kandidat wurde bereits bei der Installation genannt: QtADB [12] ist für Windows, Linux, und MacOS X verfügbar. Diese Anwendung bietet einen Dateimanager, App-Manager, SMS-Manager, Shell-Zugriff, Logcat, Geräte-Info, und mehr. Die meisten Features stehen auch für nicht-gerootete Geräte zur Verfügung.
Eine weitere grafische Oberfläche existiert mit Droid Explorer [13] für Windows-Anwender (mutige Linuxianer sollten diese Anwendung auch unter MONO ans Laufen bekommen – auch wenn hier evtl. nicht die volle Funktionalität zur Verfügung steht). Droid Explorer stellt auch gleichzeitig ein FrontEnd für adb backup
und adb restore
dar, und lässt sich darüber hinaus mit Plugins erweitern.