Selon la documentation officielle du développeur, voici les options de stockage des données sur Android :
- Préférences partagées – Stocker les données primitives privées dans des paires clé-valeur.
- Stockage interne – Stocker les données privées sur la mémoire de l’appareil.
- Stockage externe – Stocker des données publiques sur le stockage externe partagé.
- Bases de données SQLite – Stocker des données structurées dans une base de données privée.
- Connexion réseau – Stocker des données sur le web avec votre propre serveur réseau.
A part l’option de connexion réseau, les autres options sont toutes des données persistantes sur le périphérique. Les deux préférences partagées et les bases de données SQlite sont des données privées stockées sur le périphérique. Ces fichiers ne sont pas accessibles à d’autres applications ou utilisateurs, sauf si vous êtes sur un émulateur ou un appareil enraciné. Voici quelques façons dont j’accède et inspecte ces données privées pour le débogage pendant le développement.
Sur un émulateur ou un appareil enraciné
Si vous exécutez un émulateur ou un appareil enraciné. Vous devriez avoir accès au stockage privé de l’appareil. Vous pouvez accéder aux fichiers depuis l’interface graphique d’Android Studio ou via la ligne de commande :
- Interface graphique – Dans Android Studio, lancez Android Device Monitor depuis le menu : Outils/Android/Android Device Monitor. Naviguez jusqu’à l’onglet Explorateur de fichiers, puis data/data/<votre nom de package d’app>/. Trouvez le fichier que vous recherchez, et vous pouvez pousser et tirer un fichier à partir de là.
- Ligne de commande – vous pouvez également pousser le fichier vers le dispositif ou tirer le fichier du dispositif 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
Sur un dispositif non enraciné
Si vous n’exécutez pas sur un émulateur ou un dispositif enraciné. Depuis la ligne de commande:
adb shell
run-as <app-package-name>F
cd data/data/...
Maintenant vous pouvez accéder aux fichiers sur le stockage interne de l’appareil. Pour quitter le shell, tapez exit.
exit <-- exit out of adb shell
Fichier de base de données SQLite
Une fois que vous êtes en mesure d’accéder au fichier de base de données SQLite sur un émulateur, un périphérique enraciné ou via adb shell / run as , il existe quelques options pour inspecter le schéma et votre base de données SQLite sur le périphérique.
Inspecter la db SQLite via un outil GUI
Tirer d’abord le fichier depuis le périphérique, puis utiliser un logiciel GUI pour regarder le schéma et le contenu. J’utilise SQLite browser qui vous permet de voir le schéma de la base de données, le contenu des tables, ainsi que d’exécuter quelques scripts SQL simples.
Inspecter la db SQLite via l’outil de ligne de commande sqlite3
Pour moi, l’option la plus facile est d’utiliser l’outil de ligne de commande sqlite3 pour inspecter la base de données à partir du shell adb –
adb shell
cd data/data/<your package-name>/databases/
sqlite3 <db-name>
.tables
.schema <table-name>
Alternativement, vous pouvez utiliser sqlite3 localement au lieu de l’utiliser dans un shell, après avoir tiré le fichier de base de données du périphérique :
adb pull <db-name>
sqlite3 <db-name>
Effacer les données de l’app
Donc, lorsque vous travaillez avec SharedPreferences ou SQLite db sur Android, vous devez souvent effacer les données et recommencer. Voici donc quelques options :
- Désinstallez et réinstallez l’app
- Allez dans les paramètres de l’appareil/Apps/trouvez votre app et cliquez dessus/Storage/Effacer les données
Il existe un moyen beaucoup plus simple d’aider votre processus de développement et de débogage : installez un plug-in Android Studio appelé ADB Idea. Pour installer le plug-in, allez dans Android Studio/Préférences/Plugins, cliquez sur Parcourir les dépôts et recherchez « ADB Idea ». Installez et redémarrez Android Studio et vous verrez l’option du plug-in s’afficher sous Tools/Android/ADB Idea. Essayez-le. Je trouve ce plugin super utile lorsque j’ai besoin d’effacer les données de l’application.
Utiliser une bibliothèque
Il existe d’autres options pour accéder et inspecter les fichiers privés sur les appareils Android en utilisant une bibliothèque.
Une des options est d’utiliser une bibliothèque appelée Android Debug Database et vous pouvez lire les détails d’un article de blog de l’auteur à ce sujet.