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

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 se utiliza un emulador?

He visto que está almacenado en

/data/data/package_name/databases

Pero necesito saber dónde en el disco duro de mi máquina local que en realidad se mapea. La base de datos persiste en múltiples ejecuciones del emulador, incluso después de haber apagado la máquina, por lo que no puede residir en 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 bien a través del emulador binario (ejecute "emulator -help" para una descripción de las opciones) .

Lo mejor es usar adb desde la línea de comandos para conectarse a un emulador en ejecución. Si puede obtener el directorio y el nombre de archivo específicos, puede realizar un "pull de adb" para obtener el archivo de base de datos del emulador y en su disco duro normal.

Editar : Se ha suprimido la sugerencia de que esto también funciona para dispositivos no conectados – sólo funciona para emuladores y dispositivos en los que se está ejecutando adb como root.

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


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

No es necesario que esté en la perspectiva de DDMS, simplemente abra el Explorador de archivos desde la ventana de Eclipse > Mostrar vista> Otros … Parece que la aplicación no necesita estar ejecutándose ni siquiera, puedo navegar por diferentes archivos de aplicaciones contenido. Estoy ejecutando ADB versión 1.0.29


O, puede probar el viejo enfoque:

Abra la perspectiva DDMS en su Eclipse IDE

( Ventana> Perspectiva abierta> Otros> DDMS )

y lo mas importante:

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

A continuación, en la pestaña Explorador de archivos , seguirá la ruta:

Datos> datos> su-paquete-nombre> bases de datos> su archivo de base de datos .

A continuación, seleccione el archivo, haga clic en el icono de disket en la esquina derecha de la pantalla para descargar el archivo .db . Si desea cargar un archivo de base de datos en el emulador, puede hacer clic en el ícono del teléfono (junto al icono del disket) y elegir el archivo que desea cargar.

Si desea ver el contenido del archivo .db , le aconsejo que utilice SQLite Database Browser, que puede descargar aquí .

PS: Si quieres ver la base de datos desde un dispositivo real, debes root tu teléfono.

Las otras respuestas están muy anticuadas. Con Android Studio , así es como lo haces:

  1. Haga clic en Toos> Android> Android Device Monidtor

Introduzca aquí la descripción de la imagen

  1. Haga clic en Explorador de archivos

Introduzca aquí la descripción de la imagen

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

Introduzca aquí la descripción de la imagen

Escribí un script bash simple, que extrae la base de datos del dispositivo android a su computadora (Linux, usuarios de 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 

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

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

Dado que la pregunta no se limita a Android Studio, por lo que estoy dando el camino para Visual Studio 2015 (trabajado para Xamarin).

Herramientas-Android-Android Device Monitor

Introduzca aquí la descripción de la imagen

Gracias especiales a otros respondedores de esta pregunta.

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

1 Consulte la lista de dispositivos / emuladores actualmente disponibles.

 $ adb devices 

Lista de dispositivos conectados

G7NZCJ015313309 dispositivo emulador-5554 dispositivo

9885b6454e46383744 dispositivo

2 Ejecutar copia de seguridad en el dispositivo / emulador

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

3 Extraer data.ab

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

Encontrará la base de datos en la carpeta /db

  • Consulta de eliminación de Android
  • ¿Es posible obtener acceso de sólo lectura a una base de datos sqlite en un apk?
  • ¿Cómo manejas los registros de antememoria de caché en la aplicación para móviles
  • ¿Cómo puedo eliminar la columna de la tabla sqlite en android?
  • Utilización de la base de datos legible y escrita de SQLite
  • Excepción de tiempo de ejecución de la biblioteca de persistencia de habitación al llamar al método Rooms inMemoryBuilder
  • Cómo contar la fila de una tabla de base de datos sqlite android
  • IllegalStateException: Tablas no válidas al intentar consultar la base de datos con ContentProvider
  • ¿Puede un proyecto de biblioteca de Android tener su propia base de datos SQLite?
  • Hacer inserciones SQLite eficientes con Android
  • Actualización de base de datos y aplicaciones Android SQLite
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.