web-dev-qa-db-fra.com

Où est-ce que Android émulateur stocke la base de données SQLite?)

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 ...

106
I82Much

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.

55
Eric Mill

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.

122
rogcg

Les autres réponses sont gravement obsolètes. Avec Android Studio , voici comment procéder:

  1. Cliquez sur Outils> Android> Android Device Monitor

enter image description here

  1. Cliquez sur Explorateur de fichiers

enter image description here

  1. Accédez à votre fichier de base de données et cliquez sur le bouton Enregistrer .

enter image description here

18
Yuchen Zhong

Depuis la question n'est pas limitée à Android Studio, je donne donc le chemin pour Visual Studio 2015 (travaillé pour Xamarin).

Tools-Android-Android Device Monitor

enter image description here

  • Localisez le fichier de base de données mentionné dans l'image ci-dessus, puis cliquez sur le bouton Pull comme indiqué dans l'image 2.
  • Enregistrez le fichier à l’emplacement de votre choix.
  • Vous pouvez ouvrir ce fichier à l'aide de SQLite Studio ou de DB Browser for SQLite.

Un merci spécial aux autres intervenants de cette question.

6
Foyzul Karim

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
6
Tadas Valaitis

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.

4
caligari

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. 

3
S. Miller

Solution simple - fonctionne à la fois pour l'émulateur et les appareils connectés

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

3
Mick