Je travaille sur une application Android qui stocke des données dans une base de données SQLite. Ma question est la suivante: où ce fichier de base de données est-il stocké sur le système de fichiers lorsque vous utilisez un émulateur?
J'ai vu qu'il est stocké dans
/data/data/package_name/databases
mais j'ai besoin de savoir où se trouve le disque dur de ma machine locale. La base de données persiste sur plusieurs exécutions de l'émulateur, même après avoir arrêté la machine, de sorte qu'il ne peut pas résider uniquement dans la RAM ...
Le système de fichiers de l'émulateur ne correspond pas à un répertoire de votre disque dur. L'image disque de l'émulateur est stockée sous la forme d'un fichier image, que vous pouvez gérer via Eclipse (recherchez l'icône ressemblant à G1 dans la barre d'outils) ou via le binaire de l'émulateur lui-même (exécutez "emulator -help" pour obtenir une description des options). .
Vous feriez mieux d'utiliser adb depuis la ligne de commande pour vous connecter à un émulateur en cours d'exécution. Si vous pouvez obtenir le répertoire et le nom de fichier spécifiques, vous pouvez effectuer une opération "adb pull" pour extraire le fichier de base de données de l'émulateur et le placer sur votre disque dur normal.
Edit: Suppression de la suggestion que cela fonctionne aussi pour les périphériques non enracinés - cela ne fonctionne que pour les émulateurs et les périphériques sur lesquels vous exploitez adb en tant que root.
Une mise à jour mentionnée dans les commentaires ci-dessous:
Vous n’avez plus besoin d’être sur la perspective DDMS, ouvrez simplement l’explorateur de fichiers depuis Eclipse Fenêtre> Afficher la vue> Autre ... Il semble que le l'application n'a pas besoin d'être en cours d'exécution même, je peux naviguer dans le contenu du fichier des applications différentes. J'utilise ADB version 1.0.29
Ou vous pouvez essayer l'ancienne approche:
Ouvrez la perspective DDMS sur votre IDE Eclipse
( Fenêtre> Ouvrir la perspective> Autre> DDMS )
et le plus important:
VOTRE APPLICATION DOIT ÊTRE EN COURS D'EXÉCUTION SO VOUS POUVEZ VOIR LA HIÉRARCHIE DES DOSSIERS ET DES FICHIERS .
Ensuite, dans l'onglet Explorateur de fichiers , vous suivrez le chemin:
données> données> votre nom de paquet> bases de données> votre fichier de base de données .
Ensuite, sélectionnez le fichier, cliquez sur l'icône disket dans le coin droit de l'écran pour télécharger le fichier . Db . Si vous souhaitez télécharger un fichier de base de données sur l'émulateur, vous pouvez cliquer sur l'icône du téléphone (à côté de l'icône disket) et choisir le fichier à télécharger.
Si vous voulez voir le contenu du fichier .db, je vous conseille d'utiliser SQLite Database Browser, que vous pouvez télécharger ici .
PS: Si vous voulez voir la base de données à partir d'un périphérique réel, vous devez root votre téléphone.
Depuis la question n'est pas limitée à Android Studio, je donne donc le chemin pour Visual Studio 2015 (travaillé pour Xamarin).
Un merci spécial aux autres intervenants de cette question.
J'ai écrit un script bash simple, qui extrait la base de données de Android) sur votre ordinateur (utilisateurs Linux, Mac)
nom de fichier: Android_db_move.sh utilisation: Android_db_move.sh com.example.app nom_bdd.db
#!/bin/bash
REQUIRED_ARGS=2
ADB_PATH=/Users/Tadas/Library/sdk/platform-tools/adb
PULL_DIR="~/"
if [ $# -ne $REQUIRED_ARGS ]
then
echo ""
echo "Usage:"
echo "Android_db_move.sh [package_name] [db_name]"
echo "eg. Android_db_move.sh lt.appcamp.impuls impuls.db"
echo ""
exit 1
fi;
echo""
cmd1="$ADB_PATH -d Shell 'run-as $1 cat /data/data/$1/databases/$2 > /sdcard/$2' "
cmd2="$ADB_PATH pull /sdcard/$2 $PULL_DIR"
echo $cmd1
eval $cmd1
if [ $? -eq 0 ]
then
echo ".........OK"
fi;
echo $cmd2
eval $cmd2
if [ $? -eq 0 ]
then
echo ".........OK"
fi;
exit 0
Les bases de données sont stockées sous forme de fichiers SQLite dans /data/data/PACKAGE/databases/DATABASEFILE où:
Vous pouvez voir (copier de/vers le système de fichiers) le fichier de base de données dans l'émulateur en sélectionnant la perspective DDMS , dans l'onglet Explorateur de fichiers.
Dans Android Studio 3.4.1, vous pouvez utiliser la fonction de recherche de Android Studio pour trouver "Device File Explorer", puis accédez à/data/data./nom_package/répertoire de la base de données de votre émulateur.
1 Voir la liste des périphériques/émulateurs actuellement disponibles.
$ adb devices
Liste des périphériques connectés
G7NZCJ015313309 périphérique émulateur-5554 périphérique
9885b6454e46383744 périphérique
2 Lancer la sauvegarde sur votre appareil/émulateur
$ adb -s emulator-5554 backup -f ~/Desktop/data.ab -noapk com.your_app_package.app;
3 Extraire data.ab
$ dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -;
Vous trouverez la base de données dans le dossier /db