我尝试使用adb pull
将应用容器内的文件夹复制到本地Windows文件夹。该设备运行的是Android 5.1.1,并且未生根。
cp
或adb shell
adb pull /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs C:/temp/test
无法正常工作。如何复制文件夹?
以下方法无效:
方法1
adb pull
错误:找不到设备
在shell中,您无法查看data
。请参阅this。
方法2
DDMS无法访问adb shell
run-as DroidSample.DroidSample
cp /files/MetroLog/MetroLogs/ C:/temp/test
文件夹。
方法3
adb shell
run-as DroidSample.DroidSample
cp /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs/ C:/temp/test
cp:/ files / MetroLog / MetroLogs /:没有这样的文件或目录
方法4
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
cp:/data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs是一个目录(未复制)。
here也无效。
方法5
adb shell
mkdir /sdcard/tmp
cp /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs /sdcard/tmp
remote object' /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs'不存在
所以This也没有工作。
方法6
adb exec-out run-as DroidSample.DroidSample cat "files/MetroLog/MetroLogs/Log - 20160509.log" > C:/temp/test/test.log
cp:/data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs:权限被拒绝
this也无效。
方法7
唯一一半工作就是这个
.conll
但是在这里我没有获得原始文件,我还必须知道确切的文件名。另外,我松散了换行符,我必须为每个文件执行此操作。不是我想要的。
所以我的想法已经不多了。如何访问内部存储的文件并将其复制?
答案 0 :(得分:1)
您正试图在实际的Android设备上获得对/ data分区的读取权限。没有root访问权限就不可能这样做,即使app文件夹是你的。由于未授予读取/数据分区权限且无法授予权限,除非您使用的是模拟器。在模拟器上,默认情况下,它具有开发人员的管理员权限,您可以访问数据分区进行读写。在实际设备上你不能。不是adb,不是DDMS。
基本上讲,任何需要访问/ data下的文件的东西都不会起作用。无论你是起诉cp命令还是拉取命令。当你的内核读取以/ data / ...开头的路径的开头时,它说:哎呀,没有办法。
答案 1 :(得分:1)
您正在尝试访问无根设备无法访问的Android设备的 / data 文件夹。
答案 2 :(得分:0)
您几乎解决了问题。由于这种存储是安全的,因此您需要执行另一步骤。您需要将文件从安全位置复制到设备的sdcard。然后您可以通过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/
就是这样。
我真的很感谢您发布问题的方式。祝你好运。