Enligt den officiella dokumentationen för utvecklare finns följande alternativ för datalagring på Android:
- Delade inställningar – lagra privata primitiva data i nyckel-värdepar.
- Intern lagring – lagra privata data i enhetens minne.
- Extern lagring – Lagra offentliga data på den delade externa lagringen.
- SQLite-databaser – Lagra strukturerade data i en privat databas.
- Nätverksanslutning – Lagra data på webben med en egen nätverksserver.
Bortsett från alternativet med nätverksanslutning är de andra alternativen alla persistenta data på enheten. Både SharedPreferences och SQlite Databases är privata data som lagras på enheten. Dessa filer är inte tillgängliga för andra program eller användare om du inte använder en emulator eller en rotad enhet. Här är några sätt hur jag får tillgång till och inspekterar dessa privata data för felsökning under utvecklingen.
På en emulator eller rotad enhet
Om du kör en emulator eller rotad enhet. Du bör ha tillgång till enhetens privata lagringsutrymme. Du kan komma åt filerna från Android Studio GUI eller via kommandoraden:
- GUI – I Android Studio startar du Android Device Monitor från menyn: Verktyg/Android/Android Device Monitor. Navigera till fliken File Explorer och sedan data/data/<Ditt app-paketnamn>/. Hitta filen du letar efter och du kan pusha och dra en fil därifrån.
- Kommandorad – du kan också pusha filen till enheten eller dra filen från enheten 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
På en icke-rotad enhet
Om du inte kör på en emulator eller rotad enhet. Från kommandoraden:
adb shell
run-as <app-package-name>F
cd data/data/...
Nu kan du komma åt filerna på enhetens interna lagringsutrymme. För att avsluta skalet skriver du exit.
exit <-- exit out of adb shell
Sqlite-databasfil
När du har tillgång till SQLite-databasfilen på en emulator, rotad enhet eller via adb shell / run as , finns det några alternativ för att inspektera schemat och din SQLite-databas på enheten.
Inspektera SQLite db via ett GUI-verktyg
Hämta filen från enheten först, använd sedan en GUI-programvara för att titta på schema och innehåll. Jag använder SQLite browser som gör det möjligt att se databasschemat, tabellinnehållet samt att exekvera några enkla SQL-skript.
Inspektera SQLite db via sqlite3 kommandoradsverktyg
För mig är det enklare alternativet att använda sqlite3 kommandoradsverktyg för att inspektera databasen från adb-skalet –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
Alternativt kan du använda sqlite3 lokalt i stället för i ett skal, efter att ha hämtat databasfilen från enheten:
adb pull <db-name>
sqlite3 <db-name>
Torkning av appdata
Så när du arbetar med SharedPreferences eller SQLite db på Android behöver du ofta torka ut data och börja om från början. Så här är några alternativ:
- Avinstallera och installera appen på nytt
- Gå till enhetens inställningar/Appar/Finn din app och klicka på den/Storage/Clear Data
Det finns ett mycket enklare sätt att hjälpa dig med din utvecklings- och felsökningsprocess: Installera en Android Studio-plugin som heter ADB Idea. För att installera insticksprogrammet går du till Android Studio/Preferences/Plugins, klickar på Browse repositories och söker efter ”ADB Idea”. Installera och starta om Android Studio och du kommer att se plug-in-alternativet dyka upp under Tools/Android/ADB Idea. Prova det. Jag tycker att det här insticksprogrammet är till stor hjälp när jag behöver radera appdata.
Använd ett bibliotek
Det finns andra alternativ för att komma åt och inspektera privata filer på Android-enheter genom att använda ett bibliotek.
Ett av alternativen är att använda ett bibliotek som heter Android Debug Database och du kan läsa mer om det i ett blogginlägg av författaren om detta.