Android-关于启动不了Android Device Monitor

最近遇到一个问题,想在Device Monitor 中查看线程的状态,结果发现进入到 SDK/tools目录之后,执行命令 ./monitor 结果却是发现报错,命令如下:

zfz:tools zhangfengzhou$ pwd
/Users/zhangfengzhou/Library/Android/sdk/tools
zfz:tools zhangfengzhou$ ./monitor

报错的意思是说JVM有问题,其实是我安装了多个JDK导致的,那么就需要删除多余的JDK,而且Device Monitor 也只能支持JDK8以及之前的版本,所以我就需要删除之后的版本。

首先,查看下JAVA_HOME 配置,结果我是已经配置好了啊,为什么还会出问题呢,其实有两个JDK版本被安装了,但是查找命令不是这个:

zfz:tools zhangfengzhou$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

而是如下命令:

zfz:tools zhangfengzhou$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
    1.8.0_322 (x86_64) "Amazon" - "Amazon Corretto 8" /Users/zhangfengzhou/Library/Java/JavaVirtualMachines/corretto-1.8.0_322/Contents/Home
    1.8.0_144 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
/Users/zhangfengzhou/Library/Java/JavaVirtualMachines/corretto-1.8.0_322/Contents/Home

哦吼,是有多个JDK安装在系统中,现在需要删除的是 1.8.0_322 版本,进入该目录,然后删除即可,但是再次执行 ./monitor 命令的时候,再次报错,这里问题是没哟链接正确的问题

zfz:tools zhangfengzhou$ ./monitor
JavaVM: Failed to load JVM: /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/lib/libserver.dylib
JavaVM FATAL: Failed to load the jvm library.

升级到 macOS Big Sur以后,之前安装的dbeaver和mat都无法打开了,点击报错都是同一个问题。

实际上oracle jdk在安装完成以后是没有 libserver.dylib 这个文件的,但是dbeaver和mat还是在查找这个文件,应该是出兼容性bug了。

解决的方案很简单,就是要找到这个 libserver.dylib 对应应该是什么文件就可以了。几番折腾之下,我在这里找到了答案,实际的地址应该是

/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/lib/libserver.dylib

使用ln -s创建一个链接就可以解决了:

sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/home/jre/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/lib/libserver.dylib

最终解决问题的命令如下:

zfz:tools zhangfengzhou$ sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/home/jre/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home/lib/libserver.dylib
Password:

最终,执行./monitor 就可以看到执行成功,并显示DDMS画面:

下来该说下如何启动模拟器:

首先查找下我们已经创建了哪些模拟器:

zfz:sdk zhangfengzhou$ emulator -list-avds
Pixel_2_API_29
Pixel_API_24
zfz:sdk zhangfengzhou$

然后启动模拟器:

zfz:sdk zhangfengzhou$ emulator -avd Pixel_API_24

 然后会发现出现如下问题:

zfz:sdk zhangfengzhou$ emulator -avd Pixel_API_24
[4604937728]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ../emulator/lib64/qt/lib
Could not launch '/Users/zhangfengzhou/Library/Android/sdk/../emulator/qemu/darwin-x86_64/qemu-system-i386': No such file or directory

最终也没有能够成功启动模拟器,看来只能靠AndroidStudio来启动了。

看下如何查看线程状态:

如图所示,我们需要先选中我们要查看的进程,然后点击Update Threads, 最后点击 Threads这一栏,需要注意,首次使用的时候,会提示我们需要Enable这个功能,所以在偏好中选中,如下:

然后,再次回到Threads 这一栏,点击 Refresh 即可更新线程状态。 提示,有时候会出现不能显示线程状态信息,我猜可能有Bug,需要每一行的去点击,然后才会显示出来每一行的线程状态,自己试下就知道了。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值