如何检查来自亚行外壳SharedPreferences?
-
12-09-2019 - |
题
现在,我们可以检查从一个远程外壳sqlite3的数据库一>,是它可以检查从亚行外壳SharedPreferences?因为它是更方便检查和调试时从命令行操纵SharedPreferences。
或者以另一种方式,在哪些文件SharedPreferences保存,以及如何查看和修改这些文件?
解决方案
好,我发现,只有后我提出上述问题的文件。 (这似乎发问公开刺激我一个人更加勤奋地寻找答案,因为我不希望我的亲爱的同行查看我作为一个懒惰的程序员。)
有下一个/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/
刚刚成立APP_ID
到您的应用程序ID。
请注意,这假定使用默认的文件名对于共享偏好,如从PreferenceManager.getDefaultSharedPreferences(context)
获得。此外,亚行需要在根模式下运行: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
不隶属于 StackOverflow