adbのシェルからSharedPreferencesを検討するには?
-
12-09-2019 - |
解決
ファイン、私は上記の問題を提起した直後にファイルを発見しました。 (それは私が私の愛する仲間が怠惰なプログラマとして私を表示したくないので、公に、はるかに熱心に自分で答えを探すために私を刺激する質問をしているようです。)
これは/data/data/your.app.package.name/shared_prefs
下のXMLファイルで、ファイル名がyour.app.package.name_preferences.xmlです。あなたが把握ときには、コンテンツだけで、キーと値のマップであるという設定を変更するのはとても簡単です。
他のヒント
である場合のデバッグ可能のあなたが行うことができます:
$ 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/
ちょうどあなたのアプリケーションIDにAPP_ID
を設定します。
これはPreferenceManager.getDefaultSharedPreferences(context)
から得られるようなあなたは、共有設定のデフォルトのファイル名を使用していると想定しています。また、ADBは、ルート・モードで実行する必要がありますadb root
ヘルパーbashの機能
function adb-pull-prefs {
# ${1} - app package
# ${2} - prefs name
adb exec-out run-as ${1} cat /data/data/${1}/shared_prefs/${2}.xml
}
の場合には他の誰に実行されている、私はあなたがこのようexec-out
を使用する必要があり、だったように上記の提案のすべてを使用して、エラーを「アクセス許可が拒否されました」。
adb exec-out run-as <package.name> cat /data/data/<package.name>/shared_prefs/<package.name>_preferences.xml
まず、デバイスから共有設定ファイルを引っ張ります。これは、ルートpermisionを必要とします。
adb pull /data/data/org.test/shared_prefs/MyKeys.xml MyKeys.xml
今MyKeys.xmlは、お使いのシステムの現在のディレクトリに格納されています。
で値を変更
vim MyKeys.xml
は、編集ファイルの後、変更を保存し、デバイスにプッシュします。
adb push MyKeys.xml /data/data/org.test/shared_prefs/MyKeys.xml
変更内容を確認するには、
adb shell
cat /data/data/org.test/shared_prefs/MyKeys.xml