如何检查来自亚行外壳SharedPreferences?(How to examine Shared

2019-07-31 14:25发布

现在,我们可以从一个远程Shell检查sqlite3的数据库 ,是它可以检查从亚行外壳SharedPreferences? 由于这将是更方便检查和调试时在命令行操作SharedPreferences。

或以另一种方式,在哪些文件SharedPreferences保存,以及如何查看和修改这些文件?

Answer 1:

好吧,我发现就在我上面提出的问题的文件。 (这似乎发问公开刺激我一个人更加勤奋地寻找答案,因为我不希望我的亲爱的同行查看我作为一个懒惰的程序员。)

它是在一个XML文件/data/data/your.app.package.name/shared_prefs ,文件名是your.app.package.name_preferences.xml。 这是很容易,当你弄清楚,内容只是一个键 - 值映射到修改的喜好。



Answer 2:

如果应用程序是你可以做调试的

$ 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/


Answer 3:

我使用这个便捷的班轮拉,在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



Answer 4:

助手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
}


Answer 5:

万一别人运行到“权限被拒绝”使用所有的上述建议的错误,好像我是,你可能需要使用exec-out这样的:

adb exec-out run-as <package.name> cat /data/data/<package.name>/shared_prefs/<package.name>_preferences.xml


Answer 6:

先拉共享偏好从设备文件。 这需要根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


文章来源: How to examine SharedPreferences from adb shell?