Hierarchy View是Andorid开发者查看界面布局层级深度以及绘制时长的可视化工具,是日常UI优化不可或缺的工具之一,但使用过程中总不可避免的会遇到一些阻碍我们前进的问题,下面把我使用Hierarchy View时遇到的问题总结一下
问题一
Mac版本可以在tools工具下直接启动monitor,当然在启动前我们需要先配置Java的环境,否则启动会失败。Mac下的Java配置这里就不叙述了,大家可自行查找相关资料。
下面我遇到的第一个问题则是,在Java环境配置完成后,启动mobitor时出现报错弹框提示:Failed to create Java Virtual Machines,此时心里一万只**马跑过,此时认真的看了下启动时终端窗口中的提示,提示内容为“/Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home/lib/libserver.dylib No such file”
然后去到jdk的目录下查看,的确没有对应的文件,因为JDK8安装时是不带有这个文件的。万幸在度娘那找到了解决方案,需要通过sudo ln -s给两个地址建立符号链接,它会在你选定的位置上生成一个文件的镜像,且不会占用磁盘空间,指令如下:
sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home/jre/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0_311.jdk/Contents/Home/lib/libserver.dylib
执行指令之后,再启动monitor,无报错弹窗,正常进入页面
问题二
monitor正常启动了,兴致勃勃的打开Hierarchy View界面,连上真机,打开页面,但等了半天界面上只有设备信息,无法选择想要分析的界面。然后低头一看,Hierarchy View的concole中飘着几句红色的提示:
[hierarchyviewer]Unable to get view server version from device xxxxx
[hierarchyviewer]Unable to get view server protocol version from device xxxxx
[ViewServerDevice]Unable to debug device: xxxxx
[hierarchyviewer]Unable to get the focused window from device xxxxx
于是继续度娘、谷哥等寻找解决方案,下面是最终尝试后有效的方法,方案如下, 需要在环境变量的配置文件中加入下面这句代码:
export ANDROID_HVPROTO=ddm
然后继续重启monitor,进入Hierarchy View界面,结果终于能选择需要分析的界面啦!!!