我只是使用这种方法植根我的Nexus 5:http://www.phonearena.com/news/How-to-root-Google-Nexus-5_id49014
我还在开发人员选项中启用了USB调试.
然后我尝试使用此命令从我的设备中提取数据库文件:
adb pull /data/data/path.to.package/databases/data /sdcard/test
我收到permission denied
错误.
我没有在我尝试访问的应用程序中设置调试标志.这是我无法访问该文件的原因吗?如果是,是否有任何变通方法可以访问应用程序文件?
你adb remount
在给予后尝试了adb root
吗?
我有同样的问题.我的工作是使用adb shell和su.接下来,将文件复制到/ sdcard/Download
然后,我可以使用adb pull来获取文件.
您可以使用run-as
shell命令访问私有应用程序数据.
如果您只想复制数据库,可以使用/sf/ask/17360801/中提供的此代码段.
adb -d shell "run-as com.example.test cat /data/data/com.example.test/databases/data.db" > data.db
我有同样的问题,这是如何处理它:
adb shell到设备
苏
ls -l并检查所需文件的当前访问权限.你以后需要它.
转到需要的文件和:chmod 777 file.ext.注意:现在您遇到了临时安全问题.你刚刚允许所有人享有所有权利!考虑为用户添加R.
打开另一个控制台,然后:adb pull /path/to/file.ext c:\ pc\path\to\file.exe
重要提示:完成后,将访问权限恢复为之前的值(第3点)
有人早先提到了类似的东西.
感谢下面的评论.
此通用解决方案应在所有植根设备上工作:
adb shell "su -c cat /data/data/com.android.providers.contacts/databases/contacts2.db" > contacts2.d
该命令以shell cat
身份连接,然后以root用户身份执行并将输出收集到本地文件中。
与@ guest-418的解决方案相反,不必为有问题的用户进行挖掘。
另外,如果您贪婪并且想要一次所有数据库(例如,用于备份)
for i in `adb shell "su -c find /data -name '*.db'"`; do mkdir -p ".`dirname $i`" adb shell "su -c cat $i" > ".$i" done
这会在文件名的末尾添加一个mysteryous问号,但仍可读。
如果你得到无法复制和权限是正确的禁用selinux.
检查是否启用了selinux.
$ adb shell $su # getenforce Enforcing
Selinux已启用并阻止/强制执行.禁用selinux
# setenforce 0
做你的东西并设置selinux来执行.
# setenforce 1