¿Dónde almacena el emulador de Android la base de datos SQLite?

Estoy trabajando en una aplicación de Android que almacena datos en una base de datos SQLite. Mi pregunta es, ¿dónde se almacena este archivo de base de datos en el sistema de archivos cuando estás usando un emulador?

He visto que está almacenado en

/data/data/package_name/databases

pero necesito saber en qué parte del disco duro de mi máquina local se encuentra el mapa. La base de datos persiste en varias ejecuciones del emulador, incluso después de haber apagado la máquina, por lo que no puede residir simplemente en la RAM …

El sistema de archivos del emulador no se asigna a un directorio en su disco duro. La imagen de disco del emulador se almacena como un archivo de imagen, que puede administrar a través de Eclipse (busque el icono de G1 en la barra de herramientas) o mediante el propio binario del emulador (ejecute “emulator -help” para obtener una descripción de las opciones) .

Lo mejor es que uses adb de la línea de comando para conectar un emulador en ejecución. Si puede obtener el directorio y el nombre de archivo específicos, puede hacer una “extracción de adb” para sacar el archivo de la base de datos del emulador y colocarlo en su disco duro habitual.

Editar : se eliminó la sugerencia de que esto también funciona para dispositivos sin raíz: solo funciona para emuladores y dispositivos en los que se usa adb como raíz.

Por favor, consulte este enlace o siga la respuesta a continuación.


Una actualización mencionada en los comentarios a continuación:

Ya no necesita estar en la perspectiva de DDMS, solo abra el Explorador de archivos desde la ventana de Eclipse > Mostrar vista> Otros … Parece que la aplicación no necesita ejecutarse, puedo buscar en diferentes archivos de aplicaciones contenido. Estoy ejecutando ADB versión 1.0.29


O bien, puedes probar el viejo enfoque:

Abra la perspectiva DDMS en su Eclipse IDE

( Ventana> Abrir perspectiva> Otro> DDMS )

y lo mas importante:

SU APLICACIÓN DEBE FUNCIONAR PARA QUE PUEDA VER LA JERARQUÍA DE CARPETAS Y ARCHIVOS .

Luego, en la pestaña Explorador de archivos , seguirá la ruta:

data> data> your-package-name> databases> your-database-file .

Luego, seleccione el archivo, haga clic en el ícono del disquete en la esquina derecha de la pantalla para descargar el archivo .db . Si desea cargar un archivo de base de datos al emulador, puede hacer clic en el ícono del teléfono (al lado del ícono del disquete) y elegir el archivo que desea cargar.

Si desea ver el contenido del archivo .db , le aconsejo que utilice el navegador de la base de datos SQLite, que puede descargar aquí .

PD: si quieres ver la base de datos desde un dispositivo real, debes rootear tu teléfono.

Las otras respuestas están muy desactualizadas. Con Android Studio , esta es la manera de hacerlo:

  1. Haga clic en Herramientas> Android> Android Device Monitor

enter image description here

  1. Haga clic en Explorador de archivos

enter image description here

  1. Navegue a su archivo db y haga clic en el botón Guardar .

enter image description here

Escribí un script bash simple, que extrae la base de datos de un dispositivo Android a su computadora (usuarios de Linux, Mac)

nombre de archivo: android_db_move.sh uso: android_db_move.sh com.example.app db_name.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 

Dado que la pregunta no está restringida a Android Studio, entonces estoy dando la ruta para Visual Studio 2015 (trabajó para Xamarin).

Herramientas-Android-Android Device Monitor

enter image description here

  • Ubique el archivo de base de datos mencionado en la imagen de arriba, y haga clic en el botón de extracción como se muestra en la imagen 2.
  • Guarde el archivo en su ubicación deseada.
  • Puede abrir ese archivo usando SQLite Studio o DB Browser para SQLite.

Gracias especiales a otros respondedores de esta pregunta.

Las bases de datos se almacenan como archivos SQLite en / data / data / PACKAGE / databases / DATABASEFILE donde:

Puede ver (copiar desde / hasta el sistema de archivos) el archivo de base de datos en el emulador seleccionando la perspectiva DDMS , en la pestaña Explorador de archivos.

Solución simple: funciona tanto para Emulator como para dispositivos conectados

1 Vea la lista de dispositivos / emuladores actualmente disponibles.

 $ adb devices 

Lista de dispositivos conectados

Dispositivo G7NZCJ015313309 dispositivo emulator-5554

Dispositivo 9885b6454e46383744

2 Ejecute la copia de seguridad en su dispositivo / emulador

 $ adb -s emulator-5554 backup -f ~/Desktop/data.ab -noapk com.your_app_package.app; 

3 Extracto de datos.ab

 $ dd if=data.ab bs=1 skip=24 | openssl zlib -d | tar -xvf -; 

Encontrará la base de datos en la carpeta /db