====== Adb-Android Debug Bridge ====== Mit der Android Debug Bridge, kurz adb, kann man Android vom PC mit Befehlen steuern. ===== Verbindung herstellen ===== Zunächst muß man das Android-Gerät mit dem PC verbinden. ==== Debugging über USB ==== Damit man nun das Android steuern kann, muß das Debugging auf dem Android aktiviert werden. Menü --> Einstellungen --> Entwickleroptionen Hier nun den Punkt **USB-Debugging** aktivieren. Ab jetzt Verbindet man das Android-Gerät mit dem PC per USB-Datenkabel und steuert es mit den Android-SDK-Tools. ==== Debugging über Wifi ==== Man kann dies auch ohne USB-Datenkabel machen und einfach ein vorhandenes Wifi nutzen. Dafür muß aber ein angepasstes Android-ROM installiert sein und dafür muß man das Android-Gerät [[android:rooten|rooten]]. Danach auf dem Gerät die Funktion **ADB über Netzwerk** aktivieren. Anschließend nur noch folgende Einstellungen am PC übernehmen (einfach in der Konsole eingeben). adb tcpip Nun kann man sich wie folgt verbinden. adb connect : Die Verbindung trennt man wie folgt. adb disconnect : === Debug per Wifi ohne Menüeintrag einschalten === Es kann vorkommen das nicht jedes Android-ROM diese Funktion in den Entwickleroptionen hat. Man kann die Funktion dennoch einschalten. Dazu benötigt man eine App, mit welcher man Befehle auf Konsolenebene eingeben kann (z.B. "BusyBox"). Nach der Installtion einfach die Befehle eingeben zum einschalten: su setprop service.adb.tcp.port 5555 stop adbd start adbd Zum Abschalten, folgende Befehle eintragen: setprop service.adb.tcp.port -1 stop adbd start adbd Um das Debugging wieder auf USB umzustellen einfach den Befehl verwenden. adb usb ==== Debugging mit ADB testen ==== Egal wie man nun verbunden ist, kann man die Kommunikation mit dem Android-Gerät nun wie folgt testen. adb devices Wenn man per Wifi verbunden ist, dann kommt beim ersten mal die folgende Ausgabe: List of devices attached 192.168.149.105:5555 unauthorized Das Wort **"unauthorized"** deutet einfach darauf hin, dass man zwar verbunden ist, aber noch keine Berechtigungen hat. Das löst man, in dem die Meldung auf dem Android-Gerät bestätigt wird. Gibt man jetzt beispielsweise folgenden Befehl ein, wird einem angezeigt wie lang das Android-Gerät schon eingeschaltet ist. adb shell uptime ===== Backup und Restore ===== Mit dem Befehl ''adb backup'' kann man ein Backup auf dem lokalen PC erstellen Syntax: adb backup -f .ab [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|-nosystem] [] **Einzelne Parameter**, bis auf den letzen, müssen mit einem "\" versehen werden. adb backup \ \ -f .ab ^ Parameter ^ Beschreibung ^ default ^ | -f | Nach diesem Parameter muss ein Dateiname mit der Endung ".ab" folgen | | | [-apk|-noapk] | schaltet das Backup der APK-Dateien ein oder aus | -noapk | | [-obb|-noobb] | schaltet das Backup aller installierten APK Erweiterungsdateien, \\ welche mit der jew. APK zusammenhängen ein oder aus | -noobb | | [-shared|-noshared] | schaltet das Backup des User-Speichers ein oder aus | -noshared | | [-all] | sichert alle instalierten Apps | | | [-system|-nosystem] | entscheidet ob der Parameter ''-all'' auch die System-Apps mitsichert | -system | | [] | Liste aller zu sichernden Apps \\ Wenn der Parameter ''-all'' oder ''-shared'' angegeben wird, dann ist \\ die Angabe der Packages optional. Selbst wenn der Parameter \\ ''-nosystem'' verwendet wird, würden die jew. angegebenen Packages \\ gesichert werden. Zum sichern einzelner Apps, siehe: [[#einzelene_apps_sichern]] | | * Beispiel (**Smartphone gerootet**): Hier wird das vollständige Smartphone mit seinem Betriebssystem, den System- und User-APPs und dem Inhalt es externen Speichers gesichert. \\ adb backup -all\ -apk\ -shared\ -system -f .ab * Beispiel (**Smartphone nicht gerootet**): Hier wird das vollständige Smartphone mit den APPs und dem Inhalt es externen Speichers gesichert. \\ adb backup -all\ -apk\ -shared\ -nosystem -f .ab Ein Recovery würde wie folgt gestartet werden. adb restore .ab ==== Einzelene Apps sichern ==== Zum sichern einzelner Apps, muss man den App-Namen kennen. Herausfinden kann man dies mit folgendem Befehl: adb shell pm list packages Hierbei werden alle Apps mit dem App-Namen aufgelistet. Das Backup kann dann wie folgt erstellt werden: adb backup -f .ab Man kann auch einfach dieses kleine dirty-script verwenden: #!/bin/bash read -p "In welchem Pfad soll gesichert werden: " DEST while [ "$APPNAME" != "ende" ] do echo "Zum beenden einfach 'ende' eingeben." read -p "Bitte Namen der App angeben: " APPNAME echo if [ ${APPNAME} = "ende" ]; then echo "Script beendet!" exit 0 fi echo "Folgende Apps wurden gefunden:" echo adb shell pm list packages|grep ${APPNAME} echo read -p "Bitte Package angeben: " PACKAGENAME echo adb backup ${PACKAGENAME} -f ${DEST}/${PACKAGENAME}.ab done ==== Backup-Datei entpacken ==== Die erstellte Backup-Datei ''.ab'' ist im Grunde genommen ein komprimiertes Tar-Archiv. Allerdings ist dieses Archiv kein normales Deflate Archiv, es ist verändert. Auf der Webseite von [[http://android.stackexchange.com/questions/28481/how-do-you-extract-an-apps-data-from-a-full-backup-made-through-adb-backup|android.stackexchange.com]] findet man weitere Infos dazu. Man kann dieses Archiv allerdings in ein Tar-Archiv umwandeln. Mit dem [[https://sourceforge.net/projects/adbextractor/|Android Backup Extractor]] führt man folgenden Befehl aus: java -jar abe.jar unpack Wenn das Archiv in ein lesbares Tar-Archiv umgewandelt wurde, kann man es z.B. über Nautilus öffnen und entpacken. ==== Google One-Back-up per adb ==== Dieser Befehl erzwingt das Backup mit One-Back-up welches in Android eingebaut ist adb shell bmgr run bmgr backupnow --all Sollte der Befehl mit diesem Fehlercode enden "Backup finished with result: Backup Cancelled", dann folgendes probieren: bmgr backupnow appdata bmgr backupnow --all ===== nützliche Befehle ===== Hier einige nützliche Befehle für adb. ==== Image Type ==== adb shell grep ro.product.name system/build.prop ==== Device Type ==== adb shell grep ro.product.device /system/build.prop ==== Build ID ==== adb shell grep build.id /system/build.prop ==== Dateien uploaden ==== adb push ==== Dateien downloaden ==== adb pull ==== Apps deinstallieren ==== Die Paketnamen einfach aus dem Verzeichnis ''/data/app'' entnehmen. adb uninstall ==== dumpsys Informationen ==== Mit dem Tool ''Dumpsys'' kann man verschiedene Informationen über Apps herausfinden. dumpsys meminfo ==== Top ==== Mit dem Tool ''top'' erhält man die aktuelle Prozessorauslastung. Usage: top [ -m max_procs ] [ -n iterations ] [ -d delay ] [ -s sort_column ] [ -t ] [ -h ] -m num Maximum number of processes to display. -n num Updates to show before exiting. -d num Seconds to wait between updates. -s col Column to sort by (cpu,vss,rss,thr). -t Show threads instead of processes. -h Display this help screen. ==== Was passiert aktuell in Android ==== === LogCAT === Anzeige des aktuellen Logs des Devices (wie tailf syslog) adb logcat === DDMS === Ein anderes Tool ist ''ddms'' (Dalvik Debug Monitor). Installiert wird es einfach per \\ apt-get install androidsdk-ddms Danach kann es Aufgerufen werden mit \\ ddms