A hivatalos fejlesztői dokumentáció szerint az Androidon az alábbi adattárolási lehetőségek állnak rendelkezésre:
- Megosztott beállítások – A privát primitív adatokat kulcs-érték párokban tárolja.
- Belső tárhely – A privát adatokat a készülék memóriájában tárolja.
- Külső tároló – Nyilvános adatok tárolása a megosztott külső tárolón.
- SQLite adatbázisok – Strukturált adatok tárolása egy privát adatbázisban.
- Hálózati kapcsolat – Az adatok tárolása a weben saját hálózati szerverrel.
A hálózati kapcsolat opciótól eltekintve a többi opció mind a készüléken tárolja az adatokat. Mind a SharedPreferences, mind az SQlite adatbázisok az eszközön tárolt privát adatok. Ezekhez a fájlokhoz más alkalmazások vagy felhasználók nem férnek hozzá, kivéve, ha emulátoron vagy rootolt eszközön van. Íme néhány módszer, hogyan férhetek hozzá és vizsgálhatom meg ezeket a privát adatokat hibakeresés céljából a fejlesztés során.
Emulátoron vagy rootolt eszközön
Ha emulátoron vagy rootolt eszközön fut. Hozzá kell férnie az eszköz privát tárhelyéhez. A fájlokat az Android Studio GUI-jából vagy parancssoron keresztül érheti el:
- GUI – Az Android Studio-ban indítsa el az Android Device Monitor-t a menüből: Eszközök/Android/Android Device Monitor menüpontból. Navigáljon a File Explorer fülre, majd a data/data/<az alkalmazáscsomag neve>/ lapra. Keresse meg a keresett fájlt, és onnan pusholhat és pullolhat egy fájlt.
- Parancssor – a fájlt az adb segítségével is pusholhatja az eszközre vagy pullolhatja az eszközről:
adb pull remote-dir local-dir <-- Copy from device to local machine
adb push local-dir remote-dir <-- Copy from local machine to device
Nem rootolt eszközön
Ha nem emulátoron vagy rootolt eszközön fut. Parancssorból:
adb shell
run-as <app-package-name>F
cd data/data/...
Most hozzáférhet a készülék belső tárhelyén lévő fájlokhoz. A héjból való kilépéshez írja be az exit billentyűt.
exit <-- exit out of adb shell
Sqlite adatbázisfájl
Ha már elérheti az SQLite adatbázisfájlt emulátoron, rootolt eszközön vagy adb shell / run as segítségével , akkor van néhány lehetőség a séma és az SQLite adatbázisának ellenőrzésére az eszközön.
Inspect SQLite db via a GUI tool
Először húzza ki a fájlt az eszközről, majd egy GUI szoftverrel nézze meg a sémát és a tartalmat. Én az SQLite böngészőt használom, amely lehetővé teszi az adatbázis sémájának, a táblák tartalmának megtekintését, valamint néhány egyszerű SQL szkript végrehajtását.
Inspect SQLite db via sqlite3 command line tool
Egyszerűbb megoldás számomra az sqlite3 parancssori eszköz használata az adatbázis megtekintéséhez az adb shell-ből –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
Alternatívaként használhatja az sqlite3-at helyileg is a shell-en belül helyett, miután kihúzta az adatbázis fájlt az eszközről:
adb pull <db-name>
sqlite3 <db-name>
Az alkalmazás adatainak törlése
Amikor tehát SharedPreferences vagy SQLite db-val dolgozol Androidon, gyakran szükséged van az adatok törlésére és újrakezdésére. Íme tehát néhány lehetőség:
- Telepítse le és telepítse újra az alkalmazást
- Menjen a készülék Beállítások/Appok/Appok/keresse meg az alkalmazást és kattintson rá/Tárolás/Az adatok törlése
Létezik egy sokkal egyszerűbb módszer, amely segítheti a fejlesztési és hibakeresési folyamatot: telepítse az Android Studio ADB Idea nevű bővítményét. A bővítmény telepítéséhez lépjen az Android Studio/Preferences/Plugins menüpontba, kattintson a Browse repositories menüpontra, és keressen rá az “ADB Idea”-ra. Telepítse és indítsa újra az Android Studio-t, és látni fogja, hogy a plug-in opció megjelenik az Eszközök/Android/ADB Idea alatt. Próbálja ki. Én ezt a plugint szuper hasznosnak találom, amikor az alkalmazás adatait kell törölnöm.
Könyvtár használata
Az Android eszközökön lévő privát fájlok elérésére és vizsgálatára más lehetőségek is vannak könyvtár használatával.
Az egyik lehetőség az Android Debug Database nevű könyvtár használata, a részleteket a szerző erről szóló blogbejegyzésében olvashatja el.