小编典典

Why do I get access denied to data folder when using adb?

all

我使用 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 访问权限?


阅读 61

收藏
2022-07-02

共1个答案

小编典典

从 API 级别 8 (Android 2.2) 开始,对于可调试应用程序(Android Studio 一直构建的应用程序,除非请求发布构建),您可以使用 shellrun-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 访问权限)。

2022-07-02