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

标签 android 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 访问权限?

最佳答案

从 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/

相关文章:

java - lombok 1.18.2 抛出 transformClassesWithDexBuilderForDebug

android - 当 Android 应用程序崩溃时,我可以获得 C++ 堆栈跟踪吗?

android - 将 Gradle 和 Android Studio 更新到 3.5 后复制 Hamcrest 和 JUnit 类

android - Moto G mobile 在 Eclipse 的设备列表中显示离线

android - 无法在已 root 的 Android 设备中打开/data 文件夹

java - 当我尝试在 Room 中插入元素时,为什么会出现 "null object reference"异常?

android - 如何将所有操作项放在左侧,尽可能多地占用空间,同时在右侧溢出?

android - 通过 adb 从 PC 调试 Android WebView

android - 使用 adb pull 从手机复制应用程序的文件(未root)

android - 在 logcat 中显示 system.out.println