Acceder a la carpeta “data” de una aplicación Android

enero 14, 2015

En una aplicación Android podemos guardar la información que generamos en la app (imágenes, archivos, etc.) en la tarjeta SD del dispositivo o en la propia carpeta interna de la aplicación (y no podremos consultar esa información desde fuera de la app).

Por ejemplo, imaginemos que queremos desarollar una aplicación Android en la que podemos hacer fotos pero que solo se pueden utilizar desde la propia app. No queremos que se muestren en la galería ni que el usuario pueda acceder a la tarjeta SD y descargar las fotos.
En este caso, guardaremos las fotos en la carpeta interna de la app. Esta carpeta interna se encuentra en la ruta /data/data/com.yourcompany.appname/

La opción más sencilla para acceder a esa carpeta es teniendo el teléfono rooteado (podremos movernos por cualquier carpeta del dispositivo).

Si no somos root y tenemos Android >= 4.0, aún tenemos una forma de poder acceder. Consiste en hacer un backup de la aplicación Android, descargarla en nuestro ordenador y extraer el contenido.
Para ello, conectamos el dispositivo por USB y seguimos los siguientes pasos:

adb backup -f ~/data.ab -noapk com.yourcompany.appname

Obviamente, cambiaremos el nombre del paquete por el de la aplicación de la que queremos hacer el backup.
Al ejecutar este comando, nos aparecerá una pantalla en el dispositivo para que confirmemos que queremos realizar el backup de la aplicación (tendremos que pulsar sobre “Back up my data”).

backup-screen

El archivo descargado (data.ab) es del tipo (a)ndroid (b)ackup, que no es más que un archivo tar encriptado.
Para extraer el contenido, ejecutamos el siguiente comando:

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

Si no tenemos instalado openssl compilado con la librería zlib, nos mostrará este error.

openssl:Error: 'zlib' is an invalid command.

Si este ha sido nuestro caso, aún podemos extraerlo utilizando este otro comando:

dd if=data.ab bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" | tar -xvf -

El archivo se habrá extraído en la carpeta apps/com.yourcompany.appname, conteniendo toda la información interna de la aplicación.

Hay que tener en cuenta no podremos hacer un backup de la app si hemos desactivado esta opción en el AndroidManifest.xml de esta forma:

android:allowBackup="false"
CompartirTweet about this on TwitterShare on TumblrShare on FacebookShare on LinkedInShare on Google+Email this to someone

Tags ; , , , ,

1 comentario

    Marco Dic 15, 2015

    disculpa me aparece un error con ambos comandos
    dice que el comando openssl y python no existen

    Responder

Escribe un comentario

Los comentarios son moderados y se utiliza rel="nofollow" para los enlaces.