我正在尝试使用
Android Adb Command Prompt
将应用程序容器内的文件夹复制到本地 Windows 文件夹。该设备运行的是 Android 5.1.1 并且未 root。
adb pull
或 cp
不起作用。如何复制文件夹?
以下方法不起作用:
方法1
adb shell
adb pull /data/data/DroidSample.DroidSample/files/MetroLog/MetroLogs C:/temp/test
错误:找不到设备
在外壳内你看不到做什么
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
但是这里我没有得到原始文件,而且我还必须知道确切的文件名。此外,我失去了换行符,我必须为每个文件执行此操作。这不是我想要的。
所以我已经没有主意了。如何访问内部存储的文件并将其复制过来?
你几乎已经解决了问题。由于此类存储是安全的,因此您需要执行一个额外步骤。您需要将文件从安全位置复制到设备的 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/
就是这样。
我真的很感谢你提出问题的方式。祝你好运。
您正在尝试获得对实际 Android 设备上 /data 分区的读取权限。即使应用程序文件夹是您的,如果没有 root 访问权限,这种事情也是不可能的。因为除非您使用模拟器,否则不会授予并且无法授予读取 /data 分区的权限。在模拟器上,默认开发者具有管理员权限,可以访问数据分区进行读写。在实际设备上你不能。不能使用 adb,不能使用 DDMS。
所以基本上来说,任何需要访问 /data 下这些文件的东西都行不通。无论你起诉cp命令还是pull命令。当你的内核读取到以 /data/... 开头的路径的开头时,它会说:哎呀,没有办法。
您正在尝试访问 Android 设备的 /data 文件夹,该文件夹在 unrooted 设备中无法访问。