Mit der Android Debug Bridge, kurz adb, kann man Android vom PC mit Befehlen steuern.
Zunächst muß man das Android-Gerät mit dem PC verbinden.
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.
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>
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
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
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 |
adb backup -all\ -apk\ -shared\ -system -f <DATEI_NAME>.ab
adb backup -all\ -apk\ -shared\ -nosystem -f <DATEI_NAME>.ab
Ein Recovery würde wie folgt gestartet werden.
adb restore <DATEI_NAME>.ab
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
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.
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
Hier einige nützliche Befehle für adb.
adb shell grep ro.product.name system/build.prop
adb shell grep ro.product.device /system/build.prop
adb shell grep build.id /system/build.prop
adb push <QUELLE_AUF_PC> <ZIEL_AUF_ANDROID>
adb pull <ZIEL_AUF_ANDROID> <QUELLE_AUF_PC>
Die Paketnamen einfach aus dem Verzeichnis /data/app
entnehmen.
adb uninstall <packagename>
Mit dem Tool Dumpsys
kann man verschiedene Informationen über Apps herausfinden.
dumpsys meminfo <PAKET.NAME>
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.
Anzeige des aktuellen Logs des Devices (wie tailf syslog)
adb logcat
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