Google在Android10之后停止支持UIAutomatorViewer,在sdk/tools目录下也不再有UIAutomatorViewer的脚本。

当下可行的查看App的UI布局几种方式:

  • Android Studio的Layout Inspector:只能查看自己签名的app并且做的挺差,弃用。
  • 继续使用UIAutomatorViewer:目前仍然可行,但估计随着Android版本升级UIViewer会越来越无以为力,比如现在在分析有视频的抖音页面时就经常捕捉失败
  • Appium-inspector(appium2):好用!只是初始门槛略高要配置appium server2和driver,网络上多是appium1的使用说明,本文针对appium2。


继续使用UIAutomatorViewer

需要JDK8的运行时环境,可以直接安装openjdk8。jdk9或更高版本会报错。

在安装了Android Studio后发现在AndroidSDK目录下已经没有tools目录了,当然更没有了uiautomatorview.sh(bat)。通过安装更低版本(29或者以下)的Android SDK即可。

入口:AndroidStudio-Settings/Perferences

[Android]利用Appium2替代uiautomatorviewer做页面元素分析_Android

sdk安装完成后进入Android SDK的tools目录运行uiautomatorviewer.sh/bat即可:

  • mac下默认为:~/Library/Android/sdk/tools
  • windows下:c:\Users\username\AppData\Local\Android\Sdk


Appium方案(推荐)

Appium is an open-source project and ecosystem of related software, designed to facilitate UI automation of many app platforms, including mobile (iOS, Android, Tizen), browser (Chrome, Firefox, Safari), desktop (macOS, Windows), TV (Roku, tvOS, Android TV, Samsung), and more.

appium是一套自动化测试的框架,借鉴了selenium用web-driver测试移动端、web、桌面端。AppiumServer提供了restful的测试API接口,因此是跨语言的,只要封装对应的restAPI即可。在Server之下是针对不同终端的driver,比如针对Android就提供了uiaotomtor和espresso两套Driver。

Appium-inspector是基于AppiunServer的API的界面分析器。综上所述,我们需要安装Appium server并且安装安卓driver我们选用uiautomator,再安装inspector就可以了。

这里需要介绍的是Google虽然停止了对UIAutomatorViewer的支持,但是并没有停止对测试框架automator的持续更新,所以可以预期在未来这个方案仍然是可行的。

https://developer.android.com/jetpack/androidx/releases/test-uiautomator?hl=zh-cn

安装appium-server

这里需要使用npm或者yarn的node包管理工具,工具的安装过程忽略。

# 一定是appium@next,否则安装的是appium1
yarn global add appium@next

安装完成后启动appium server

appium server
#启动后提示如下,rest接口已经监听4723端口;提醒无driver
#[Appium] Welcome to Appium v2.0.0-beta.66
#[Appium] Appium REST http interface listener started on 0.0.0.0:4723
#[Appium] No drivers have been installed in /Users/xxx/.appium. Use the "appium driver" command to install the one(s) you want to use.
#[Appium] No plugins have been installed. Use the "appium plugin" command to install the one(s) you want to use.

安装appium-uiautomator-driver

appium driver list
### 列出官方可用的driver
#✔ Listing available drivers
#- uiautomator2 [not installed]
#- xcuitest [not installed]
#- mac2 [not installed]
#- espresso [not installed]
#- safari [not installed]
#- gecko [not installed]
#- chromium [not installed]
# 安装driver
appium driver install uiautomator2

启动成功

[Android]利用Appium2替代uiautomatorviewer做页面元素分析_Android_02

安装inspector

直接前往并安装:https://github.com/appium/appium-inspector

启动后输入必要的参数后点击Start Session等待AppiumServer成功链接就可以分析页面布局了。

为什么是三个参数?参考https://github.com/appium/appium-uiautomator2-driver中的Capabilities说明确定必填参数。

[Android]利用Appium2替代uiautomatorviewer做页面元素分析_uiautomatorviewer_03

在手机已经成功连接了adb sever的情况下单击[start session],一切顺利就可以见到Appium Inspection的页面分析界面了。

为什么是uiautomator不是espresso

https://github.com/appium/appium-espresso-driver

根据github上面的描述:serverpackage和测试的Application必须使用相同签名,事实上这句话并没完全搞懂,但是经测试没法顺利在espresso下顺利分析抖音的布局,所以放弃。

[Android]利用Appium2替代uiautomatorviewer做页面元素分析_Android_04