Phone 已 root 但无法从 /data/data 文件夹中提取文件

Phone is rooted but can't pull files from /data/data folder

我的 phone Samsung Galaxy S5 mini 已 root。我正在尝试将文件从 /data/data/myapp.package/ 提取到我电脑上的文件夹中。

adb pull /data/data/myapp.package E:\myapp\myapp.package

它给我这个错误

adb: error: failed to copy '/data/data/myapp.package' to 'E:\myapp\myapp.package': Permission denied

我发现了很多和我一样的问题,但没有答案能解决我的问题。有人建议在拉取文件之前执行此命令 adb root。有些人建议安装 adbd insecure 应用程序以启用 root 访问权限。事实上,在安装该应用程序后,phone 从 adb 终端中消失了。这两种解决方案都不适合我。

顺便说一句,我可以使用来自 adb shell 的 cp 命令复制文件,但我必须将文件复制到 sdcard,然后从 sdcard 中提取。我正在寻找允许我将文件直接从 /data/data/myapp.package 复制到我的 PC

的解决方案

有什么解决办法吗?

首先你需要从命令行点击这两个命令

adb root
adb remount

然后

adb pull /data/data/myapp.package E:\myapp\myapp.package

为了让您的 adb 能够直接访问 /data/data(对于 adb pull),您的 adbd 应该是 运行 作为 root - 这通常可以通过adb root命令。

adb root 无法在像 Samsung Galaxy S5 mini 这样的商业设备上运行,因为商业设备有 ro.secure=1,即由于检查 [=36],adbd 无法以 root 身份重新启动=] 称为 ro.secureadbd insecure app 规避了这一点并以 root 模式重新启动 adbd 以启用 adb pull 等。

简而言之,如果 adbd insecure 应用程序不适合您,则无法在您现有的 ROM 中从 /data/data 执行 adb pull。如果您更改 ROM / 做一些 boot.img 调整可能是可能的,但我可能建议在进行 ROM 更改之前尝试最新版本/不同版本的 adbd insecure 应用程序。

Read more on rooting here.

这是我从根目录拉取DB文件的例子

adb -e shell "run-as com.example.project cp /data/data/com.example.project/databases/project.db /sdcard"

关键是run-as