使用adb pull
命令从手机拷贝文件到电脑过程中的报错及解决。
基础命令
adb pull source(mobilepath) dest(localpath) 从手机拷贝文件到电脑;
adb push source(localpath) dest(mobilepath) 从电脑拷贝文件到手机;
报错
在一台已经root了的手机上拷贝文件到电脑,由于没有权限导致的pull
文件报错有以下2种情况——
adb: error: remote object ‘/data/data/com.xxx.xxx/files/conf.ini’ does not exist
adb: error: failed to copy ‘/data/data/xxx’ to ‘D:\file’: remote Permission denied
错误原因
adb pull/push
命令没有root权限,问题就是adb shell进入是$
,并没有直接进入#
。所以即使在adb shell
命令的root
权限下利用chmod 777
命令提高文件权限,使用adb pull
命令依然会由于权限不足而报错。
解决
解决1
直接用adb pull
没权限,将要pull的文件拷贝到/data/local/tmp
目录后再利用adb pull
拷贝到电脑上。
adb shell
su
cp src_path /data/local/tmp/xxx
adb pull /data/local/tmp/xxx dst_path //如果此时使用pull命令依然提示权限不够,则进行如下操作
adb shell
su
chmod 777 /data/local/tmp/xxx
adb pull /data/local/tmp/xxx dst_path
解决2
讲真,这个真的很玄学,很多网上的解答都说改变权限就可以了,但是我昨天晚上在一台手机上各种改变权限,最后成功了,还以为是要把要拷贝的文件的各级目录都赋予读写权限才行,结果今早重新用另外一台手机拷贝文件,将每一级都赋予了相关权限,但依然没法成功,真的很迷~~
另外,如果手机已经取得了root权限,安装一个文件管理器Root Explorer
,就可以直接在里面改变文件的权限和所有者了,比起adb命令要方便一些。
解决3
解决1比较适用的场景是只需要拷贝单个文件的情况,而如果需要拷贝某个文件夹下的多个文件,则会比较麻烦,下面介绍这种情况的解决方法。
- 首先利用下述命令将目的文件夹拷贝到目录
data/local/tmp
下。
adb shell
su
cp -r data/data/caom.xxx.xxx/*
data/local/tmp/
- 然后如解决2中所述,利用文件管理器
Root Explorer
改变拷贝到目录data/local/tmp
下的文件夹的权限(对所有用户组都具有读写权限)和所有者(改为1000-system)。 - 此时再用
adb pull
命令即可成功拷贝。
参考文献
adb: error: remote object ‘/data/data/com.me.myproject’ does not exist
在Android中使用adb命令时关于权限方面的一些总结
adb pull和adb push失败问题解决方法
adb pull命令复制android数据库文件.db到电脑
怎样修改安卓手机文件权限、所有者和用户组
手机已经root了,可以用su命令,但是adb push/pull无权限