尝试使用单个文件
adb pull /data/data/com.corp.appName/files/myFile.txt myFile.txt
Run Code Online (Sandbox Code Playgroud)
失败了
failed to copy '/data/data/com.corp.appName/files/myFile.txt myFile.txt' to 'myFile.txt': Permission denied
Run Code Online (Sandbox Code Playgroud)
尽管在设备上启用了USB调试.
我们可以通过古老的路线解决问题
adb shell
run-as com.corp.appName
cat files/myFile.txt > myFile.txt
Run Code Online (Sandbox Code Playgroud)
但是对于多个文件来说这是不实用的.
如何将目录/data/data/com.corp.appName/files拉到我的MacBook?
直接或通过`/ storage/sdcard0/myDir中的传输(从我可以继续安装Android文件传输)这样做很好.
补充评论
可能就是跑步
adb backup -f myFiles com.corp.appName
Run Code Online (Sandbox Code Playgroud)
将生成我正在寻找的文件.在这种情况下,我正在寻找一种方法来解压缩/解压缩生成的备份!
Cal*_*laf 95
adb backup将编写特定于Android的存档:
adb backup -f myAndroidBackup.ab com.corp.appName
Run Code Online (Sandbox Code Playgroud)
可以使用以下命令将此存档转换为tar格式:
dd if=myAndroidBackup.ab bs=4K iflag=skip_bytes skip=24 | openssl zlib -d > myAndroidBackup.tar
Run Code Online (Sandbox Code Playgroud)
参考:
http://nelenkov.blogspot.ca/2012/06/unpacking-android-backups.html
在该链接中搜索"更新".
或者,使用Android备份提取程序从Android backup(.ab
)文件中提取文件.
小智 48
我有同样的问题,但解决了它运行如下:
$ adb shell
$ run-as {app-package-name}
$ cd /data/data/{app-package-name}
$ chmod 777 {file}
$ cp {file} /mnt/sdcard/
Run Code Online (Sandbox Code Playgroud)
在此之后你可以运行
$ adb pull /mnt/sdcard/{file}
Run Code Online (Sandbox Code Playgroud)
小智 29
这对我有用:
adb -d shell "run-as com.example.test cat /data/data/com.example.test/databases/data.db" > data.db
Run Code Online (Sandbox Code Playgroud)
我正在将数据库直接打印到本地文件中.
Eri*_*jen 21
在MacOSX上,通过结合Calaf和Ollie Ford的答案,以下内容对我有用.
在命令行上(确保adb在你的路径中,我的位于〜/ Library/Android/sdk/platform-tools/adb)并且在你的android设备插入并处于USB调试模式时,运行:
adb backup -f backup com.mypackage.myapp
Run Code Online (Sandbox Code Playgroud)
您的Android设备将要求您备份数据的权限.选择"备份我的数据"
等一会儿.
文件备份将显示在您运行adb的目录中.
现在运行:
dd if=backup bs=1 skip=24 | python -c "import zlib,sys;sys.stdout.write(zlib.decompress(sys.stdin.read()))" > backup.tar
Run Code Online (Sandbox Code Playgroud)
现在您将拥有一个backup.tar文件,您可以像这样解压缩:
tar xvf backup.tar
Run Code Online (Sandbox Code Playgroud)
并查看应用程序存储的所有文件.
您可以在下面使用此shell脚本.它也可以从应用缓存中提取文件,而不是像adb backup
工具一样:
#!/bin/sh
if [ -z "$1" ]; then
echo "Sorry script requires an argument for the file you want to pull."
exit 1
fi
adb shell "run-as com.corp.appName cat '/data/data/com.corp.appNamepp/$1' > '/sdcard/$1'"
adb pull "/sdcard/$1"
adb shell "rm '/sdcard/$1'"
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
./pull.sh files/myFile.txt
./pull.sh cache/someCachedData.txt
Run Code Online (Sandbox Code Playgroud)
如果您使用的是Mac机和一台三星手机,这是你必须做什么(因为run-as
不工作对三星和zlib
不工作在Mac)
备份应用程序的数据目录
adb backup -f /Users/username/Desktop/data.ab com.example
您将被要求输入密码以在您的手机中加密,请勿输入任何密码。只需点击“备份我的数据”。请参阅如何进行备份?
成功备份后,您将data.ab
在桌面中看到文件。现在我们需要将其转换为tar
格式。
下载它,你会看到abe.jar
文件。将此添加到您的 PATH 变量中。
执行此命令以生成tar文件:java -jar abe.jar unpack /Users/username/Desktop/data.ab /Users/username/Desktop/data.tar
解压data.tar文件以访问所有文件
较新版本的Android Studio包括设备文件资源管理器,我发现这是一种方便的GUI方法,可以从开发的Nexus 7下载文件。
您必须确保已在设备上启用USB调试
在文件资源管理器窗口中与设备内容进行交互。右键单击文件或目录以创建新文件或目录,将所选文件或目录保存到您的计算机,然后上载,删除或同步。双击文件以在Android Studio中将其打开。
Android Studio将您以此方式打开的文件保存在项目外部的临时目录中。如果您对使用设备文件资源管理器打开的文件进行了修改,并且想要将所做的更改保存回设备,则必须手动将文件的修改后的版本上传到设备。
归档时间: |
|
查看次数: |
101953 次 |
最近记录: |