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

有帮助吗?

解决方案

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

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

其他提示

从API级别8(的Android 2.2)开始,为可调试应用程序(一个由Android Studio构建除非所有的时候被请求的发布版本),则可以使用壳run-as命令运行命令或可执行文件作为特定的用户/应用程序或只需切换到的 UID 的应用程序,让您可以访问它的数据的目录。

yourapp列表目录中的内容:

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

切换到的UID com.yourapp 和运行使用该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有问题,也与三星Galaxy S手机,因为在这个平台上运行/data/data在CyanogenMod的任何版本(从7到10.1)是一个符号链接/datadata。解决问题的方法之一是与实际的目录(不幸的是这通常需要根访问)来替换符号链接。

我们开始之前,你有一个的扎根的手机吗?如果没有,我强烈建议,现在是时候让你跳。可以帮助你做到这一点需要你有一个根深蒂固的手机教程的99%(我知道B / C我花了大约一个小时寻找一种方式来做到这一点,而无需一个根深蒂固的手机..找不到任何.. )此外,如果你仔细想想,你的iPhone也必须扎根做这个相同的任务。所以,这是完全合理的。更多有关在答案的端生根。

从您的命令行输入:

adb shell

这需要您将Android外壳COMAND行(你应该看到这样的事情:shell@android:/ $现在类型:

shell@android:/ $run-as com.domain.yourapp

此应可直接到达com.domain.yourapp的数据目录:

shell@android:/data/data/com.domain.yourapp $ 

如果它不(即,如果你得到一个错误),那么你可能没有一个根深蒂固的电话,或者你没有使用你的root用户权限。要使用adb命令行上你的root用户权限,类型su看看会发生什么,如果你得到一个错误,那么你的手机是不是植根。如果不是,它根第一然后继续以下说明。

从那里你可以键入ls,你会看到所有的目录,包括DBS:

shell@android:/data/data/com.domain.yourapp $ ls

cache
databases
lib
shared_prefs   

后,您可以使用sqlite3的浏览与dBASE ..如果你没有安装它(您可以通过键入sqlite3它找出来呢,如果你得到command not found那么你就必须安装它。要安装的SQLite,按照指示此处

关于生根:如果你从来没有扎根您的手机,和你担心它拧你的电话,我可以告诉你有充分的信心,没有什么可担心的。还有的几乎所有新老车型快捷方便的手机生根教程吨那里,,即使你有一个苹果,你可以根除你的手机(我扎根我的S3与我的MAC) 。

$ ADB壳

$坎德拉/数据

$ LS

<强> 执行opendir失败,权限被拒绝


您应该这样做:

$ adb shell

$ cd /data

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

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

OK!

我不得不试图在根三星Galaxy S.操作从计算机壳发出命令时,类似的问题

> adb root

失败,提示信息“不能运行作为根生产建立”。下面是一个简单的方法,它允许要成为根。

代替以前的,发出以下两个命令一个接一个

> adb shell
$ su

第一命令之后,如果提示已经从“>”到“$”如上所示,这意味着已输入ADB介面环境。如果随后的提示已发出第二个命令后改为“#”,这意味着,你现在根本。现在,作为root,你可以做你想做你的设备什么。

要切换回 '安全' 的外壳,问题

# exit

您将看到您在亚行外壳为用户提示“$”再次出现,这意味着并没有像根。

我有很多的麻烦,这也。我还是不完全了解的许可和根运行,但这个工作对我来说,从/数据/数据/ [包名称] /databases/my_db.db拷贝数据库文件(以前的答案部分之一)。运行外壳根在外壳因某种原因没有工作,也没有复制的数据库文件(我可以导航到该目录,虽然),也没有<我> sqlite3的的。

所以,这个工作!在DOS命令提示:

C:\Program Files\Android\android-sdk\platform-tools>adb shell
1|shell@android:/ $ run-as de.vogella.android.locationapi.maps
run-as de.vogella.android.locationapi.maps
1|shell@android:/data/data/de.vogella.android.locationapi.maps $ cd /data
cd /data
shell@android:/data $ cd data
cd data
shell@android:/data/data $ cd de.vogella.android.locationapi.maps
cd de.vogella.android.locationapi.maps
shell@android:/data/data/de.vogella.android.locationapi.maps $ cd databases
cd databases
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ ls
ls
bus_timetable_lines.db
bus_timetable_lines.db-journal
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ cat bus
_timetable_lines.db > /sdcard/db_copy.db
 bus_timetable_lines.db > /sdcard/db_copy.db                                   <
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $exit   ^
exit
shell@android:/ $ exit
exit

C:\Program Files\Android\android-sdk\platform-tools>

现在去SD卡目录,让你的文件db_copy.db。即使是被隐藏,但我设法通过电子邮件发送。早在Windows中,我能打开数据库文件的SQLite数据库浏览器。 :)

以下是两个步骤,以获得根访问:

  1. 安卓设备必须扎根。
  2. 在亚行外壳、类型和苏卓设备将提y/n?你选择允许。

生产构建不能进入/数据/应用

drwxrwx--- system   cache             1970-01-01 08:00 cache
drwxrwxr-x root     system            1970-01-01 08:00 mnt 
drwxrwx--x system   system            1970-01-01 08:15 data

可能需要改变,以权利人来操作它。

这个问题可能是,我们需要特意给在最新的CMS中的发展与开拓选项ADB root访问权限.. 这是我做的。

  

ABC @ ABC-L655:〜$ sudo的ADB杀服务器点击   ABC @ ABC-L655:〜$ sudo的根亚行启动服务器   *守护程序没有运行。从现在开始它在端口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.. 

如果你知道的应用程序包可以 cd 直到那个文件夹..

例如: cd data/data/com.yourapp

这将降你变成一个目录 read/writable 所以你可以改变的文件,如需要。由于文件夹是相同的 emulator, 你可以用它来得到文件夹的道路。

如果你只是想看看你 DB和表 然后esiest的方法是使用 Stetho.很酷的工具,每一个安卓开发人员使用 SQLite 比特不通过 Facobook developed.

Steps to use the tool

  1. 添加以下dependeccy在应用程序的实例的文件(模块:应用程序)

'汇编'。facebook.stetho:stetho:1.4.2'

  1. 添加下面的线条码在你的活动onCreate()方法
@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 Stetho.initializeWithDefaults(this);
 setContentView(R.layout.activity_main);
 }

现在,建立自己的应用程序和应用程序运行时,可以浏览你的应用程序的数据库,通过开铬在url:

chrome://inspect/#devices

截图的同样如below_

ChromeInspact

ChromeInspact

数据库

Your DB

希望这将有助于所有!:)

没有生根 该设备可以访问该文件通过以下 Cmd截图:

  1. 启动亚洲开发银行使用cmd从平台的工具夹根据你的用户

    cd C:\Users\YourUserName\AppData\Local\Android\sdk\platform-tools
    

    它可以是在另一个文件夹取决于你在哪里安装。

  2. 显示工作设备。

    adb devices
    

    为说应对操作系统的命令是

    List of devices attached
    0123456789ABCDEF     device
    
  3. 写下的命令

        adb -s 0123456789ABCDEF shell "su"
    

    它会打开

        root@theDeviceName:/ #
    

4.访问的文件,列出所有的文件

ls

所以上张目录以其他任何地方类的数据文件夹

cd data/data

当你在该设备的外壳的目录。只要运行

su - root

然后,你应该能够访问数据/文件夹。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top