Inhaltsverzeichnis

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

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