为什么我在使用 adb 时拒绝访问数据文件夹?

新手上路,请多包涵

我使用 adb 和以下命令连接到我的实时设备:

 C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied

我很惊讶地发现我的访问被拒绝了。为什么我不能像这样使用命令行浏览目录?

如何在手机上获得 root 访问权限?

原文由 gregm 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

如果您想浏览设备上的所有内容,请记住两件事。

  1. 您需要拥有具有根访问权限的手机才能浏览 Android 手机上的数据文件夹。这意味着您要么拥有开发人员设备( ADP1 或来自 Google I/O 的 ION ),要么您找到了一种通过其他方式“root”手机的方法。
  2. 您需要以 root 模式运行 ADB,通过执行以下命令执行此操作: adb root

原文由 Reto Meier 发布,翻译遵循 CC BY-SA 3.0 许可协议

从 API 级别 8 (Android 2.2) 开始,对于可调试应用程序(除非请求发布版本,否则一直由 Android Studio 构建的应用程序),您可以使用 shell run-as 命令运行命令或作为特定用户/应用程序可执行,或者只是切换到您的应用程序的 UID ,以便您可以访问其 数据 目录。

列出你的应用程序的目录内容:

 run-as com.yourapp ls -l /data/data/com.yourapp

切换到 com.yourapp 的 UID 并使用该 uid 运行所有其他命令(直到您调用 exit ):

 run-as com.yourapp
cd /data/data/com.yourapp
ls -l
exit

注意 1 :某些 HTC Desire 手机存在一个 已知问题。由于 /data/data 目录的非标准所有者/权限, run-as 命令无法在这些手机上运行。

注 2 :正如@Avio 的评论所指出的: run-as 在任何版本(从 7 到 10.1)上运行 Cyanogenmod 的三星 Galaxy S 手机也存在问题,因为在此平台上 /data/data 是指向 /datadata 的符号链接。解决该问题的一种方法是用实际目录替换符号链接(不幸的是,这通常需要 root 访问权限)。

原文由 Idolon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