Volgens de officiële documentatie voor ontwikkelaars zijn dit de opties voor gegevensopslag op Android:
- Gedeelde voorkeuren – Primitieve privégegevens opslaan in sleutel-waardeparen.
- Interne opslag – Privégegevens opslaan op het toestelgeheugen.
- Externe opslag – Sla openbare gegevens op de gedeelde externe opslag op.
- SQLite Databases – Sla gestructureerde gegevens op in een eigen database.
- Netwerkverbinding – Sla gegevens op het web op met uw eigen netwerkserver.
Afgezien van de optie netwerkverbinding, zijn de andere opties allemaal het persisteren van gegevens op het apparaat. Zowel SharedPreferences als SQlite Databases zijn privégegevens die op het apparaat zijn opgeslagen. Deze bestanden zijn niet toegankelijk voor andere applicaties of gebruikers, tenzij je op een emulator of geroot apparaat zit. Hier volgen enkele manieren waarop ik toegang krijg tot deze privégegevens en deze kan inspecteren voor debugging tijdens de ontwikkeling.
Op een emulator of een geroot apparaat
Als u op een emulator of een geroot apparaat werkt. U moet toegang hebben tot de privé-opslag van het apparaat. U kunt toegang krijgen tot de bestanden vanuit de Android Studio GUI of via de opdrachtregel:
- GUI – Start in Android Studio de Android Device Monitor vanuit het menu: Tools/Android/Android Device Monitor. Navigeer naar het tabblad File Explorer en vervolgens naar data/data/<uw app-pakketnaam>/. Zoek het bestand dat u zoekt, en u kunt van daaruit een bestand pushen en pullen.
- Opdrachtregel – u kunt het bestand ook naar het apparaat pushen of het bestand van het apparaat halen via adb:
adb pull remote-dir local-dir <-- Copy from device to local machine
adb push local-dir remote-dir <-- Copy from local machine to device
Op een niet-geroot apparaat
Als u niet op een emulator of een geroot apparaat werkt. Vanaf de commandoregel:
adb shell
run-as <app-package-name>F
cd data/data/...
Nu heeft u toegang tot de bestanden op de interne opslag van het apparaat. Om de shell te verlaten, type exit.
exit <-- exit out of adb shell
Sqlite database bestand
Als u eenmaal in staat bent om toegang te krijgen tot het SQLite database bestand op een emulator, geworteld apparaat of via adb shell / run as , zijn er een paar opties om het schema en uw SQLite database op het apparaat te inspecteren.
Inspecteer SQLite db via een GUI-tool
Haal eerst het bestand van het apparaat, gebruik dan een GUI-software om het schema en de inhoud te bekijken. Ik gebruik SQLite browser waarmee je het databaseschema en de tabelinhoud kunt bekijken, en ook een aantal eenvoudige SQL scripts kunt uitvoeren.
Inspecteer SQLite db via sqlite3 command line tool
Voor mij is de makkelijkste optie om sqlite3 command line tool te gebruiken om de database te inspecteren vanuit adb shell –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
Alternatief kun je sqlite3 lokaal gebruiken in plaats van binnen een shell, nadat je het database bestand van het apparaat hebt gehaald:
adb pull <db-name>
sqlite3 <db-name>
Verwijderen van app data
Wanneer u werkt met SharedPreferences of SQLite db op Android, moet u dus vaak de data wissen en opnieuw beginnen. Dus hier zijn een paar opties:
- Ontbreek de installatie en installeer de app opnieuw
- Ga naar apparaat Instellingen/Apps/Find uw app en klik erop/Storage/Clear Data
Er is een veel eenvoudigere manier om uw ontwikkeling en debugging proces te helpen: installeer een Android Studio plug-in genaamd ADB Idea. Om de plug-in te installeren, ga naar Android Studio/Preferences/Plugins, klik op Browse repositories en zoek naar “ADB Idea”. Installeer en herstart Android Studio en je zal de plug-in optie zien verschijnen onder Tools/Android/ADB Idea. Probeer het eens. Ik vind deze plugin super handig wanneer ik app-gegevens moet wissen.
Gebruik een bibliotheek
Er zijn andere opties voor toegang tot en inspectie van privé-bestanden op Android-apparaten door gebruik te maken van een bibliotheek.
Eén optie is het gebruik van een bibliotheek genaamd Android Debug Database en u kunt de details lezen in een blog post van de auteur hierover.