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/