Podle oficiální dokumentace pro vývojáře jsou následující možnosti ukládání dat v systému Android:
- Sdílené předvolby – Ukládání soukromých primitivních dat v párech klíč-hodnota.
- Interní úložiště – Ukládání soukromých dat v paměti zařízení.
- Externí úložiště – Ukládání veřejných dat na sdílené externí úložiště.
- Databáze SQLite – Ukládání strukturovaných dat do soukromé databáze.
- Síťové připojení – Ukládání dat na webu pomocí vlastního síťového serveru.
Kromě možnosti síťového připojení jsou všechny ostatní možnosti persistující data na zařízení. Jak SharedPreferences, tak SQlite Databases jsou soukromá data uložená v zařízení. Tyto soubory nejsou přístupné jiným aplikacím ani uživatelům, pokud nepoužíváte emulátor nebo zařízení s rootem. Zde je několik způsobů, jak k těmto soukromým datům přistupuji a kontroluji je za účelem ladění během vývoje.
Na emulátoru nebo zařízení s rootem
Pokud používáte emulátor nebo zařízení s rootem. Měli byste mít přístup k soukromému úložišti zařízení. K souborům můžete přistupovat z grafického rozhraní aplikace Android Studio nebo prostřednictvím příkazového řádku:
- Grafické rozhraní – V aplikaci Android Studio spusťte z nabídky aplikaci Android Device Monitor: Nástroje/Android/Sledování zařízení Android. Přejděte na kartu Průzkumník souborů a poté na data/data/<název balíčku vaší aplikace>/. Najděte hledaný soubor a můžete odtud soubor odeslat a vytáhnout.
- Příkazový řádek – soubor můžete také odeslat do zařízení nebo vytáhnout ze zařízení pomocí 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
Na zařízení bez rootu
Pokud nepoužíváte emulátor nebo zařízení s rootem. Z příkazového řádku:
adb shell
run-as <app-package-name>F
cd data/data/...
Nyní můžete přistupovat k souborům ve vnitřním úložišti zařízení. Chcete-li ukončit příkazový řádek, zadejte příkaz exit.
exit <-- exit out of adb shell
Soubor databáze SQLite
Jakmile budete mít přístup k souboru databáze SQLite na emulátoru, zařízení s rootem nebo prostřednictvím příkazového řádku adb shell / run as , existuje několik možností, jak zkontrolovat schéma a vaši databázi SQLite v zařízení.
Prohlídka db SQLite pomocí nástroje s grafickým uživatelským rozhraním
Nejprve vytáhněte soubor ze zařízení a poté pomocí softwaru s grafickým uživatelským rozhraním prohlédněte schéma a obsah. Já používám prohlížeč SQLite, který umožňuje zobrazit schéma databáze, obsah tabulek a také spustit některé jednoduché skripty SQL.
Prohlédnout db SQLite pomocí nástroje příkazového řádku sqlite3
Pro mě je jednodušší možnost použít nástroj příkazového řádku sqlite3 pro prohlížení databáze ze shellu adb –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
Případně můžete použít sqlite3 lokálně místo v rámci shellu, po vytažení souboru databáze ze zařízení:
adb pull <db-name>
sqlite3 <db-name>
Smazání dat aplikace
Při práci se SharedPreferences nebo SQLite db v systému Android je tedy často nutné data smazat a začít znovu. Zde je tedy několik možností:
- Odinstalujte a znovu nainstalujte aplikaci
- Přejděte do Nastavení zařízení/Aplikace/Najděte svou aplikaci a klikněte na ni/Uložiště/Vymazat data
Existuje mnohem jednodušší způsob, který vám pomůže při vývoji a ladění: nainstalujte si doplněk aplikace Android Studio s názvem ADB Idea. Chcete-li tento modul plug-in nainstalovat, přejděte do aplikace Android Studio/Preferences/Plugins, klikněte na Browse repositories a vyhledejte položku „ADB Idea“. Nainstalujte a restartujte Android Studio a v části Nástroje/Android/ADB Idea se zobrazí možnost plug-in. Vyzkoušejte ji. Tento zásuvný modul mi velmi pomáhá, když potřebuji vymazat data aplikace.
Použijte knihovnu
Existují i další možnosti přístupu k soukromým souborům v zařízeních se systémem Android a jejich kontroly pomocí knihovny.
Jednou z možností je použití knihovny s názvem Android Debug Database a podrobnosti si můžete přečíst z příspěvku na blogu jejího autora.