Index

uiautomatorviewer是 android SDK 自带的工具。通过截屏并分析 XML 布局文件的方式,为用户提供控件信息查看服务。该工具位于 SDK 目录下的 tools\bin 子目录下,通过bat文件启动的。

界面

整个界面分四个区域

  • 工作栏区(上)

    共四个按钮,从左至右分别用于:打开已保存的布局,获取详细布局,获取简洁布局,保存布局。

    • 保存布局Save:将存储两个文件,一个是图片文件,一个是.uix文件(XML布局结构)
    • 获取详细布局Device Screenshoot (uiautomator dump): 将全部布局呈现出来
    • 获取简洁布局Device Screenshoot with Compressed Hierarchy (uiautomator dump –compressed): 只呈现有用的控件布局
  • 截图区(左),显示当前屏幕显示的布局图片

  • 布局区(右上),已XML树的形式,显示控件布局

  • 控件属性区(右下),当点击某一控件时,将显示控件属性

问题1

第一次点击Device Screenshoot按钮时,将会报错,显示如下

3.png

原因是在于,uiautomatorviewer.bat中,需要知道 SDK 下的子目录 platform-tools 的路径,即 bat 文件中的%prog_dir%,因此我们需要修改 uiautomatorviewer.bat 中最后一行代码,将%prog_dir%替换为 platform-tools 的实际目录。

修改前:

call "%java_exe%" "-Djava.ext.dirs=%javaextdirs%" "-Dcom.android.uiautomator.bindir=%prog_dir%" -jar %jarpath% %*

修改后:

call "%java_exe%" "-Djava.ext.dirs=%javaextdirs%" "-Dcom.android.uiautomator.bindir=C:\Users\XXXXX\AppData\Local\Android\Sdk\platform-tools" -jar %jarpath% %*

p.s. XXXXX为用户名

问题2

再次点击,出现如下错误

4.png

折腾了好久,最终在https://github.com/yaming116/uiautomatorview找到解决方法

我们直接下载LvmamaXmlKit.jaruiautomatorviewer.jar

5.png

uiautomatorviewer.jar替换\tools\lib\uiautomatorviewer.jar

如果带后缀如xxx-25.3.1.jar也要重命名带上后缀

由于 adb 截图使用的是LvmamaXmlKit,所以使用此功能需要把这个 LvmamaXmlKit.jar 导入到手机中,否则将报错,命令如下:

adb push LvmamaXmlKit.jar /data/local/tmp

成功捕获

6.png