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

Copy folder from Android app to local Windows directory

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

adb pullcp 无效。如何复制文件夹?

以下方法无效:

方法一

adb shell
adb pull /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs C:/temp/test

error: device not found

在 shell 内你看不到 adb pull。参见 here

方法二

DDMS 无法访问 data 文件夹。

方法 3

adb shell
run-as DroidSample.DroidSample
cp /files/MetroLog/MetroLogs/ C:/temp/test

cp: /files/MetroLog/MetroLogs/: No such file or directory

方法 4

adb shell
run-as DroidSample.DroidSample
cp /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs/ C:/temp/test

cp: /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs is a directory (not copied).

This 也不起作用。

方法 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

remote object '/data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs' does not exist

所以 this 也不起作用。

方法 6

adb shell
mkdir /sdcard/tmp
cp /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs /sdcard/tmp

cp: /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs: Permission denied

This 也不起作用。

方法 7

唯一半途而废的就是这个

adb exec-out run-as DroidSample.DroidSample cat "files/MetroLog/MetroLogs/Log - 20160509.log" > C:/temp/test/test.log

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

所以我 运行 没主意了。如何访问内部存储的文件并将它们复制过来?

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

所以基本上来说,任何需要访问 /data 下的那些文件的东西都不会起作用。不管你是 cp 命令还是 pull 命令。当您的内核读取以 /data/... 开头的路径开头时,它会说:哎呀,不行。

您正在尝试访问 android 设备的 /data 文件夹,该文件夹在 unrooted 设备中无法访问。

你的问题差不多解决了。由于这种存储是安全的,您需要执行一个额外的步骤。您需要将文件从安全位置复制到设备的 SD 卡。然后您可以通过 USB 或 android pull 将其复制到任何地方。这是我成功执行的命令序列。

adb shell
run-as DroidSample.DroidSample
cd shared_prefs
cp  DroidSample.DroidSample_preferences.xml /sdcard/DroidSample.DroidSample_preferences.xml
exit
exit
adb pull /sdcard/DroidSample.DroidSample_preferences.xml C:/test/

就是这样。

非常感谢您发布问题的方式。祝你好运。