使用uiautomatorviewer报错Error obtaining UI hierarchy

对于首次学习Appium框架,在使用uiautomatorviewer进行安卓app控件定位的时候,偶尔会看到下面这样的异常,一般都是百度,多数并没有找到答案,从此放弃使用此工具,选择其他工具或者直接放弃了Appium自动化。 

有的大佬会说,让开发去改开发包的内部内(改代码),对于新手研究框架来说,这种方法,成本太高,其实多数情况下是手机不兼容,换个手机就好了,但是有时候能用的手机,又突然不能使用了。在此,有个万能的用法,减少新手学习成本

一:先造工具

方法如下:

直接在cmd命令行敲

 

adb shell uiautomator dump /sdcard/app.uix

adb pull /sdcard/app.uix E:/app.uix

#存到E盘的app.uix文件夹中,在E盘提前建一个app.uix格式的文件夹

adb shell screencap -p /sdcard/app.png

adb pull /sdcard/app.png E:/app.png

#存到E盘的app.png文件夹中,在E盘提前建一个app.png格式的文件夹

 

因为每次都得写四行代码,比较麻烦,所以写了一个批处理文件。

放到桌面直接运行即可:(不懂怎么做bat的,自行去百度哦)

<think>好的,用户的问题是关于在Android 9.0上使用uiautomatorviewer时遇到的错误,需要解决方案。首先,我需要回顾一下之前提供的引用内容,看看有哪些相关的解决方法。 根据引用[1]和[2],uiautomatorviewer在Android 8.0及更高版本中存在兼容性问题,尤其是截屏功能。用户提到使用的是Android 9.0设备,所以这个问题很可能是因为官方工具不支持高版本系统。引用[1]建议使用二次开发的版本,这可能是一个解决方案。而引用[2]提到用户遇到了类似问题,并提供了解决方案的步骤,比如替换adb版本或者使用其他工具如Appium Inspector。 接下来,引用[3]和[4]提到了具体的错误信息,比如“Remote object doesn't exist!”和“Unexpected error while obtaining UI hierarchy”,这通常与adb通信或文件权限有关。可能需要检查adb版本,重启adb服务,或者调整设备上的权限设置。 现在需要将这些信息整合成一个清晰的解决步骤。首先,建议用户尝试二次开发的uiautomatorviewer,如引用[1]和[4]提到的。其次,检查adb版本并更新到最新,因为旧版本可能不兼容高版本Android。然后,处理文件权限问题,比如在设备上手动授权,或者清除旧的截屏文件。如果这些方法无效,建议使用替代工具如Appium Inspector或Android Studio的Layout Inspector,这些可能更稳定。 同时,用户可能在尝试这些步骤时遇到其他问题,比如如何替换adb或如何安装二次开发的工具,所以需要详细说明每个步骤。此外,需要提醒用户在进行这些操作前备份数据,避免意外情况。 最后,确保回答结构清晰,分点列出解决方案,并引用相关的引用来源,帮助用户逐步解决问题。还要生成相关问题,覆盖用户可能的后续疑问,比如其他替代工具或更深层次的调试方法。</think>### 解决方案:Android 9.0上uiautomatorviewer报错处理 #### 1. **使用二次开发的uiautomatorviewer** 官方工具在Android 8.0及以上版本存在兼容性问题,建议替换为社区开发者改进的版本。例如: - 从GitHub等平台下载适配高版本Android的uiautomatorviewer工具包[^1][^4]。 - 替换原始工具目录中的`uiautomatorviewer.jar`文件(通常位于Android SDK的`tools/lib`目录下)。 #### 2. **更新ADB版本** 旧版ADB可能与Android 9.0存在通信问题: - 下载最新版[Android SDK Platform Tools](https://developer.android.com/studio/releases/platform-tools),替换本地的`adb`可执行文件。 - 重启ADB服务: ```bash adb kill-server adb start-server ``` #### 3. **手动授权设备文件访问权限** 部分报错(如`Remote object doesn't exist!`)可能与文件权限相关: - 在设备上手动授权:进入**开发者选项**,开启**USB调试(安全设置)**,允许通过USB进行文件传输[^3]。 - 若设备已连接但未弹出授权弹窗,尝试重新插拔USB线。 #### 4. **清除旧截屏缓存** 设备残留的临时文件可能导致异常: ```bash adb shell rm /sdcard/window_dump.xml ``` #### 5. **使用替代工具** 若问题仍存在,可尝试以下替代方案: - **Appium Inspector**:支持高版本Android的UI元素分析,需配合Appium服务使用。 - **Android Studio Layout Inspector**:通过Android Studio直接查看实时UI层级(需启用**布局检查器**功能)。 --- ###
评论 45
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值