我需要在调试模式下运行一个脚本,将所有共享偏好拉入一个文件夹。根据我的研究,我只能从调试版本中获取。我尝试从非root用户手机获取这样的共享偏好:
$adb shell
$adb run-as mypackagename
然后我能够遍历到/ data / data / mypackagename / shared_prefs
但我希望能够将其放入脚本中。我只能从外部adb shell调用adb pull。 如何从调试应用程序中的普通非root设备中取出shared_prefs整个文件夹?必须有办法,因为facebook如何做到这一点?
这个问题是关于检索sharedPreferences而不是数据库检索。
答案 0 :(得分:3)
我创建了以下shell脚本
#!/bin/bash
pname=$1
if [ -z "${pname}" ]; then
echo "Please enter a package name"
exit 1
fi
adb shell "run-as $pname chmod 776 shared_prefs"
adb pull /data/data/$pname/shared_prefs ./${pname}_shared_prefs
adb shell "run-as $pname chmod 771 shared_prefs"
将其命名为pullsharedprefs.sh(或任何您想要的),并从终端运行命令:
chmod +x pullsharedprefs.sh
./pullsharedprefs.sh some.package.name
shared_prefs将被拉到当前工作目录并命名为{package-name} _shared_prefs
使用genymotion(Android 5.1.1)进行测试