Android: adb: 权限被拒绝

无论我在 adb shell之后输入什么,Permission denied都会失败:

D:\android-sdk-windows\platform-tools>adb shell find /data -name *.db
find: permission denied


D:\android-sdk-windows\platform-tools>adb shell test
test: permission denied


D:\android-sdk-windows\platform-tools>adb remount
remount failed: No such file or directory

有什么想法吗?

397350 次浏览

执行 adb remount,然后尝试 adb shell

根据 adb help:

adb root                     - restarts the adbd daemon with root permissions

这确实解决了我的问题。

“拒绝许可”的原因是因为您的 Android 机器没有被正确地植入根目录。你看到 $后,你开始 adb shell?如果您正确地植根了您的机器,您就会看到 #

如果您看到 $,尝试输入 su进入超级用户模式。如果启用了 Root,您将看到 #-而无需询问密码。

您可能需要从开发人员设置菜单中激活 adb root。 如果从 cmd 行运行 adb root,可以得到:

root access is disabled by system setting - enable in settings -> development options

一旦激活 root 选项(仅 ADB 或 Apps 和 ADB) ,ADB 将重新启动,您将能够从 cmd 行使用 root。

我的解决方案是(xx 到 David Ljung Madison 贴子)

  1. 根手机,并确保它是根
  2. Adb 服务器(adbd)没有以根用户身份运行,因此 下载并安装了 adbd 不安全应用程序
  3. 重新启动 adb adb kill-server
  4. 运行它 & 工作像一朵花!

不使用 root : 如果您不能使您的手机使用 root,请使用 run-as <package>命令来访问应用程序的数据。

例如:

$ adb exec-out run-as com.yourcompany.app ls -R /data/data/com.yourcompany.app/

exec-out执行命令时不会启动 shell 并损坏输出。

作为管理员运行您的 cmd,这将解决我的问题。 谢谢。

非 root 用户无法访问 data分区,如果您想访问它,必须使用 root 用户。

ADB root不适用于所有产品,取决于手机的构建类型。

在新版本的 android 工作室中,您可以探索 /data/data路径的可调试应用程序。

更新日期2022

Android Studio 的新版本有一些工具,比如 Device ExplorerApp Inspection来访问应用程序数据(应用程序必须是可调试的)。

None of the previous solutions worked for me but I was able to make it work using this command

adb shell "run-as com.yourcompany.app cat /data/data/com.yourcompany.app/shared_prefs/SHARED_PREF_PROTECTED.xml" > SHARED_PREF_PROTECTED.xml

if you are looking to get /data/anr/ as I was, you can use an easy approach

adb bugreport

source: 这个答案