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 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 <PORT>
Nun kann man sich wie folgt verbinden.
adb connect <IP-ADRESSE>:<PORT><code> Die Verbindung trennt man wie folgt. <code bash>adb disconnect <IP-ADRESSE>:<PORT>
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 <DATEINAME>.ab [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|-nosystem] [<packages...>]
Einzelne Parameter, bis auf den letzen, müssen mit einem „\“ versehen werden.
adb backup <PARAMETER>\ <PARAMETER>\ <PARAMETER> -f <DATEI_NAME>.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 |
[<packages...>] | 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 <DATEI_NAME>.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 <DATEI_NAME>.ab
Ein Recovery würde wie folgt gestartet werden.
adb restore <DATEI_NAME>.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 <APP-NAME> -f <APP-NAME-BACKUP-DATEI>.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 android.stackexchange.com findet man weitere Infos dazu.
Man kann dieses Archiv allerdings in ein Tar-Archiv umwandeln. Mit dem Android Backup Extractor führt man folgenden Befehl aus:
java -jar abe.jar unpack <backup.ab> <backup.tar> <password>
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 <QUELLE_AUF_PC> <ZIEL_AUF_ANDROID>
Dateien downloaden
adb pull <ZIEL_AUF_ANDROID> <QUELLE_AUF_PC>
Apps deinstallieren
Die Paketnamen einfach aus dem Verzeichnis /data/app
entnehmen.
adb uninstall <packagename>
dumpsys Informationen
Mit dem Tool Dumpsys
kann man verschiedene Informationen über Apps herausfinden.
dumpsys meminfo <PAKET.NAME>
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