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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top