我的手机三星Galaxy S5 mini扎根了。我正在尝试将文件从/data/data/myapp.package/
拉到PC上的文件夹。
adb pull /data/data/myapp.package E:myappmyapp.package
它给了我这个错误
adb: error: failed to copy '/data/data/myapp.package' to 'E:myappmyapp.package': Permission denied
我发现很多像我这样的问题,但没有答案解决了我的问题。有些人建议在拉取文件之前adb root
执行此命令。有些人建议安装 adbd 不安全的应用程序以启用根访问权限。实际上,在安装该应用程序后,手机从adb终端中消失了。这两种解决方案都对我不起作用。
顺便说一句,我可以使用 adb shell 中的cp
命令复制文件,但我必须将文件复制到 sdcard,然后从 sdcard 中提取。我正在寻找允许我将文件直接从/data/data/myapp.package
复制到我的 PC 的解决方案
有什么解决办法吗?
为了让你的adb能够直接访问/data/data
(对于adb pull
(,你的adbd
应该以root身份运行 - 这通常可以通过adb root
命令来完成。
adb root
不适用于三星Galaxy S5 mini等商业设备,因为商业设备已经ro.secure=1
,即由于检查名为ro.secure
的属性,adbd无法以root身份重新启动。adbd 不安全的应用程序会规避这一点,并在根模式下重新启动 adbd,以使 adb pull
等工作。
简而言之,如果 adbd 不安全的应用程序不适合您,则无法从现有 ROM 中的/data/data
执行adb pull
。如果您更改 ROM/进行一些 boot.img 调整,这可能是可能的,但我可能会建议在进行 ROM 更改之前尝试最新版本/不同版本的 adbd 不安全应用程序。
在此处阅读有关生根的更多信息。
这是一个单行代码,可让您在不安装任何其他内容的情况下拉取文件,也不必将其复制到设备上的公共位置,然后将其拉取到您的计算机:
adb shell su -c "cat /data/data/myapp.package/my_file.apk" > my_file.apk
这是做什么的:
-
adb shell
运行打印原始二进制输出的命令 -
su -c
以 root 身份运行提供的命令 -
cat <file>
打印出文件内容 -
> <file>
将 adb 的输出(即原始文件内容(重定向到本地文件。
首先,您需要从命令行点击这两个命令
adb root
adb remount
然后
adb pull /data/data/myapp.package E:myappmyapp.package
从根目录拉取数据库文件的示例
adb -e shell "run-as com.example.project cp /data/data/com.example.project/databases/project.db /sdcard"
关键是run-as