Recupere la base de datos o cualquier otro archivo del almacenamiento interno usando ejecutar como

Resuelto CQM asked hace 54 años • 12 respuestas

En un dispositivo Android no rooteado, puedo navegar a la carpeta de datos que contiene la base de datos usando el run-ascomando con el nombre de mi paquete. Me conformo con la mayoría de los tipos de archivos con solo verlos, pero con la base de datos que me gustaría extraer del dispositivo Android.

¿ Existe un comando download copyo movede esta parte de adb shell? Me gustaría descargar el archivo de la base de datos y ver su contenido usando un navegador de base de datos.

Una respuesta aquí implica convertir el paquete completo de la aplicación en un archivo comprimido, pero no hay más respuesta sobre cómo extraer ese archivo una vez hecho y movido a la máquina, lo que me deja muy desviado cuando podría haber una solución más directa para empezar.

CQM avatar Jan 01 '70 08:01 CQM
Aceptado

Por diseño, userla versión de Android (eso es lo que tiene en su teléfono hasta que desbloquea el gestor de arranque y actualiza el teléfono con userdebugel engsoftware) restringe el acceso al almacenamiento interno : cada aplicación solo puede acceder a sus propios archivos. Afortunadamente para los desarrolladores de software que no están dispuestos a rootear sus teléfonos, Google proporciona una forma de acceder al almacenamiento interno de versiones depurables de sus paquetes mediante run-asun comando.

Para descargar /data/data/debuggable.app.package.name/databases/filedesde un dispositivo Android 5.1+, ejecute el siguiente comando:

adb exec-out run-as debuggable.app.package.name cat databases/file > file

Para descargar varios archivos en una carpeta a /data/data/debuggable.app.package.name/la vez, utilice tar:

adb exec-out run-as debuggable.app.package.name tar c databases/ > databases.tar
adb exec-out run-as debuggable.app.package.name tar c shared_prefs/ > shared_prefs.tar
Alex P. avatar Aug 27 '2013 17:08 Alex P.

La respuesta aceptada ya no me funciona (¿bloqueada por Android?)

Entonces en lugar de eso hice esto:

> adb shell
shell $ run-as com.example.package
shell $ chmod 666 databases/file
shell $ exit                                               ## exit out of 'run-as'
shell $ cp /data/data/package.name/databases/file /sdcard/
shell $ run-as com.example.package
shell $ chmod 600 databases/file
> adb pull /sdcard/file .
marmor avatar Feb 17 '2015 09:02 marmor

Si alguien busca extraer una base de datos de una aplicación de depuración , puede utilizar el siguiente procedimiento:

  1. buscar y abrir el explorador de archivos del dispositivo

buscar y abrir el explorador de archivos del dispositivo

  1. Seleccione su teléfono y luego busque el data/datadirectorio

ir al directorio de datos/datos

  1. Ahora busque el paquete de su aplicación y vaya a la carpeta de bases de datos. Puede ver las bases de datos allí y, al hacer clic derecho, tendrá la opción de guardarlas en su disco.

ingrese la descripción de la imagen aquí

Ifta avatar Jul 30 '2018 05:07 Ifta

He publicado un script de shell simple para volcar bases de datos:

https://github.com/Pixplicity/humpty-dumpty-android

Realiza dos métodos distintos que se describen aquí:

  1. Primero, intenta hacer que el archivo sea accesible para otros usuarios e intenta extraerlo del dispositivo.
  2. Si eso falla, transmite el contenido del archivo a través del terminal a la máquina local. Realiza un truco adicional para eliminar \rcaracteres que algunos dispositivos envían al shell.

Desde aquí puede utilizar una variedad de aplicaciones SQLite CLI o GUI, como sqlite3o sqlitebrowser, para explorar el contenido de la base de datos.

Paul Lammertsma avatar Apr 08 '2015 19:04 Paul Lammertsma