android adb shell脚本 - 如何拉取所有sharedpreferences

时间:2016-01-05 21:16:10

标签: android shell adb

我需要在调试模式下运行一个脚本,将所有共享偏好拉入一个文件夹。根据我的研究,我只能从调试版本中获取。我尝试从非root用户手机获取这样的共享偏好:

$adb shell
$adb run-as mypackagename

然后我能够遍历到/ data / data / mypackagename / shared_prefs

但我希望能够将其放入脚本中。我只能从外部adb shell调用adb pull。 如何从调试应用程序中的普通非root设备中取出shared_prefs整个文件夹?必须有办法,因为facebook如何做到这一点

这个问题是关于检索sharedPreferences而不是数据库检索。

1 个答案:

答案 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)进行测试