android adb shell 脚本 - 如何提取所有共享首选项

android adb shell script - how to pull all sharedpreferences

我需要 运行 一个处于调试模式的脚本,它将所有共享首选项拉入一个文件夹。根据我的研究,我只能从调试版本中提取。我尝试从非根目录 phone 获取共享首选项,如下所示:

$adb shell
$adb run-as mypackagename

然后我可以遍历到/data/data/mypackagename/shared_prefs

但我希望能够将其放入脚本中。我只能从 adb shell 外部调用 adb pull。 如何在调试应用程序上从普通的非根设备中提取 shared_prefs 整个文件夹?一定有办法,因为 facebook setho 是怎么做到的 ?

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

我创建了以下 shell 脚本

#!/bin/bash

pname=

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)