设备使用本地文件执行 init

下载地址:https://share.weiyun.com/5nNDyET

最近在群里发现好多同学在执行uiautomator2 init的时候,总是出各种错误。在这里需要总结下,以免新来的同学掉到坑里。

首先看一下 init 的源代码:

def _init_with_serial(self, serial, server, apk_version, agent_version,
                      reinstall, ignore_apk_check):
    log.info("Device(%s) initialing ...", serial)
    ins = Installer(serial)
    ins.server_addr = server
    ins.install_minicap()
    ins.install_minitouch()
    ins.install_uiautomator_apk(apk_version, reinstall)

    log.info("atx-agent is already running, force stop")
    ins.shell("/data/local/tmp/atx-agent", "-stop", raise_error=False)
    ins.shell("killall", "atx-agent", raise_error=False)
    ins.shell("rm", "/sdcard/atx-agent.pid", raise_error=False)
    ins.shell("rm", "/sdcard/atx-agent.log.old", raise_error=False)
    if not ins.check_agent_installed(agent_version):
        ins.install_atx_agent(agent_version, reinstall)

    if not ignore_apk_check:
        ins.check_apk_installed(apk_version)
    ins.launch_and_check()

很容易看懂,最主要的就是这几行

ins.install_minicap()
ins.install_minitouch()
ins.install_uiautomator_apk(apk_version, reinstall)
ins.check_apk_installed(apk_version)

就是往手机了装了 4 个东西minicap minitouch uiautomator_apk atx-agent ,其实是 5 个东西 uiautomator_apk安装了app-uiautomator.apkapp-uiautomator-test.apk两个 apk

下面将大家经常遇到的几个问题总结下

1、等了好长时间没反应,提示 404,安装失败 ,package com.github.uiautomator.test not installed

不要慌,其实由于好多同学网络的原因,导致上面所说的 5 个东西总是下载失败才会出现这样的错误的。一般都是uiautomator_apk没有下载下来造成的。
解决的办法:手动去这个地址下载和你本地 uiautomator2 版本匹配的 apk,https://github.com/openatx/android-uiautomator-server/releases
然后手动安装上去 ,再执行一下python -m uiautomator2 init看看(uiautomator2 版本匹配可以在 pip 安装的 uiautomator2 的目录下有个versiopn.py的文件里可以看到)

2、我启动了 atx-server 手机也 init 好了 但是 atx-server 上没有出现设备啊

请先确定你手机 init 的时候,后面跟着的 server 的地址是对的 例如你 atx-serve 的地址是10.0.12.34:8000
那么你执行 init 命令就应该是:python -m uiautomator2 init 10.0.12.34:8000 确保你后面 8000 的端口号没忘记。
然后看一下你的手机的 wifi 有没有和电脑连在同一个网下面。如果还是没有出来,就再执行一下上面的那个 init 的命令
以上都是针对真机的,如果你用的是模拟器的话,建议你还是换一个真机来试一试。也不太明白为什么拿模拟器连 atx-serve....

3、我 init 之后 atx-serve 上出现设备了,点击手机的画面出不来,点操作也没反应

atx-serve 设备点击 use 之后画面的实时展示和可操作都是依赖minicap minitouch 的,应该是这两个没有安装成功造成的。
再重新 init 之后试试看,实在不行就手机重启之后,再 init 一下试试看。
以上也是针对真机的,模拟器的话,minicap 就是不支持的,init 成功了也没用,建议换真机

4、我用 weditor 来定位元素的时候,画面出不来啊

和 3 的问题一个原因,真机的话重新 init;模拟器的话,minicap 就是不支持的,init 成功了也没用,建议换真机

5、我的手机 init 总是提示安装失败

先看一下你手机是什么牌子的,看看你直接执行 adb install 安装能不能正常安装成功
比如小米的,需要在开发者选项里打开两个选项(就是 usb 选项下第一个和第二个,叫啥名字忘记了)
比如 OPPO、VIVO 的手机,init 安装的时候需要手动确认输密码
还有其他很多安卓手机,各种各样的问题自己慢慢摸索吧

6、大佬,XXX 怎么搞得,发我一份

自己看文档去....
https://github.com/openatx/uiautomator2

之前的 Q&AATX 项目 Question and Answers (FAQ) QQ 群消息问答部分汇总

--------😄 😆 😵 😭 😰 😅 分割线 😢 😤 😍 ☺ 😎 😩--------

针对第一个下载不成功的问题,我把 init 的代码中下载的部分全部改成了使用本地文件了
所有需要下载的文件都已经下载好了

如果 atx-agent 和 auiautomator_apk 的版本更新了的话,去 U2.py 下改一下版本号,然后把新版的文件下载下来放到和版本号重名的文件夹里面就行了
uiautomator_apk 下载地址
atx-agent 下载地址
minicup&minitouch 下载地址

使用方法和原来的 init 类似,解压压缩包之后,命令行 cd 到这个文件夹下后,执行命令python -m U2 init就行了

下载地址:https://share.weiyun.com/5nNDyET


↙↙↙阅读原文可查看相关链接,并与作者交流