Secondo la documentazione ufficiale degli sviluppatori, ecco le opzioni per la memorizzazione dei dati su Android:
- Preferenze condivise – Memorizza i dati primitivi privati in coppie chiave-valore.
- Archiviazione interna – Memorizza i dati privati nella memoria del dispositivo.
- Memorizzazione esterna – Memorizza i dati pubblici sulla memoria esterna condivisa.
- Database SQLite – Memorizza i dati strutturati in un database privato.
- Connessione di rete – Memorizza i dati sul web con il tuo server di rete.
A parte l’opzione di connessione di rete, le altre opzioni sono tutte persistenza dei dati sul dispositivo. Sia SharedPreferences che SQlite Databases sono dati privati memorizzati sul dispositivo. Questi file non sono accessibili ad altre applicazioni o utenti a meno che non siate su un emulatore o su un dispositivo radicato. Ecco alcuni modi in cui accedo e ispeziono questi dati privati per il debug durante lo sviluppo.
Su un emulatore o dispositivo con radici
Se stai usando un emulatore o un dispositivo con radici. Dovresti avere accesso alla memoria privata del dispositivo. Puoi accedere ai file dalla GUI di Android Studio o tramite la riga di comando:
- GUI – In Android Studio, lancia Android Device Monitor dal menu: Strumenti/Android/Android Device Monitor. Naviga alla scheda File Explorer, poi data/data/<il nome del tuo pacchetto di app>/. Trova il file che stai cercando, e puoi spingere e tirare un file da lì.
- Riga di comando – puoi anche spingere il file al dispositivo o tirare il file dal dispositivo tramite 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
Su un dispositivo non rootato
Se non stai usando un emulatore o un dispositivo rootato. Da linea di comando:
adb shell
run-as <app-package-name>F
cd data/data/...
Ora puoi accedere ai file sulla memoria interna del dispositivo. Per uscire dalla shell, digita exit.
exit <-- exit out of adb shell
File database SQLite
Una volta che sei in grado di accedere al file database SQLite su un emulatore, un dispositivo con radici o tramite adb shell / run as , ci sono alcune opzioni per controllare lo schema e il tuo database SQLite sul dispositivo.
Ispetta il db SQLite tramite uno strumento GUI
Prima estrai il file dal dispositivo, poi usa un software GUI per guardare lo schema e il contenuto. Io uso SQLite browser che permette di vedere lo schema del database, il contenuto delle tabelle, così come l’esecuzione di alcuni semplici script SQL.
Ispetta il db SQLite tramite lo strumento a linea di comando sqlite3
Per me l’opzione più facile è usare lo strumento a linea di comando sqlite3 per ispezionare il database dalla shell adb –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
In alternativa puoi usare sqlite3 localmente invece che dentro una shell, dopo aver estratto il file del database dal dispositivo:
adb pull <db-name>
sqlite3 <db-name>
Spazzatura dei dati dell’app
Quindi quando si lavora con SharedPreferences o SQLite db su Android, spesso è necessario cancellare i dati e ricominciare da capo. Quindi ecco alcune opzioni:
- Disinstalla e reinstalla l’app
- Vai a Impostazioni del dispositivo/Apps/Trova la tua app e clicca su di essa/Storage/Clear Data
C’è un modo molto più semplice per assistere il tuo processo di sviluppo e debug: installare un plug-in di Android Studio chiamato ADB Idea. Per installare il plug-in, vai su Android Studio/Preferences/Plugins, clicca su Browse repositories e cerca “ADB Idea”. Installa e riavvia Android Studio e vedrai l’opzione del plug-in apparire sotto Strumenti/Android/ADB Idea. Provalo. Trovo questo plugin super utile quando ho bisogno di cancellare i dati delle app.
Usa una libreria
Ci sono altre opzioni per accedere e ispezionare i file privati sui dispositivi Android utilizzando una libreria.
Una opzione è quella di utilizzare una libreria chiamata Android Debug Database e puoi leggere i dettagli da un post del blog dell’autore su questo.