45

リモート シェルから sqlite3 データベースを調べることができるようになったので、adb シェルから SharedPreferences を調べることは可能ですか? デバッグ時にコマンドラインから SharedPreferences を調べて操作する方がはるかに便利だからです。

または別の言い方をすれば、SharedPreferences はどのファイルに保存され、これらのファイルを表示および変更する方法は?

4

8 に答える 8

41

アプリがデバッグ可能な場合は、次のことができます。

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

設定は別のファイルに保存されている可能性があるため、ディレクトリを確認して見つけてください。

$ ls /data/data/<app-package-id>/shared_prefs/
于 2016-01-09T14:21:50.763 に答える
13

この便利なワンライナーを使用して、アプリの共有設定をプル、vim で編集、およびプッシュしています。

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/

APP_IDアプリケーションIDに設定するだけです。

これは、 から取得した共有設定のデフォルトのファイル名を使用していることを前提としていることに注意してくださいPreferenceManager.getDefaultSharedPreferences(context)。また、ADB は root モードで実行する必要があります。adb root

于 2016-02-24T10:28:36.620 に答える
1

Flutter にshared_preferencesを使用している場合、ファイルは/data/data/your.app.package.name/shared_prefs/FlutterSharedPreferences.xml. ファイルを編集した場合、変更をアプリに表示するには、アプリを再起動する必要があることに注意してください。ホット リロード/ホット リスタートを実行しても、手動で行った変更がアプリに反映されることはありません。

于 2020-09-06T17:06:25.400 に答える