android adb android-sharedpreferences

android - ¿Cómo examinar SharedPreferences desde adb shell?



android-sharedpreferences (6)

Bien, encontré el archivo justo después de plantear la pregunta anterior. (Parece que hacer preguntas me estimula públicamente a buscar respuestas por mí mismo mucho más diligentemente, ya que no quiero que mis queridos compañeros me vean como un perezoso programador).

Es un archivo XML en /data/data/your.app.package.name/shared_prefs , y el nombre del archivo es your.app.package.name_preferences.xml. Es realmente fácil modificar las preferencias cuando se da cuenta de que el contenido es solo un mapa de clave-valor.

Ahora que podemos Examinar bases de datos sqlite3 desde un Shell remoto , ¿es posible examinar SharedPreferences desde adb shell? Dado que sería mucho más conveniente examinar y manipular SharedPreferences desde la línea de comandos cuando se depura.

O dicho de otra manera, ¿en qué archivos se guardan las Preferencias Compartidas, y cómo ver y modificar estos archivos?


En caso de que alguien más se encuentre con errores de "Permiso denegado" utilizando todas las sugerencias anteriores como yo, es posible que deba utilizar la función exec-out como esta:

function adb-pull-prefs { # ${1} - app package # ${2} - prefs name adb exec-out run-as ${1} cat /data/data/${1}/shared_prefs/${2}.xml }


Estoy usando este conveniente unineador para tirar, editar en vim y empujar las preferencias compartidas para una aplicación:

APP_ID=com.myapp; adb pull /data/data/${APP_ID}/shared_prefs/${APP_ID}_preferences.xml /tmp/${APP_ID}_preferences.xml && vim /tmp/${APP_ID}_preferences.xml && adb push /tmp/${APP_ID}_preferences.xml /data/data/${APP_ID}/shared_prefs/

Simplemente configure APP_ID en su ID de aplicación.

Tenga en cuenta que esto supone que está utilizando el nombre de archivo predeterminado para las preferencias compartidas, tal como se obtiene de PreferenceManager.getDefaultSharedPreferences(context) . Además, ADB necesita ejecutarse en modo raíz: adb root


Función de ayuda alias bash

adb exec-out run-as <package.name> cat /data/data/<package.name>/shared_prefs/<package.name>_preferences.xml


Primero, extraiga el archivo de preferencias compartidas del dispositivo. Esto requiere autorización de raíz.

adb pull /data/data/org.test/shared_prefs/MyKeys.xml MyKeys.xml

Ahora MyKeys.xml se almacena en el directorio actual de su sistema.

Modificar valores por

vim MyKeys.xml

Después de editar el archivo, guarde los cambios y presione al dispositivo.

adb push MyKeys.xml /data/data/org.test/shared_prefs/MyKeys.xml

Para verificar sus cambios

adb shell cat /data/data/org.test/shared_prefs/MyKeys.xml


Si la aplicación es debuable, puedes hacer:

$ adb shell $ run-as <app-package-id> $ cat /data/data/<app-package-id>/shared_prefs/prefs.xml

Tenga en cuenta que la preferencia puede almacenarse en otro archivo, por lo que es mejor consultar el directorio para encontrarla:

$ ls /data/data/<app-package-id>/shared_prefs/