我使用 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 访问权限?
最佳答案
从 API 级别 8 (Android 2.2) 开始,对于可调试应用程序(Android Studio 一直构建的应用程序,除非请求发布构建),您可以使用 shell run-as
命令以特定用户/应用程序的身份运行命令或可执行文件,或者只是切换到应用程序的 UID,以便您可以访问其 data 目录。
列出你的应用的目录内容:
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:有一个known issue与一些 HTC Desire 手机。由于 /data/data
目录的非标准所有者/权限,run-as
命令无法在这些手机上运行。
注意 2:正如@Avio 在评论中指出的那样:
run-as
在任何版本(从 7 到 10.1)上运行 Cyanogenmod 的三星 Galaxy S 手机也存在问题,因为在这个平台上,/data/data
是到 的符号链接(symbolic link)>/数据数据
。解决此问题的一种方法是将符号链接(symbolic link)替换为实际目录(不幸的是,这通常需要 root 访问权限)。
关于android - 为什么我在使用 adb 时拒绝访问数据文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1043322/