Android万能布局检查器UI Automator Viewer使用教程、环境配置和Mac无法打开问题解决(uiautomatorviewer,android studio,layer,查看,错误)

2023-05-16

1 问题背景

作为Android开发者的我们一般用Android Studio自带的Layout Inspector(布局检查器)来检查可调试APP的实时布局层级:
在这里插入图片描述

但是Layout Inspector有很大的局限性,它只能用来调试那些“可调试APP”,即该APP的AndroidManifest.xml文件中Application标签的android:debuggable属性的值为true

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.android.helloapplication">
    <application
        android:allowBackup="true"
        android:debuggable="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.HelloApplication">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

一般来说,“可调试APP”就是我们用Android Studio构建Android项目生成的“Debug应用”,而真正发布到应用市场上的APP都是“Release应用”,例如微信、QQ、支付宝等APP,而“release应用”是不可以用于调试的。

但有的时候我们想要研究这些“Release应用”的布局层级和UI实现时,我们该怎么办呢?例如博主上大学时,实验室Android课题组布置的大作业是开发一个高仿微信APP,在没有安卓微信的源码的情景下,我们有什么办法具体地了解微信APP详细的布局层级和视图属性呢?又或者在工作时,我们想借鉴某款竞品APP详细的UI视图和布局实现,这应该怎么做呢?

其实这个问题目前有3个较为有效的解决方案:

  1. 使用Android Studio自带的万能的布局检查器UI Automator Viewer,不用将安卓测试机Root和Exposed,也不用反编译任何“Release应用”即可查看任何三方应用和系统应用的布局层级。可参考文章《Android布局层次结构查看工具-uiautomatorviewer介绍》;
  2. 用ApkTools或者MT管理器对想调试的“Release应用”反编译为“Debug应用”、签名并打包,接着可直接使用Layout Inspector来检查可调试该APP的实时布局层级,例如上述截图中被反编译后可成功调试的“百度贴吧”APP。可参考文章《Android反编译debug调试详解(一)(附图)》;
  3. 将安卓测试机Root并Exposed,接着安装Xposed插件:Xdebuggable或App Debuggable即可直接使用Layout Inspector来检查可调试该APP的实时布局层级。可参考文章《掘金-android调试release包的方法》。

而本篇文章主要想详细介绍Android Studio自带的万能的布局检查器UI Automator Viewer的用法,因为它的上手成本很低并足够简单。

2 Android Studio自带的万能的布局检查器UI Automator Viewer

UI Automator Viewer是一个用来来扫描和分析Android应用程序的UI组件的GUI工具。这个工具本身是作为Android的UI Automator测试框架(Ui自动化框架)的配套工具而存在的,每当我们使用UI Automator测试框架编写UI功能自动化项目时,一定会经常使用该工具,因为该工具可以查看当前Android设备屏幕上的控件信息。

UI Automator Viewer之所以强大,正是因为它可以用来查看任何任何三方应用和系统应用的布局层级。例如下述下述UI Automator Viewer软件的截图展现了2021年8月26日更新的V8.0.11版本的微信“聊天列表页”的布局层级,我们可以发现微信主要用了ListView来实现“聊天列表页”的,虽然我们初学安卓时一直被教导用RecyclerView,因为它的性能比ListView好上很多。因此要么是做了足够的性能优化,要么就是历史遗留代码结构过于繁杂和耦合,重构的工作量太大,所以微信目前仍使用ListView来实现“聊天列表页”。

另外我们又能看到微信用RecyclerView实现了“通讯录列表页”:
在这里插入图片描述

其中,UI Automator Viewer的详细使用教程可参考文章《Android布局层次结构查看工具-uiautomatorviewer介绍》。

2.1 UI Automator Viewer的环境配置和打开方式

介绍了那么多,现在来介绍下UI Automator Viewer的环境配置方法和打开方式吧:

Windows电脑启动UI Automator Viewer可以参考文章《AppiumForWindows 菜鸟计划(五)uiautomatorviewer》;Mac电脑启动UI Automator Viewer可以参考文章《Mac终端快速启动uiautomatorviewer》。

2.2 UI Automator Viewer打开失败问题的解决方案

