Accéder aux données privées sur Android

Selon la documentation officielle du développeur, voici les options de stockage de données sur Android:

  • Préférences partagées - Stockez les données primitives privées dans des paires clé-valeur.
  • Stockage interne - Stockez des données privées dans la mémoire de l'appareil.
  • Stockage externe - Stockez des données publiques sur le stockage externe partagé.
  • Bases de données SQLite - Stockez des données structurées dans une base de données privée.
  • Connexion réseau - Stockez des données sur le Web avec votre propre serveur de réseau.

En plus de l'option de connexion réseau, les autres options sont toutes des données persistantes sur le périphérique. Les références SharedPreferences et SQlite sont des données privées stockées sur le périphérique. Ces fichiers ne sont pas accessibles aux autres applications ou utilisateurs, sauf si vous êtes sur un émulateur ou un périphérique root. Voici comment je peux accéder à ces données privées et les inspecter pour le débogage au cours du développement.

Accéder aux fichiers privés

Sur un émulateur ou un périphérique racine

Si vous utilisez un émulateur ou un périphérique root. Vous devriez avoir accès au stockage privé de l'appareil. Vous pouvez accéder aux fichiers à partir de l'interface graphique d'Android Studio ou via une ligne de commande:

  • Interface graphique - Dans Android Studio, lancez Android Device Monitor à partir du menu: Outils / Android / Android Device Monitor. Naviguez jusqu'à l'onglet Explorateur de fichiers, puis data / data / /. Recherchez le fichier que vous recherchez et vous pourrez ensuite pousser et extraire un fichier à partir de là.
  • Ligne de commande - vous pouvez également envoyer le fichier au périphérique ou extraire le fichier du périphérique via adb:
adb pull remote-dir local-dir <- Copier du périphérique vers la machine locale
adb push rép-local rép-distant <- Copier d'une machine locale vers un périphérique

Sur un appareil non rooté

Si vous n'exécutez pas sur un émulateur ou un périphérique root. En ligne de commande:

coquillage
run-as  F
cd data / data / ...

Vous pouvez maintenant accéder aux fichiers de la mémoire de stockage interne de l'appareil. Pour quitter le shell, tapez exit.

exit <- quitte le shell adb

Fichier de base de données SQLite

Une fois que vous pouvez accéder au fichier de base de données SQLite sur un émulateur, un périphérique enraciné ou via un shell adb / exécuter en tant que [nom du package], quelques options vous permettent d'inspecter le schéma et votre base de données SQLite sur le périphérique.

Inspectez la base de données SQLite via un outil graphique

Commencez par extraire le fichier du périphérique, puis utilisez un logiciel d'interface graphique pour examiner le schéma et le contenu. J'utilise le navigateur SQLite qui vous permet de voir le schéma de la base de données, le contenu de la table, ainsi que l'exécution de simples scripts SQL.

Inspectez la base de données SQLite via l'outil de ligne de commande sqlite3

Pour moi, l'option la plus simple consiste à utiliser l'outil de ligne de commande sqlite3 pour inspecter la base de données à partir du shell adb -

coquille adb
cd data / data /  / bases de données /
sqlite3 
.les tables
.schema 

Sinon, vous pouvez utiliser sqlite3 localement plutôt que dans un shell, après avoir extrait le fichier de base de données du périphérique:

adb pull 
sqlite3 

Effacer les données de l'application

Ainsi, lorsque vous travaillez avec SharedPreferences ou SQLite db sur Android, vous devez souvent effacer les données et recommencer. Alors, voici quelques options:

  • Désinstaller et réinstaller l'application
  • Allez dans Paramètres de l'appareil / Applications / Recherchez votre application et cliquez dessus / Stockage / 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 / Plug-ins, cliquez sur Parcourir les référentiels et recherchez “ADB Idea”. Installez et redémarrez Android Studio. L’option du plug-in apparaît sous Outils / Android / Idée ADB. Essaie. Je trouve ce plugin très utile lorsque je dois effacer les données de l'application.

Utiliser une bibliothèque

Il existe d'autres options pour accéder aux fichiers privés sur les appareils Android et les inspecter à l'aide d'une bibliothèque.

Une des options consiste à utiliser une bibliothèque appelée Android Debug Database et vous pouvez consulter les détails d'un article de blog de l'auteur à ce sujet.

Si vous souhaitez inspecter les connexions réseau en plus de la base de données et des références partagées, utilisez Stetho, un outil de débogage open source développé par Facebook. Lorsque vous utilisez Stetho, votre application doit être en mode débogage, mais l'accès root n'est pas nécessaire. C’est un outil puissant qui vous permet de déboguer votre application à l’aide de Chrome Developer Tool.