为什么使用亚行,当我拒绝访问到数据文件夹?为什么使用亚行,当我拒绝访问到数据文件夹?(Why do

2019-05-13 19:11发布

我连接到使用亚行及以下命令我的直播设备:

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权限?

Answer 1:

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

  1. 你需要有root访问一个电话,以浏览在Android手机上的数据文件夹。 这意味着要么你有一个开发设备( ADP1或ION从谷歌I / O),或者你已经找到一种方法,以“根”您的手机一些其他的方式。
  2. 你需要运行在根模式ADB,通过执行此操作: adb root


Answer 2:

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

yourapp的列出目录内容:

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访问权限)来代替符号链接。



Answer 3:

我们开始之前,你有一个根深蒂固的手机吗? 如果没有,我强烈建议,现在是时候让你跳。 可以帮助你做到这一点需要你有一个根深蒂固的手机教程的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用户权限。 要使用你的root用户权限,型su亚行命令行,看看会发生什么,如果你得到一个错误,那么你的手机是不是植根。 如果它不是,它根先再继续这些指令。

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

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

cache
databases
lib
shared_prefs   

后,您可以使用sqlite3的浏览与dBASE ..如果你没有安装它(您可以通过键入找到它sqlite3 ,如果你command not found ,那么你就必须安装它。要安装源码,遵循说明这里 。

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



Answer 4:

$亚行外壳

$ CD /数据

$ LS

执行opendir失败,权限被拒绝


你应该做这个:

$ adb shell

$ cd /data

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

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

好!



Answer 5:

我曾试图在扎根三星Galaxy S.运营从电脑外壳发出命令时,类似的问题

> adb root

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

而不是以前的,发出以下两个命令一前一后

> adb shell
$ su

第一个命令后,如果提示已经从“>”改为“$”如上图所示,这意味着你已经进入了亚行的shell环境。 如果随后的提示已发出第二个命令后改为“#”,这意味着,你现在根本。 现在,作为root,你可以做任何你想要与您的设备。

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

# exit

您将看到提示“$”再次出现,这意味着你是在亚行的shell作为一个用户,而不是作为根。



Answer 6:

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

所以,这个工作! 在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数据库浏览器。 :)



Answer 7:

以下是两个步骤来获得root权限:

  1. Android设备必须植根。
  2. 在ADB壳,类型su和机器人设备将提示Y / N? 您可以选择允许。


Answer 8:

产品构建不能进入/ data / app中

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

可能需要改变权利人进行操作。



Answer 9:

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

ABC @ ABC-L655:〜$ sudo的ADB杀服务器
ABC @ ABC-L655:〜$ sudo的根亚行启动服务器*守护程序没有运行。 从现在开始它在端口5037 * *守护进程启动成功* root访问权限是由系统设置禁用 - 启用设置 - >开发选项

改变开发选项后...

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.. 


Answer 10:

如果您知道应用程序包,你可以cd直接到该文件夹..

例如cd data/data/com.yourapp

这将下降到你是一个目录read/writable ,以便您可以根据需要更改的文件。 由于该文件夹是在同一个emulator ,你可以用它来获取的文件夹路径。



Answer 11:

如果你只是想看看你的数据库和表则esiest方法是使用Stetho 。 对于谁使用每一个Android开发者非常酷的工具SQLite BUIT通过Facobook developed

Steps to use the tool

  1. 下面添加dependeccy在application`s gradle这个文件(模块:APP)

“编译 'com.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

您的DB

希望这将有助于给大家! :)



Answer 12:

没有生根的设备,您可以通过下面的屏幕截图CMD访问文件:

  1. 使用CMD从平台工具文件夹根据您的用户开始ADB

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

    它可以在另一个文件夹取决于您安装它。

  2. 显示工作装置。

     adb devices 

    为说,响应OS的命令

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

      adb -s 0123456789ABCDEF shell "su" 

    它会打开

      root@theDeviceName:/ # 

4.Accessing文件,列出所有的文件

ls

所以,在昌目录到任何其他地方像数据文件夹

cd data/data


Answer 13:

当你在该设备的外壳目录。 赶紧跑

su - root

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



文章来源: Why do I get access denied to data folder when using adb?
标签: android adb