Nach der offiziellen Entwicklerdokumentation gibt es folgende Optionen für die Datenspeicherung unter Android:
- Gemeinsame Einstellungen – Private primitive Daten in Schlüssel-Wert-Paaren speichern.
- Interner Speicher – Private Daten im Gerätespeicher speichern.
- Externer Speicher – Öffentliche Daten auf dem gemeinsam genutzten externen Speicher speichern.
- SQLite-Datenbanken – Strukturierte Daten in einer privaten Datenbank speichern.
- Netzwerkverbindung – Daten über das Web mit einem eigenen Netzwerkserver speichern.
Abgesehen von der Option Netzwerkverbindung sind die anderen Optionen alle persistierende Daten auf dem Gerät. Sowohl SharedPreferences als auch SQlite Databases sind private Daten, die auf dem Gerät gespeichert werden. Diese Dateien sind für andere Anwendungen oder Benutzer nicht zugänglich, es sei denn, Sie verwenden einen Emulator oder ein gerootetes Gerät. Hier sind einige Möglichkeiten, wie ich auf diese privaten Daten zugreife und sie für das Debugging während der Entwicklung inspiziere.
Auf einem Emulator oder gerooteten Gerät
Wenn Sie einen Emulator oder ein gerootetes Gerät verwenden. Sie sollten Zugriff auf den privaten Speicher des Geräts haben. Sie können auf die Dateien über die Android Studio-GUI oder über die Befehlszeile zugreifen:
- GUI – Starten Sie in Android Studio den Android Device Monitor über das Menü: Tools/Android/Android Device Monitor. Navigieren Sie zur Registerkarte File Explorer, dann data/data/<Ihr App-Paketname>/. Finden Sie die Datei, nach der Sie suchen, und Sie können eine Datei von dort aus pushen und ziehen.
- Kommandozeile – Sie können die Datei auch über adb auf das Gerät pushen oder vom Gerät ziehen:
adb pull remote-dir local-dir <-- Copy from device to local machine
adb push local-dir remote-dir <-- Copy from local machine to device
Auf einem nicht gerooteten Gerät
Wenn Sie nicht auf einem Emulator oder gerooteten Gerät arbeiten. Von der Befehlszeile aus:
adb shell
run-as <app-package-name>F
cd data/data/...
Nun können Sie auf die Dateien im internen Speicher des Geräts zugreifen. Um die Shell zu beenden, geben Sie exit ein.
exit <-- exit out of adb shell
Sqlite-Datenbankdatei
Sobald Sie in der Lage sind, auf die SQLite-Datenbankdatei auf einem Emulator, gerooteten Gerät oder über adb shell / run as zuzugreifen, gibt es einige Möglichkeiten, das Schema und Ihre SQLite-Datenbank auf dem Gerät zu überprüfen.
SQLite db über ein GUI-Tool untersuchen
Zuerst die Datei vom Gerät ziehen, dann eine GUI-Software verwenden, um das Schema und den Inhalt zu betrachten. Ich verwende den SQLite-Browser, mit dem man das Datenbankschema und den Inhalt der Tabellen sehen kann, sowie einige einfache SQL-Skripte ausführen kann.
SQLite db über sqlite3 Kommandozeilentool inspizieren
Für mich ist die einfachere Option, das sqlite3 Kommandozeilentool zu verwenden, um die Datenbank von der adb-Shell aus zu inspizieren –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
Alternativ kann man sqlite3 lokal statt in einer Shell verwenden, nachdem man die Datenbankdatei vom Gerät gezogen hat:
adb pull <db-name>
sqlite3 <db-name>
Löschen von App-Daten
Wenn man also mit SharedPreferences oder SQLite db auf Android arbeitet, muss man oft die Daten löschen und neu beginnen. Hier sind ein paar Optionen:
- Deinstallieren Sie die App und installieren Sie sie neu
- Gehen Sie zu Geräteeinstellungen/Apps/Finden Sie Ihre App und klicken Sie darauf/Speicher/Daten löschen
Es gibt eine viel einfachere Möglichkeit, Ihren Entwicklungs- und Debugging-Prozess zu unterstützen: Installieren Sie ein Android Studio-Plug-in namens ADB Idea. Um das Plug-in zu installieren, gehen Sie zu Android Studio/Preferences/Plugins, klicken Sie auf Browse repositories und suchen Sie nach „ADB Idea“. Installieren Sie Android Studio und starten Sie es neu. Sie werden sehen, dass die Plug-in-Option unter Tools/Android/ADB Idea angezeigt wird. Probieren Sie es aus. Ich finde dieses Plugin sehr hilfreich, wenn ich App-Daten löschen muss.
Verwenden Sie eine Bibliothek
Es gibt noch andere Optionen für den Zugriff und die Überprüfung privater Dateien auf Android-Geräten, indem Sie eine Bibliothek verwenden.
Eine Option ist die Verwendung einer Bibliothek namens Android Debug Database, deren Details Sie in einem Blogbeitrag des Autors nachlesen können.