Android手机脱离电脑直接运行UIAutomator2

Android手机要想脱离PC直接运行UIAutomator2,就需要在Android上配置Python运行环境,选择主要有以下几个。

  1. QPython
  2. pydroid3
  3. Termux

首先,网上的几篇关于在Android上安装QPython运行UIAutomator的教程走不通,site-packages下的文件倒是可以正常push过去,但是启动脚本时报错 can not import '_imaging',这是Pillow7.1.2的问题,Python版本是Python 3.6/3.7/3.8,多番尝试无果。放弃之。

pydroind3也尝试了,报同样的错误,通过它自带的pip来安装uiautomator2也失败,各种库缺失而且没法装,也放弃。

原因在于不管是QPython还是pydroid3,对Python的支持都不足,某些依赖包死活装不上。

最后尝试Termux。

首先搜索下载Termux,并通过abd install或别的途径装到手机上去。

启动Termux,安装python

# 更新资源 
pkg update
pkg upgrade
# 安装python
pkg install python

如果下载较慢,多是因为国内网络的问题,自行搜索解决。

安装完之后,执行python进入Python解释器,可以看到Python版本。

接下来,直接安装UIAutoMator2,但是会报错,根据提示安装所需的库

apt  install libxml libxslt

安装完之后继续,还是会报错,问题还是出在pillow上,the header or library files could not found for jpeg,需要安装jpeg库,可用的只有libjpeg-turbo,其它的仓库里没有。

apt install libjpeg-turbo

安装完之后再重新执行

pip install --upgrade --pre uiautomator2

这次就没问题了。

如果要脱离电脑运行,需要先在电脑上初始化uiautomator2,手机连上电脑,在电脑上执行

python -m uiautomator2 init

由于atx-agent被push到了/data/local/tmp/atx-agent,因为Termux访问不了这个文件,所以之后每次重启手机时都要在电脑来启动它

# adb shell /data/local/tmp/atx-agent version #查看版本号
adb shell /data/local/tmp/atx-agent server -d #启动并后台运行

或者,把atx-agent移动到Termux能访问到的地方,比如$HOME下,再给它加上755权限,在手机上是不是就能启动它了?想想就激动啊!

答案是:不行!

通过adb启动,atx-agent获得的是root权限,可以唤起APP而无需鉴权,如果在Termux启动,相当于在一个子系统里启动,它获得的权限等同于Termux的普通APP权限,是不能随便操作其它APP的。

这么说的话其实也并没有完全脱离电脑,只是初始化完成后再在手机里运行就不需要电脑了。

接下来就是执行我们的脚本了。

把脚本通过一定的方式存储到手机里,假定命名为myscript.py,执行

python  myscript.py

有一点需要注意,通过PC连接设备时,直接使用d = u2.connect()即可,但在手机里运行时会报错没有adb exe,这是因为这种连接方式是默认的usb连接,需要adb,改成如下格式

d = u2.connect("127.0.0.1:7912")

就可以正常运行了。

2 thoughts on “Android手机脱离电脑直接运行UIAutomator2”

  1. 每次运行都要借助ADB,所以要么连USB很麻烦,如果atx-agent开启了就没有这个问题,但是数据线拔掉就没法运行了,所以没有真正脱离PC

Leave a Comment

豫ICP备19001387号-1