Start Magazin Erste Schritte mit USB-Debugging und ADB

Erste Schritte mit USB-Debugging und ADB

43246
0
Teilen

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.

Abbildung 1: Die Entwickleroptionen sind auf aktuellen Android-Geräten nicht von Haus aus sichtbar.
Abbildung 1: Die Entwickleroptionen sind auf aktuellen Android-Geräten nicht von Haus aus sichtbar.

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.

Abbildung 2: Tippen Sie zum Freischalten der Entwickleroptionen sieben mal auf die Build-Nummer.
Abbildung 2: Tippen Sie zum Freischalten der Entwickleroptionen sieben mal auf die Build-Nummer.

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.

Abbildung 3: Erst dann finden Sie die Entwickleroptionen bei Handys mit Android 4.2.
Abbildung 3: Erst dann finden Sie die Entwickleroptionen bei Handys mit Android 4.2.

Abbildung 4: Beim Aktivieren der Entwicklungseinstellungen werden Sie vor Missbrauch gewarnt.
Abbildung 4: Beim Aktivieren der Entwicklungseinstellungen werden Sie vor Missbrauch gewarnt.

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.

Abbildung 5: Das USB-Debugging müssen Sie noch extra von Hand aktivieren.
Abbildung 5: Das USB-Debugging müssen Sie noch extra von Hand aktivieren.

Abbildung 6: Zur Sicherheit muss bei aktuellen Androiden ein RSA-Fingerprint akzeptiert werden.
Abbildung 6: Zur Sicherheit muss bei aktuellen Androiden ein RSA-Fingerprint akzeptiert werden.

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

Abbildung 7: Über die ADB greifen Sie nun zum Beispiel direkt auf die Eingabeshell des Handys zu.
Abbildung 7: Über die ADB greifen Sie nun zum Beispiel direkt auf die Eingabeshell des Handys zu.

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.

Abbildung 8: Über ADB lässt sich ein vollständiges Backup eines nicht gerooteten Handys erstellen.
Abbildung 8: Über ADB lässt sich ein vollständiges Backup eines nicht gerooteten Handys erstellen.

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.

Abbildung 9: Holo Backup ist ein grafisches Frontend zu adb backup und adb restore.
Abbildung 9: Holo Backup ist ein grafisches Frontend zu adb backup und adb restore.

Abbildung 10: Helium App Sync and Backup erstellt kompatible Backups direkt auf dem Android-Gerät.
Abbildung 10: Helium App Sync and Backup erstellt kompatible Backups direkt auf dem Android-Gerät.

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 mit ls /pfad/zum/verzeichnis
  • cd: in ein Verzeichnis wechseln
  • cp <quelle> <ziel>: eine Datei kopieren
  • pwd: 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.

Abbildung 11: Mit QtADB ist unter anderem ein plattformunabhängiger Dateimanager für Ihr Handy.
Abbildung 11: Mit QtADB ist unter anderem ein plattformunabhängiger Dateimanager für Ihr Handy.

Abbildung 12: Auch der Droid Explorer bietet eine graphische Oberfläche für viele ADB-Funktionen.
Abbildung 12: Auch der Droid Explorer bietet eine graphische Oberfläche für viele ADB-Funktionen.

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.