Acceda a datos privados en Android

De acuerdo con la documentación oficial del desarrollador, estas son las opciones para el almacenamiento de datos en Android:

  • Preferencias compartidas: almacene datos primitivos privados en pares clave-valor.
  • Almacenamiento interno: almacene datos privados en la memoria del dispositivo.
  • Almacenamiento externo: almacene datos públicos en el almacenamiento externo compartido.
  • Bases de datos SQLite: almacene datos estructurados en una base de datos privada.
  • Conexión de red: almacene datos en la web con su propio servidor de red.

Además de la opción de conexión de red, las otras opciones son todos datos persistentes en el dispositivo. Tanto SharedPreferences como SQlite Databases son datos privados almacenados en el dispositivo. Estas aplicaciones o usuarios no pueden acceder a estos archivos a menos que esté en un emulador o dispositivo rooteado. Aquí hay algunas maneras de cómo accedo e inspecciono estos datos privados para depurarlos durante el desarrollo.

Acceda a archivos privados

En un emulador o dispositivo rooteado

Si está ejecutando un emulador o dispositivo rooteado. Debe tener acceso al almacenamiento privado del dispositivo. Puede acceder a los archivos desde la GUI de Android Studio o mediante la línea de comandos:

  • GUI: en Android Studio, inicie Android Device Monitor desde el menú: Herramientas / Android / Android Device Monitor. Vaya a la pestaña Explorador de archivos, luego datos / datos / /. Encuentre el archivo que está buscando y puede empujar y extraer un archivo desde allí.
  • Línea de comando: también puede enviar el archivo al dispositivo o extraer el archivo del dispositivo mediante adb:
adb pull remote-dir local-dir <- Copiar del dispositivo a la máquina local
adb push local-dir remote-dir <- Copiar de la máquina local al dispositivo

En un dispositivo no rooteado

Si no está ejecutando en un emulador o dispositivo rooteado. Desde la línea de comando:

adb shell
run-as  F
datos de cd / datos / ...

Ahora puede acceder a los archivos en el almacenamiento interno del dispositivo. Para salir del shell, escriba exit.

exit <- sale del shell adb

Archivo de base de datos SQLite

Una vez que pueda acceder al archivo de base de datos SQLite en un emulador, dispositivo rooteado o mediante adb shell / run como [nombre del paquete], hay algunas opciones para inspeccionar el esquema y su base de datos SQLite en el dispositivo.

Inspeccione SQLite db a través de una herramienta GUI

Primero extraiga el archivo del dispositivo, luego use un software GUI para ver el esquema y el contenido. Utilizo el navegador SQLite que le permite ver el esquema de la base de datos, el contenido de la tabla, así como ejecutar algunos scripts SQL simples.

Inspeccione SQLite db a través de la herramienta de línea de comandos sqlite3

Para mí, la opción más fácil es usar la herramienta de línea de comandos sqlite3 para inspeccionar la base de datos desde adb shell:

adb shell
cd data / data /  / bases de datos /
sqlite3 
.mesas
.schema 

Alternativamente, puede usar sqlite3 localmente en lugar de dentro de un shell, después de extraer el archivo de base de datos del dispositivo:

adb pull 
sqlite3 

Borrando los datos de la aplicación

Entonces, cuando trabajas con SharedPreferences o SQLite db en Android, a menudo necesitas borrar los datos y comenzar de nuevo. Aquí hay algunas opciones:

  • Desinstala y vuelve a instalar la aplicación
  • Vaya a Configuración del dispositivo / Aplicaciones / Encuentre su aplicación y haga clic en ella / Almacenamiento / Borrar datos

Hay una manera mucho más fácil de ayudar a su proceso de desarrollo y depuración: instale un complemento de Android Studio llamado ADB Idea. Para instalar el complemento, vaya a Android Studio / Preferencias / Complementos, haga clic en Examinar repositorios y busque "Idea ADB". Instale y reinicie Android Studio y verá la opción de complemento en Herramientas / Android / Idea ADB. Darle una oportunidad. Este complemento me parece muy útil cuando necesito borrar los datos de la aplicación.

Usa una biblioteca

Hay otras opciones para acceder e inspeccionar archivos privados en dispositivos Android mediante el uso de una biblioteca.

Una de las opciones es utilizar una biblioteca llamada Android Debug Database y puede leer los detalles de una publicación de blog del autor sobre esto.

Si desea inspeccionar las conexiones de red además de la base de datos y las preferencias compartidas, use Stetho, una herramienta de depuración de código abierto desarrollada por Facebook. Cuando use Stetho, su aplicación debe estar en modo de depuración, pero no es necesario el acceso a la raíz. Es una herramienta poderosa que le permite depurar su aplicación usando la Herramienta para desarrolladores de Chrome.