Android UI优化调试工具 Hierarchy Viewer 真机调试解决方法

概述:

    本文主要是对Hierarchy Viewer如何进行真机调试操作说明,其中有自己总结的方法也他人的经验,一并在文中进行归纳一下。

一、Hierarchy Viewer是什么?

通常应用的不合理布局能够拖慢应用的运行速度,为了帮助debug布局的中存在问题,Android sdk 提供了Hierarchy Viewer工具。简单来说,Hierarchy View就是为了方便调试和优化应用用户界面,绝对是UI的检视de 利器。

二、Hierarchy Viewer如何使用

1.打开android studio的tools->Android->Android Device Monitor

Android UI优化调试工具 Hierarchy Viewer 真机调试解决方法_第1张图片

2.然后打开 “Open Perspective”选择 Hierachy View


Android UI优化调试工具 Hierarchy Viewer 真机调试解决方法_第2张图片

更具体的使用调试方法即优化选项就不在这里展开,请参考android 官方文档:

Optimizing Your UI

Android UI 优化——使用HierarchyViewer工具


三,如何在真机上正常使用Hierarchy View

   Hierarchy Viewer如果不进行“特殊”配置的话是无法连接真机,会报以下错误:


[hierarchyviewer]Unable to get view server version from device XXXXX

[hierarchyviewer]Unable to get view server protocol version from device XXXXXX

[ViewServerDevice]Unable to debug device: XXXXX

[hierarchyviewer]Missing forwarded port for XXXXX

[hierarchyviewer]Unable to get the focused window from device XXXXX


无法连接真机的原因是:To preserve security, Hierarchy Viewer can only connect to devices running a developer version of the Android system.出于安全性考虑, Hierarchy Viewe 只能连接开发版手机或模拟器。

   Android源码实现这一限制的地方在/frameworks/base/services/core/java/com/android/server/wm/WindowManageService.java:


Android UI优化调试工具 Hierarchy Viewer 真机调试解决方法_第3张图片

检验一台手机/模拟器是否开启了View Server的办法是:


adb shell service call window 3

若返回值是:Result: Parcel(00000000 00000000 '........')" 说明View Server处于关闭状态

若返回值是:Result: Parcel(00000000 00000001 '........')" 说明View Server处于开启状态


有时碰到模拟器或开发发版手机, view Hierarchy 还是无法连接,可以先使用以上方法检查一下View Server状态。如果没有开启,则使用以下命名打开View Server:


adb shell service call window 1 i32 4939

也可以使用使用以下命令关闭View Server:

adb shell service call window 2 i32 4939


那么如何在真机能够正常使用Hierarchy Viewer了?通过实践目前总结了以下三种方法:

方法一。

1,配置设备,打开手机的开发者选项

如果你的手机是android 4。0 或者以下,请根据开源项目 View  Server(https://github.com/romainguy/ViewServer) 进行安装和配置

如果你的手机是4.1或以上,则必须进行以下环境变量配置:

1.点击 计算机属性-》高级系统设置-》环境变量

2.新建环境变量ANDROID_HVPROTO, 并设置其值为 ddm, 保存重启

PS:该方法参考android 官方文档《Device Setup for Hierachy Viewer》https://developer.android.com/studio/profile/hierarchy-viewer-setup.html

然而在本人亲自试用真机(魅族MX4pro android 5.1 和 android 4.4的机顶盒)测试过程中,配置环境变量的方法似乎并没有起到作用,还是连不上。

不过直接在调试app中集成View Server开源项目是没有任何问题的。

方法二:

话说前面Hierarchy Viewer只能连接Android开发版手机或是模拟器,只有ro.secure==0 && ro.debuggable==1的Android系统(这一句是其他网友的文章看到的,没有在android 官方查证到 )。ro.xxxx这种句式大家是不是觉得有点熟悉?不就是android系统的 /system/build.prop文件中的配置样式么。推测如果将ro.secure==0 && ro.debuggable==1这个两个配置添加进来应该能够起作用吧,于是进行以下尝试:

1.先把手机root

2.在进到在/system/build.prop 中添加ro.secure==0  和 ro.debuggable==1, 保存配置并重启手机,Hierarchy Viewer连接正常,终于可以正常调试了。

方法三:

参照《如何在Root的手机上开启ViewServer,使得HierachyViewer能够连接》http://maider.blog.sohu.com/255448342.html。该方法本人没有实践过,一看有18个步骤,

还涉及到 android逆向、smail,瞬间脑仁发紧,有兴趣的同学可以自行尝试一下。

你可能感兴趣的:(Android UI优化调试工具 Hierarchy Viewer 真机调试解决方法)