关于Android Device Monitor遇到的有关问题

如何使用Android Device Monitor工具

我使用Android studio 3.6版本工具开发Android,在需要使用Android Device Monitor工具时,我却没有找到Android Device Monitor,去官网搜索才知道,谷歌把Android studio 3.x版本开始就弃用了,所以我只能到配置的SDK的工具里找Android Device Monitor。

打开Android Device Monitor

首先打开自己配SDK的目录里找到tools目录下的monitor.bat
sdk截图
如果打开monitor.bat出错,则可能是你的jdk版本过低,把jdk版本升级。
如果无法打开adb shell,则是你的SDK环境没有配好,需要到环境变量的path里添加
环境配置
环境配置
所有都弄好了则能够打开Android Device Monitor

在打开Android Device Monitor时出现:
在这里插入图片描述
一般是8700端口被qq或者其他程序占用才提示,想要知道的话就使用netstat命令去查看是那个程序占用端口,然后再将程序关掉就行了。

设备 Offline, File Explorer 空空如也

打开 Android Device Monitor 之后,发现里面什么都没有,左边的面板上显示了一台模拟器,但出于 offline 状态,不对呀,我的模拟器命名开着的呀,它正在运行我刚刚写的 app 呢,怎么这里会显示离线状态呢?于是我试着 Google 去找解决方案。

在这里插入图片描述
在 StackOverflow 上我发现了有人和我一样也碰到了这个问题,不过底下的回答寥寥无几,我找到了一个最高赞的答案(其实也就一个赞…),如下图所示,他的意思是他也不明白其中的具体原理,但是他发现如果先打开 Android Device Monitor,然后再运行模拟器,就可以解决这个问题。
在这里插入图片描述
于是我按照这个方法尝试,先打开 Android Device Monitor,里面什么也没有,然后打开模拟器,随着模拟器的启动,Monitor 左侧面板出现了 offline 的模拟器,然后再相继启动很多服务,最后就显示为 online 了,如下图所示,这样我们就可以通过 Monitor 中的 File Explorer 标签访问模拟器中的文件了。

在这里插入图片描述

文件导入

如果选择的目录它的权限不够,无法打开或者导入文件,openFileOutput() 方法生成的文件存放在一个默认路径,即 /data/data/(package name)/files 下。由于我的包名是 com.knightaoko.filepersistencetest,所以在下文的叙述中,大家看到这个陌生的字符串不要惊讶,实际操作下替换成你自己的包名即可。(这期间还碰到个问题,好像 Android Device Monitor 不能和 Instant Run 同时运行,所以在此需要把 Instant Run 功能关闭,怎么关闭大家自行 Google,很简单的。)于是,下一步当然是打开这个路径了,找到 data,点击,没反应,再点击,还是没反应。又遇到问题了,我无法访问 data 目录,通过 Google 搜索,我知道了 File Explorer 中的每个文件和文件夹都是有访问权限的,如下图红框中标识的就是 data 文件夹的访问权限。
在这里插入图片描述
访问权限是 drwxrwx–x,这玩意是什么意思呢?我相信,学过 Linux 的同学肯定一眼就知道这是什么意思。不知道也没关系,听我慢慢道来,这一个字符串一共有 10 个字符,第一个字符表示是文件夹还是目录,如果第 1 个字符是 d,则表示是文件夹。后面 9 个字符可以分为三组,第一组 rwx 表示所有者(user)对文件的访问权限,r 表示可读(read),w 表示可写(write),x 表示可被执行,- 表示没有该权限;第二组 rwx 表示组群(group)对文件的访问权限;第三组 --x 表示其他人(other)对文件的访问权限,可以看到,没有 r 和 w,说明 data 对其他人来说是不可读不可写的,怪不得我们不能打开它呢,那怎么办呢?于是我又网上搜啊搜,发现可以通过一定的方法修改文件的访问权限的,对,这个方法就是 adb shell。

adb shell 是 Android SDK 中的一个工具,你可以在你的 Android SDK 目录下的 platform-tools 找到它,下图就是我电脑上的该目录:
在这里插入图片描述

adb shell 是打开 adb 外壳程序。
su 是获取 root 权限,只有 root 权限才能修改文件的访问权限。
但是我们使用su获取root权限时,则无法获取:
在这里插入图片描述
经过查阅,是系统镜像的原因,需要选择target栏中为(Google APIs)的镜像才能使用root用户
在这里插入图片描述
通过 adb shell 获取文件访问权限
在这里插入图片描述

底下一堆 chmod 777 是把对应的文件或文件夹的访问权限的后 9 位设置成 rwxrwxrwx,777 就三个二进制 111, 喝起来就是 111111111(9 个 1),即相当于把后 9 位访问权限都置 1,于是就成了 rwxrwxrwx,即所有用户都具有该文件的全部访问权限。我们来看看结果:

在这里插入图片描述

文件导出

可以看到这些目录都能访问了,可以在包名目录下看到生成的 data 文件了,下一步我们想把这个文件复制到我们的电脑里,怎么操作呢?选中该文件,点击右上角的 pull 图标即可,如下图所示:
在这里插入图片描述
点击之后,选好保存路径。结果我们发现文件并没有保存下来,在 Console 窗口还提示了错误:
在这里插入图片描述
意思就是拉取文件失败,因为你无权进行该操作。又是一脸懵逼,怎么办?还能怎么办,继续 Google 呗!这里我找了很久,终于发现了解决方案:adb root 。没错,在命令行输入这条语句,完美解决!(注意是在 windows 下的命令行,而不是 adb shell 里,当然前提是你添加了 adb 的目录到你的环境变量里)
在这里插入图片描述
然后我们再来 pull 一下,卧槽,崩溃了,又发现问题了:Failed to pull selection。这个问题是因为我们没有选中。我们重新选择一下 Android Device Monitor 左侧面板的设备即可,没错!就是把下图红框中国的玩意儿点一下。
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值