UI Automator Viewer是个有一定历史年代感的老工具了,所以在2021年的今天启动该工具会碰到无法打开等一系列的问题,通过网上查阅文献以及博主的亲身体验,UI Automator Viewer打开失败问题主要有两类:

  1. 电脑环境变量配置的JDK版本不是JDK8,导致UI Automator Viewer打开失败并报错Error:Could not create the Java Virtual Machine,该问题的解决方案就是将电脑环境变量配置的JDK版本重新指定为JDK8,问题具体的解决方案可参考文章《Mac下不能成功打开uiautomatorviewer的问题解决》;
  2. 博主亲身碰到的问题,即Big Sur版本的Mac电脑无法打开UI Automator Viewer并报错java.lang.NullPointerException,该问题的解决方案就是从Eclipse官方下载最新版本的swt.jar包,问题具体的解决方案可参考文章《StackExchange-Software Quality Assurance & Testing》和《GitHub-Broken GUI of UIAutomatorViewer on MacOS Big Sur #911》。

2.3 UI Automator Viewer打开失败问题的解决方案

按照上述步骤配置好UI Automator Viewer的环境变量并解决无法打开的问题后,我们就可以正常使用UI Automator Viewer啦,其详细使用教程可参考文章《Android布局层次结构查看工具-uiautomatorviewer介绍》。例如,你也可以通过UI Automator Viewer来查看微信各个页面详细的布局层级和视图:
在这里插入图片描述


本文参考文献:

android studio 4.0 Live Layout Inspector切换为老版本Layout Inspector

性能优化工具(六)-Legacy Layout Inspector

掘金-路遥TM-Layout Inspector 支持 3D 视图了!

掘金-android调试release包的方法 Xposed插件:Xdebuggable和App Debuggable

Android反编译debug调试详解(一)(附图)

简书-Android调试release包

uiautomatorviewer not running on Mac Big Sur

Broken GUI of UIAutomatorViewer on MacOS Big Sur #911

Android布局层次结构查看工具-uiautomatorviewer介绍

Mac下不能成功打开uiautomatorviewer的问题解决

Mac终端快速启动uiautomatorviewer

