Wer ein Android Smartphone hat, möchte ggf. seine Daten sichern. Wenn man sein Gerät nicht Rooten möchte, um dies zu tun, kann man es mit dem Google Kommandozeilentool adb tun.
1. Download Commandline Tools:
https://developer.android.com/studio/index.html#downloads
2. ADB-Installieren:
> sudo /opt/tools/bin/sdkmanager --list
> sudo /opt/tools/bin/sdkmanager --update
> sudo /opt/tools/bin/sdkmanager tools
3. USB-Debugging aktivieren
https://developer.android.com/studio/command-line/adb.html#Enabling
4. U-Dev Regeln setzen (Nur Linux)
Damit adb auf das Smartphone zugreifen kann, muss eine passende UDEV-Regel gesetzt werden. Wenn es nicht um ein Pixel Smartphone geht, muss die Vendor ID angepasst werden (link).
Die vollständige Doku findet sich hier: https://developer.android.com/studio/run/device.html
> nano /etc/udev/rules.d/51-android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", MODE="0666", GROUP="plugdev"
5. Prüfen ob Gerät verbunden ist.
> sudo /opt/platform-tools/adb devices -l
> sudo /opt/platform-tools/adb backup -f /home/username/backup.ab -all -apk -system -obb
Befehlsreferenz: https://developer.android.com/studio/command-line/adb.html#issuingcommands
Fortschritt anzeigen:
> sudo /opt/platform-tools/adb logcat | grep BackupManagerService
Restore
> sudo /opt/platform-tools/adb restore -f /home/username/backup.ab
Häufige Fehler:
Java 9 Installiert:
> sudo /opt/tools/bin/sdkmanager
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com.android.repository.api.SchemaModule$SchemaModuleVersion.(SchemaModule.java:156) at com.android.repository.api.SchemaModule.(SchemaModule.java:75) at com.android.sdklib.repository.AndroidSdkHandler.(AndroidSdkHandler.java:81) at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:117) at com.android.sdklib.tool.SdkManagerCli.main(SdkManagerCli.java:93) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:553) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:486) ... 5 more
Das Problem tritt auf, wenn Java 9 und höher installiert ist.
Lösung:
In Datei /opt/tools/bin/sdkmanager die letzte Zeile ändern:
Vorher:
exec "$JAVACMD" "$@"
Nachher:
exec "$JAVACMD" --add-modules java.xml.bind "$@"
Ubuntu adb installiert
Warum auch immer: Das Ubuntu adb, dass sich per apt-get installieren lässt funktioniert nicht.
Lösung: Commandline Tools direkt von Google installieren (Schritte 1&2)