我使用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权限的手机,以便浏览Android手机上的数据文件夹。这意味着你要么有一个开发设备(ADP1或谷歌I/O的ION),要么你已经找到了一种方法来“根”你的手机。 你需要在根模式下运行ADB,执行:ADB root

其他回答

问题可能是我们需要在最新的CMs的开发选项中特别给予adb根访问权限。 这是我所做的。

abc@abc-L655:~$ sudo adb kill-server abc@abc-L655:~$ sudo adb root start-server *守护进程未运行。现在在端口5037 *上启动 *根访问被系统设置禁用-在设置中启用->开发选项

在改变了开发选项之后……

abc@abc-L655:~$ sudo adb kill-server
abc@abc-L655:~$ sudo adb root start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting adbd as root
abc@abc-L655:~$ adb shell
root@android:/ # ls /data/ .... good to go.. 

我知道这个线程是相当旧的,但我遇到了这个问题,今天试图从android工作室复制我的数据库文件到我的窗口读取它。我不需要运行任何命令,实际上根本不需要运行任何命令。我所做的唯一一件事就是重新连接USB到我的设备上,当提示说“使用USB”出现时,我选择了“文件传输”,它工作了!您不需要有一个根设备来复制其内部文件。

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

你需要有一个具有root权限的手机,以便浏览Android手机上的数据文件夹。这意味着你要么有一个开发设备(ADP1或谷歌I/O的ION),要么你已经找到了一种方法来“根”你的手机。 你需要在根模式下运行ADB,执行:ADB root

$ adb shell

$ CD /data

$ ls

opendir失败,权限被拒绝


你应该这样做:

$ adb shell

$ cd /data

shell@android:/data $ run-as com.your.package 

shell@android:/data/data/com.your.package $ ls

OK!

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

列出yourapp的目录内容:

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

切换到com的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的符号链接。解决这个问题的一种方法是用实际目录替换符号链接(不幸的是,这通常需要根访问)。