Zgodnie z oficjalną dokumentacją deweloperską, oto opcje przechowywania danych w systemie Android:
- Współdzielone preferencje – Przechowuj prywatne prymitywne dane w parach klucz-wartość.
- Pamięć wewnętrzna – Przechowuj prywatne dane w pamięci urządzenia.
- External Storage – Przechowywanie publicznych danych na współdzielonej pamięci zewnętrznej.
- SQLite Databases – Przechowywanie ustrukturyzowanych danych w prywatnej bazie danych.
- Network Connection – Przechowywanie danych w sieci za pomocą własnego serwera sieciowego.
Oprócz opcji połączenia sieciowego, wszystkie pozostałe opcje utrzymują dane na urządzeniu. Zarówno SharedPreferences jak i SQlite Databases są prywatnymi danymi przechowywanymi na urządzeniu. Pliki te nie są dostępne dla innych aplikacji lub użytkowników, chyba że jesteś na emulatorze lub zrootowanym urządzeniu. Oto kilka sposobów, w jaki sposób uzyskuję dostęp i sprawdzam te prywatne dane do debugowania podczas rozwoju.
Na emulatorze lub zrootowanym urządzeniu
Jeśli używasz emulatora lub zrootowanego urządzenia. Powinieneś mieć dostęp do prywatnej pamięci masowej urządzenia. Możesz uzyskać dostęp do plików z Android Studio GUI lub poprzez wiersz poleceń:
- GUI – W Android Studio, uruchom Android Device Monitor z menu: Tools/Android/Android Device Monitor. Przejdź do zakładki File Explorer, następnie data/data/<nazwa pakietu Twojej aplikacji>/. Znajdź plik, którego szukasz, i możesz go stamtąd wypchnąć lub wyciągnąć.
- Linia poleceń – możesz również wypchnąć plik do urządzenia lub wyciągnąć plik z urządzenia przez 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 niezrootowanym urządzeniu
Jeśli nie pracujesz na emulatorze lub zrootowanym urządzeniu. Z wiersza poleceń:
adb shell
run-as <app-package-name>F
cd data/data/...
Teraz można uzyskać dostęp do plików na wewnętrznej pamięci masowej urządzenia. Aby wyjść z powłoki, wpisz exit.
exit <-- exit out of adb shell
Plik bazy danych SQLite
Gdy jesteś w stanie uzyskać dostęp do pliku bazy danych SQLite na emulatorze, zrootowanym urządzeniu lub poprzez powłokę adb / uruchom jako , istnieje kilka opcji sprawdzenia schematu i bazy danych SQLite na urządzeniu.
Sprawdź SQLite db za pomocą narzędzia GUI
Wyciągnij plik z urządzenia, a następnie użyj oprogramowania GUI, aby sprawdzić schemat i zawartość. Ja używam przeglądarki SQLite, która pozwala zobaczyć schemat bazy danych, zawartość tabel, a także wykonać kilka prostych skryptów SQL.
Inspect SQLite db via sqlite3 command line tool
Dla mnie łatwiejszą opcją jest użycie sqlite3 command line tool do inspekcji bazy danych z powłoki adb –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
Alternatywnie możesz użyć sqlite3 lokalnie zamiast w powłoce, po wyciągnięciu pliku bazy danych z urządzenia:
adb pull <db-name>
sqlite3 <db-name>
Wiping off app data
Więc kiedy pracujesz z SharedPreferences lub SQLite db na Androidzie, często musisz wymazać dane i zacząć od nowa. Więc oto kilka opcji:
- Odinstaluj i zainstaluj ponownie aplikację
- Go to device Settings/Apps/Find your app and click on it/Storage/Clear Data
Jest znacznie łatwiejszy sposób, aby wspomóc proces rozwoju i debugowania: zainstaluj wtyczkę Android Studio o nazwie ADB Idea. Aby zainstalować wtyczkę, przejdź do Android Studio/Preferencje/Plugins, kliknij na Przeglądaj repozytoria i wyszukaj „ADB Idea”. Zainstaluj i uruchom ponownie Android Studio, a zobaczysz, że opcja wtyczki pojawi się pod Narzędzia/Android/ADB Idea. Daj mu spróbować. I find this plugin super helpful when I need to wipe off app data.
Use a library
There are other options for access and inspecting private files on Android devices by using a library.
One options is to use a library called Android Debug Database and you can read up the details from a blog post by the author on this.
.