Wie SharedPreferences von adb shell zu untersuchen?
-
12-09-2019 - |
Frage
Jetzt, wo wir können Prüfungs sqlite3 Datenbanken von einem Remote Shell ist es möglich, SharedPreferences von adb shell zu untersuchen? Da wäre es viel bequemer zu untersuchen und zu manipulieren SharedPreferences von der Kommandozeile wird beim Debuggen.
Oder anders gesagt, in welchen Dateien SharedPreferences gespeichert werden und wie diese Dateien anzuzeigen und zu ändern?
Lösung
Fine, fand ich die Datei nur, nachdem ich die Frage oben angehoben. (Es scheinen Fragen öffentlich stimulieren mich zu fragen, Antworten zu suchen, indem ich mehr viel Sorgfalt, da will ich nicht meine lieben Kollegen mich als faul Programmierer sehen.)
Es ist eine XML-Datei unter /data/data/your.app.package.name/shared_prefs
und der Dateiname your.app.package.name_preferences.xml. Es ist wirklich einfach, die Einstellungen zu ändern, wenn Sie herausfinden, dass der Inhalt ist nur eine Schlüssel-Wert-Karte.
Andere Tipps
Wenn die App debugable Sie können tun:
$ adb shell
$ run-as <app-package-id>
$ cat /data/data/<app-package-id>/shared_prefs/prefs.xml
Beachten Sie, dass die Präferenz könnte so besser in einer anderen Datei gespeichert werden überprüfen Sie das Verzeichnis zu finden:
$ ls /data/data/<app-package-id>/shared_prefs/
Ich verwende diese bequemen Einzeiler in vim zu ziehen, zu bearbeiten, und drücken gemeinsame Vorlieben für einen App:
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/
Just gesetzt APP_ID
Ihre Anwendung ID.
Beachten Sie, dass diese voraus, dass Sie die Standarddateinamen für gemeinsam genutzte Einstellungen verwenden, wie aus PreferenceManager.getDefaultSharedPreferences(context)
erhalten. Außerdem muss ADB im root-Modus ausgeführt werden: adb root
Helper bash Funktion
function adb-pull-prefs {
# ${1} - app package
# ${2} - prefs name
adb exec-out run-as ${1} cat /data/data/${1}/shared_prefs/${2}.xml
}
Falls jemand anderes läuft in „Zugriff verweigert“ -Fehler alle oben genannten Vorschläge mit, wie ich war, können Sie exec-out
wie diese verwenden müssen:
adb exec-out run-as <package.name> cat /data/data/<package.name>/shared_prefs/<package.name>_preferences.xml
Zuerst zieht gemeinsam genutzten Einstellungen von Gerät Datei. Dies erfordert root permision.
adb pull /data/data/org.test/shared_prefs/MyKeys.xml MyKeys.xml
Jetzt MyKeys.xml wird in dem aktuellen Verzeichnis Ihres Systems gespeichert.
Ändern Sie Werte von
vim MyKeys.xml
Nach der Bearbeitung Datei Änderungen speichern und zum Gerät drücken.
adb push MyKeys.xml /data/data/org.test/shared_prefs/MyKeys.xml
So überprüfen Sie Ihre Änderungen
adb shell
cat /data/data/org.test/shared_prefs/MyKeys.xml