丢弃LayoutInspector,换个方式看UI

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android万能布局检查器UI Automator Viewer使用教程、环境配置和Mac无法打开问题解决(uiautomatorviewer,android studio,layer,查看,错误) 的相关文章

  • iocp 非阻塞Socket异步接收限速

    网上找遍了也没找到关于异步非阻塞Socket的限速资料 于是 自己写了一份 限速100M S 误差15M S 限速50M S 误差5M S 限速10M S 误差0 3M S 限速5M S 误差0 02M S 限速越小 精度越准 functi
  • qt发布的程序时如何将依赖的dll分开放在不同目录下

    qt发布的程序时如何将依赖的dll分开放在不同目录下 QT发布的程序 xff0c exe可执行程序与dll文件都在同一个目录下 xff0c 我现在想把那些dll文件 xff0c 放到一个文件夹下 xff0c 这个文件夹和exe在同一个目录下
  • Android性能优化:Bitmap详解&你的Bitmap占多大内存?

    在开发app时 xff0c 显示一张本地图片 xff0c 这张图片在加载时会占用大多内存呢 xff1f 猜测占用内存大小和以下几个因素有关 xff1a 设计师切图 xff0c 图片本身的分辨率 xff1b 图片所放文件夹代表的 密度 dpi
  • HashMap初始容量为什么是2的n次幂及扩容为什么是2倍的形式

    HashMap的初始容量都是2的n次幂的形式存在的 xff0c 而扩容也是2倍的原来的容量进行扩容 xff0c 也就是扩容后的容量也是2的n次幂的形式存在的 xff0c 下面就来说明一下为什么是2的n次幂的形式 xff01 先来看一下源码
  • ARM裸机第五部分-SDRAM和重定位relocate

    第一部分 章节目录 1 5 1 汇编写启动代码之关看门狗 1 5 2 汇编写启动代码之设置栈和调用C语言1 1 5 3 汇编写启动代码之设置栈和调用C语言2 1 5 4 汇编写启动代码之开iCache 1 5 5 重定位引入和链接脚本1 1
  • Java线程死锁的原因和条件

    一 死锁概念 所谓死锁 xff0c 是指多个进程在运行过程中因争夺资源而照成的一种僵局 当进程处于这种僵持状态时 xff0c 若无外力作用 xff0c 它们都将无法再向前推进 二 产生死锁的原因 xff08 1 xff09 竞争资源 当系统
  • Ubuntu 14.04无法连接ssh服务解决方法

    解决方法如下 xff1a 1 先试着开启SSH服务 在使用SSH之前 xff0c 可以先检查SSH服务有没有开启 使用命令 xff1a sudo ps e grep ssh 来查看 xff0c 如果返回的结果是 xxxx 00 00 00
  • 1.14.ARM裸机第十四部分-LCD显示器

    第一部分 章节目录 1 14 1 LCD简介 1 14 2 LCD的接口技术 1 14 3 LCD如何显示图像1 1 14 4 LCD如何显示图像2 1 14 5 LCD的六个主要时序参数1 1 14 6 LCD的六个主要时序参数2 1 1
  • LCD常用接口原理

    LCD常用接口原理 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 点击打开链接 xubin 平台信息 内核 xff1a linux2 6 linux3 0 系统 xff1a android
  • 1.15.ARM裸机第十五部分-触摸屏TouchScreen

    第一部分 章节目录 1 15 1 输入类设备简介 1 15 2 电阻式触摸屏的原理 1 15 3 S5PV210的电阻触摸屏控制器 1 15 4 电容触摸屏的原理 1 15 5 ft5x06电容触摸IC简介 第二部分 章节介绍 1 15 1
  • MAC【Android studio】Gradle download:kotlin-compiler-embeddable-1.3.70.jar下载太慢

    采用策略去Maven仓库下载资源 更新到本地进行加载 1 进入仓库网址链接 https mvnrepository com 点击下载如图 2 配置下载jar文件到 gradle文件中 文件路径 Users 34 用户名 34 gradle
  • 线程安全是如何实现的?

    实现线程安全与代码编写有很大的关系 xff0c 但虚拟机提供的同步和锁机制也起到了至关重要的作用 互斥同步 互斥同步 xff08 Mutual Exclusion amp Synchronized xff09 是一种最常见也是最主要的并发正
  • 2022,音乐号自媒体起号涨粉保姆级攻略,这是个收获的季节。

    前言 最近遇到好多朋友说想做短视频自媒体 xff0c 但找了很多资料 xff0c 甚至报了学习班也没什么起色 xff0c 这不前天一个姐姐说他家姑娘想做抖音 xff0c 俩月了没啥粉丝也没啥播放量 xff0c 看到我的音乐号了 xff0c
  • 短视频消重去重九种方法,组合使用原创度更高,各平台轻松过原创

    想做好视频去重 xff0c 首先要了解视频查重的机制 网上流传的检查MD5其实已经过时了 xff0c 现在MD5已经是过去式 查重要对视频的方方面面进行检查 xff0c 包括但不限于 xff1a 视频的标题 xff0c 封面 xff0c 描
  • 不直播不露脸也能做短视频变现,想挣点生活费试试这些玩法

    大家好 xff0c 我是 64 我赢助手短视频运营 xff0c 最近一直有小伙伴问我 xff0c 做了好久的短视频一直不赚钱 xff0c 今天总结了一下 xff0c 做了90天短视频还没赚了试试这5种易变现的玩法 新手不直播不露脸也能做短视
  • 科普一下:拍抖音需要什么设备,可能用到的设备合集

    大家好 xff0c 我是 64 我赢助手短视频运营 xff0c 抖音是现在最火的短视频平台之一 xff0c 几乎每个人都在用它 xff0c 抖音视频的发展离不开手机 但你知道吗 xff1f 手机拍摄有很多方面的限制 xff0c 比如手持稳定
  • 短视频上热门技巧总结,这样做你也可以快速上热门。

    最近开始做短视频 xff0c 找了很多短视频运营创作技巧 xff0c 但能上热门的只有那么几个 xff0c 经过近一周的分析 xff0c 结合了我赢上短视频运营创作技巧 xff0c 得到了以下几个经典技巧合集 xff1a 学会一个就值了 首
  • 不要再被骗了,解密短视频里追剧看电影都能赚钱的坑。

    不要再被骗了 解密短视频里追剧看电影都能赚钱的坑 最近刷短视频刷到了好多抖音追剧看电影每天收几百 xff0c 还有截图 xff0c 还有怎么实操的视频 关键不是刷到一个两个 xff0c 是几十个还有越来越多的趋势 都说新入门实操 xff0c
  • 视频号的视频怎么下载到手机?不录屏也不找手机缓存,一键下载。

    你有没有看到有用的视频 xff0c 只收藏起来 xff0c 最后又找不到的时候 前天给朋友找了一个过年快速整理家具杂物的教程 xff0c 谁知道原作者第二天把视频给删掉了 xff0c 朋友说没有来得及看 昨天发给了朋友一个最新的教程 xff
  • 2023年做好自媒体的五个步骤,一步一个脚印稳妥找到结果。

    2023年做好自媒体的五个步骤 一步一个脚印稳妥找到结果 我不管你现在什么负债 破产 xff0c 还是迷茫焦虑 xff0c 通通别管了 xff0c 听话照做执行 看完我这篇内容 xff0c 2023年你还做不起来 xff0c 你就别打嘴炮

随机推荐