题
我使用 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构建除非所有的时候被请求的发布版本),则可以使用壳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数据库浏览器。 :)
以下是两个步骤,以获得根访问:
- 安卓设备必须扎根。
- 在亚行外壳、类型和苏卓设备将提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
- 添加以下dependeccy在应用程序的实例的文件(模块:应用程序)
'汇编'。facebook.stetho:stetho:1.4.2'
- 添加下面的线条码在你的活动onCreate()方法
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Stetho.initializeWithDefaults(this); setContentView(R.layout.activity_main); }
现在,建立自己的应用程序和应用程序运行时,可以浏览你的应用程序的数据库,通过开铬在url:
chrome://inspect/#devices
截图的同样如below_
ChromeInspact
数据库
希望这将有助于所有!:)
没有生根 该设备可以访问该文件通过以下 Cmd截图:
启动亚洲开发银行使用cmd从平台的工具夹根据你的用户
cd C:\Users\YourUserName\AppData\Local\Android\sdk\platform-tools
它可以是在另一个文件夹取决于你在哪里安装。
显示工作设备。
adb devices
为说应对操作系统的命令是
List of devices attached 0123456789ABCDEF device
写下的命令
adb -s 0123456789ABCDEF shell "su"
它会打开
root@theDeviceName:/ #
4.访问的文件,列出所有的文件
ls
所以上张目录以其他任何地方类的数据文件夹
cd data/data
当你在该设备的外壳的目录。只要运行
su - root
然后,你应该能够访问数据/文件夹。