上次写博客竟然是两年以前的事儿了。今天又打开csdn,主要记录一下自己在取回Android 7.0(API 24)虚拟机data/data下文件的过程中踩过的坑。
1、问题背景
一直在帮别人装android开发环境,主要面对的是一些不会科学上网的初学者,当然也会帮助他们解决在android调试过程中遇到的各种问题。有一天,有人跟我说他创建了一个SP(Shard Preference)文件,想导出来看看,但是data文件夹打不开。遇到这种问题,我第一个想到的问题是虚拟机连接不正常,告诉他先执行
adb kill-server 关掉adb服务
然后再执行一下
adb start-server 打开adb服务
他告诉我还是不可以。我远程看了一下,是data文件夹访问权限的问题,然后我开始了我的崎岖之路。
2、解决步骤
2.1 第一次尝试
2.1.1他的虚拟机Target是Androd 7.1.1(Google play),如图所示:
2.1.2 打开控制台,首先输入
adb shell 进入adb
发现引导符是$,没有root权限。我输入
su 切换身份
结果给我报了su: not found的错误,然后我各种百度,各种google,最终没有找到解决这个问题的方法。
2.2第二次尝试
2.2.1 我换了虚拟机,Target为Android 7.0(Google APIs),如图中红色的框所示;
2.2.2 在android studio 打开Android Device Monitor,打开步骤如图所示:
2.2.3 data文件夹仍然是打不开的,看权限对其他用户不可读写,我的思路是首先修改权限
2.2.4 打开控制台,进入adb shell,输入
su root 切换到root用户
引导符已经变成了#,说明切换成功了,接下来输入
chmod 777 -R /data 将data及data下的所有文件和文件夹的权限修改为wrx
(对linux权限不了解的可以查阅其他资料)
2.2.5 此时权限变过来了,点击data节点,他也可以顺利的拉开了
2.2.6 接下来点击右上角的导出按钮开始导出文件(以搜狗输入法的配置文件为例)上面那个是公司正在进行的一个项目的包,先涂掉。
2.2.7咦,咋还是导不出来啊,Permission denied,又是权限不允许。
2.2.8 Android device Monitor不行,我直接用
adb pull 文件名 目标路径
命令拉一下试试总可以了把。怎么回事?adb:not found。原来我疏忽了一点,adb命令得退到windows执行。
2.2.9 想着现在应该没问题了,可谁知这次报的是找不到我的路径。那我不放在D盘根目录了,建个文件夹把它放进去吧。
2.2.10 文件不存在?我又查了两遍文件路径和文件名,没发现毛病啊。我快崩溃了……
2.2.11 原来是要先输入
adb root 取得root权限
然后才能拉取文件。此时文件才算成功的拉取出来了。
2.2.12 文件推送进去和拉取出来的过程一样,把命令换成
adb push 文件名 目标路径
就可以了。
至此,我的这一段路就走完了,如果你们在操作的过程中也遇到了和我一样的问题,我的这个博客也许会给你提供一些帮助。我还是那句话,csdn不缺大神,如果各位看官发现了任何问题,都可发邮件到[email protected]与我交流。