リモート シェルから sqlite3 データベースを調べることができるようになったので、adb シェルから SharedPreferences を調べることは可能ですか? デバッグ時にコマンドラインから SharedPreferences を調べて操作する方がはるかに便利だからです。
または別の言い方をすれば、SharedPreferences はどのファイルに保存され、これらのファイルを表示および変更する方法は?
リモート シェルから sqlite3 データベースを調べることができるようになったので、adb シェルから SharedPreferences を調べることは可能ですか? デバッグ時にコマンドラインから SharedPreferences を調べて操作する方がはるかに便利だからです。
または別の言い方をすれば、SharedPreferences はどのファイルに保存され、これらのファイルを表示および変更する方法は?
アプリがデバッグ可能な場合は、次のことができます。
$ 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/
この便利なワンライナーを使用して、アプリの共有設定をプル、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
Flutter にshared_preferencesを使用している場合、ファイルは/data/data/your.app.package.name/shared_prefs/FlutterSharedPreferences.xml
. ファイルを編集した場合、変更をアプリに表示するには、アプリを再起動する必要があることに注意してください。ホット リロード/ホット リスタートを実行しても、手動で行った変更がアプリに反映されることはありません。