【问题标题】:android adb shell script - how to pull all sharedpreferencesandroid adb shell 脚本 - 如何提取所有 sharedpreferences
【发布时间】:2016-01-05 21:16:09
【问题描述】:

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

$adb shell
$adb run-as mypackagename

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

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

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

【问题讨论】:

  • 那是关于数据库的,这是共享偏好。虽然有点相似,但我的问题专门讨论了共享偏好检索。有些可以处于私人模式等。

标签: android shell adb


【解决方案1】:

我创建了以下 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) 测试

【讨论】:

  • 当我在我的设备上运行此程序(运行 Nougat)时,我在尝试 pull 时看到以下错误:adb: error: remote object '/data/data/<redacted>/shared_prefs' does not exist 即使我可以看到并检查共享首选项目录,如果我手动使用设备外壳。任何想法为什么会这样?
猜你喜欢
  • 2010-11-17
  • 2021-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-28
  • 2014-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多