将文件夹从 Android 应用程序复制到本地 Windows 目录

tes*_*ing 5 shell android copy adb

我正在尝试使用Android Adb Command Prompt将应用程序容器内的文件夹复制到本地 Windows 文件夹。该设备运行的是 Android 5.1.1 并且未获得 root 权限

adb pull或者cp不工作。如何复制文件夹?

以下方法不起作用:

方法一

adb shell
adb pull /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs C:/temp/test
Run Code Online (Sandbox Code Playgroud)

错误:找不到设备

在壳内你看不到做什么adb pull。看这里

方法2

DDMS 无法访问该data文件夹。

方法3

adb shell
run-as DroidSample.DroidSample
cp /files/MetroLog/MetroLogs/ C:/temp/test
Run Code Online (Sandbox Code Playgroud)

cp: /files/MetroLog/MetroLogs/: 没有这样的文件或目录

方法4

adb shell
run-as DroidSample.DroidSample
cp /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs/ C:/temp/test
Run Code Online (Sandbox Code Playgroud)

cp: /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs 是一个目录(未复制)。

也是行不通的。

方法5

adb shell
run-as DroidSample.DroidSample
chmod 777 /files/MetroLog/MetroLogs
exit
exit
adb pull /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs C:/temp/test
adb shell run-as DroidSample.DroidSample
chmod 700 /files/MetroLog/Metrologs
Run Code Online (Sandbox Code Playgroud)

远程对象“/data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs”不存在

所以也是行不通的。

方法6

adb shell
mkdir /sdcard/tmp
cp /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs /sdcard/tmp
Run Code Online (Sandbox Code Playgroud)

cp:/data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs:权限被拒绝

也是行不通的。

方法7

唯一能起到一半作用的是这个

adb exec-out run-as DroidSample.DroidSample cat "files/MetroLog/MetroLogs/Log - 20160509.log" > C:/temp/test/test.log
Run Code Online (Sandbox Code Playgroud)

但在这里我没有得到原始文件,而且我还必须知道确切的文件名。此外,我失去了换行符,我必须为每个文件执行此操作。这不是我想要的。

所以我已经没有主意了。如何访问内部存储的文件并将其复制过来?

dax*_*irl 0

您正在尝试获得对实际 Android 设备上 /data 分区的读取权限。即使应用程序文件夹是您的,如果没有 root 访问权限,这种事情也是不可能的。因为除非您使用模拟器,否则不会授予并且无法授予读取 /data 分区的权限。在模拟器上,默认开发者具有管理员权限,可以访问数据分区进行读写。在实际设备上你不能。不适用于 adb,不适用于 DDMS。

所以基本上来说,任何需要访问 /data 下这些文件的东西都行不通。无论你起诉cp命令还是pull命令。当你的内核读取到以 /data/... 开头的路径的开头时,它会说:哎呀,没有办法。