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

5
我将使用 Android Adb命令提示符 来将应用程序容器内的文件夹复制到本地Windows文件夹。设备运行Android 5.1.1,未获取root权限

adb pullcp 命令不能正常工作。我该如何复制文件夹?

以下方法都不起作用:

方法一

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

错误:设备未找到

在shell中,您无法执行adb pull。请参见此处

方法2

DDMS无法访问data文件夹。

方法3

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

cp: /files/MetroLog/MetroLogs/: 没有那个文件或目录

方法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是一个目录(未复制)。

这个也不起作用。

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

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

所以也这个没有起作用。

方法6

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

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

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

所以我的想法用尽了。我怎样才能访问内部存储的文件并将它们复制过来呢?


请尝试查看此链接:http://stackoverflow.com/questions/20296713/how-send-data-throgh-wifi - Shabbir Dhangot
这里有一个答案 https://dev59.com/SWoy5IYBdhLWcg3wScJB#8650449 对我很有效。 - Cassio Seffrin
3个回答

3

你几乎已经解决了这个问题。由于这种存储是安全的,所以你需要再做一步操作。你需要将文件从安全位置复制到设备的sd卡中。然后你就可以通过usb或者安卓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/

就是这样。

我真的很欣赏你提问的方式。祝你好运。


2
这应该被标记为答案...在非root手机上也可以工作(虽然是使用调试版本的应用程序)。但不能与实时应用程序一起使用。 - Amod Gokhale

0

您正在尝试在实际的Android设备上获取对/data分区的读取访问权限。即使应用程序文件夹是您自己的,没有root访问权限是不可能的。因为未授予读取/data分区的权限,也无法授予,除非您使用模拟器。在模拟器上,默认情况下具有开发人员的管理员特权,可以访问数据分区进行读写。但在实际设备上,您不能这样做。无论是使用adb还是DDMS都不行。

因此,基本上需要访问/data下的文件的任何操作都将无法完成。无论您使用cp命令还是pull命令。一旦您的内核读取以/data/...开头的路径的开头,它就会说:哎呀,做不到。


0

您正在尝试访问 Android 设备的 /data 文件夹,但在未经过 root 的设备上无法访问。


1
这里的问题明确地是针对未root设备从data文件夹中访问文件。我能够通过adb exec-out run-as com.packagename cat source > destinationdata文件夹中访问文件。那么为什么这样可以工作呢? - testing
它在模拟器上可以运行,但在实际设备上无法运行。它永远不可能在实际设备上工作。你和adb都没有/data分区的读取权限。请查看我的答案。 - daxgirl
再次在设备上尝试,它可以工作。也许是因为调试版本? - testing
可能是这样,但我怀疑。至于你最初的问题,你列出的任何方法都不会起作用。无法授予你对数据分区的访问权限。 - daxgirl
@testing 是的,这是由于调试构建。 - Pavlus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接