【python-uiautomator2】手机上的ATX应用界面报错问题处理:无法提供服务,非am instrument启动

目录
一、前期准备
1.1 插入设备
1.2 安装atx-agent
二、解决报错:无法提供服务,非am instrument启动
2.1 出现报错
2.2 尝试解决
2.3 最终解决
三、开启ATX的悬浮窗权限
一、前期准备
1.1 插入设备
本地插入待执行设备,待执行设备需进行以下设置,先打开 设置-更多设置-开启开发者模式,找到设备的版本信息、或是安卓版本号、或是软件版本号,快速点击多次7次,就可以看到“已开启开发者模式”的提示。
返回“系统管理”,或是设置页面,就可以看到“开发者选项”,一般都在页面偏下的位置。
进入开发者选项,开启开发者选项开关。并在开发者选项里面打开:不锁定屏幕,USB调试,USB安装,USB调试(安全设置)。
1.2 安装atx-agent
首先设备连接到PC,并能够adb devices发现该设备。打开cmd,执行下面的命令会自动安装本库所需要的设备端程序,
python -m uiautomator2 init
最后提示success,代表atx-agent初始化成功,在手机桌面上显示应用ATX。
二、解决报错:无法提供服务,非am instrument启动
2.1 出现报错
ATX-Agent装好之后,开始在pyCharm中运行代码,但是程序出现报错。并且手机上ATX应用显示报错信息为“无法提供服务,非am instrument启动”。
2.2 尝试解决
网站找了各种方法比如加权限或者 点击atx app 里面的启动,
(1)打开cmd,运行如下命令
进入shell,停止ATX服务,在7912端口中启动ATX服务,让UIautomator2在后台运行服务。

(2)点击 atx app 启动 UIAUTOMATOR 一直点直到“正常服务模式”出现,但是我的需求是自动化开启模拟器然后自动化app, 这种方案不行。
(3)看到有位博主说去atx-agent官网,github源码介绍有这样一句,
博主博客:uiautomator2 无法连接 ATX-Agent-CSDN博客
官网地址:https://github.com/openatx/atx-agent
#停止已经运行的atx-agent并启动守护进程
# stop already running atx-agent and start daemon
$ adb shell /data/local/tmp/atx-agent server -d --stop
执行这个命令之后,在pyCharm重新运行代码,还是报错。
2.3 最终解决
(1)最后,我卸载并重新安装了uiatomator2第三方包,因为之前安装的uiatomator2包版本有点低,就想着重新安装一下,换个版本试试。
pip uninstall uiautomator2
pip3 install uiautomator2


(2)重新安装完成之后,新建一个py文件,通过运行代码来查看环境是否配置成功。
注意:在运行这段代码之前,需要确保 Android 设备已经通过 USB 连接到计算机,并且设备已经开启了 USB 调试模式。
import uiautomator2 as u2d = u2.connect() # connect to device
print(d.info)
这行代码调用 uiautomator2 对象的 connect() 方法来尝试连接到一台 Android 设备,并将连接后的设备对象赋值给变量 driver 。connect() 方法默认会尝试连接通过 USB 连接到计算机的第一台 Android 设备。如果需要连接指定序列号的设备,可以在 connect 方法中传入设备序列号。
设备对象 driver 的 info 属性,该属性包含了设备的各种信息,如屏幕分辨率、电池电量、系统版本等。
运行代码,这时看到类似下面的输出,就可以正式开始用我们这个库了。

(3)安装并且测试完成之后,重新在pyCharm中运行代码,很莫名其妙的就不报错了。。。。
三、开启ATX的悬浮窗权限
另外为了保持稳定,还需要开启ATX小黄车的悬浮窗权限。
主要有两步,
- 给小黄车的悬浮窗权限加权
- 开启小黄车的悬浮窗(这一步其实也不需要,因为代码会自动拉起来一个悬浮窗)
(1)首先,打开手机,在设置的应用中,找到ATX,打开应用的悬浮窗授权。
(2)然后,点击ATX小黄车打开ATX应用,,点击快捷方式中的“开启悬浮窗”,这个时候界面右侧会出现一个小小的小黄车,代表应用已经成功启动了。

此时,uiautomator2的后台服务在论上可以存活很久很久。
相关文章:
【python-uiautomator2】手机上的ATX应用界面报错问题处理:无法提供服务,非am instrument启动
目录 一、前期准备 1.1 插入设备 1.2 安装atx-agent 二、解决报错:无法提供服务,非am instrument启动 2.1 出现报错 2.2 尝试解决 2.3 最终解决 三、开启ATX的悬浮窗权限 一、前期准备 1.1 插入设备 本地插入待执行设备,待执行设备…...
子母钟系统,京准电子科技助力高考精准计时
子母钟系统,京准电子科技助力高考精准计时 子母钟系统,京准电子科技助力高考精准计时 【摘要】子母钟系统又叫网络时钟系统是校园网络中一个重要的精准计时系统,随着网络的普及,许多校园都建了自己的校园专网,使用的…...
大模型中的剪枝、蒸馏是什么意思?
环境: 剪枝 蒸馏 问题描述: 大模型中的剪枝、蒸馏是什么意思? 解决方案: 大模型的剪枝(Pruning)和蒸馏(Distillation)是两种常见的模型优化技术,用于减少模型的大小…...
深度解析:主流大模型与智能体框架能力对比及实战指南
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north 文章目录 一、技术演进全景图二、主流大模型能力矩阵1. 闭源模型对比2. 开源模型对比 三、智能体框架深…...
Linux中的基本指令(下)
目录 mv指令 more指令 less指令 head指令 tail 指令 继续理解文件 重定向和追加重定向操作 理解管道 find指令 whereis 指令 bc指令 uname ‒r指令 grep 指令 关机 扩展命令 zip/unzip 指令 tar指令 关于rzsz 系统间的文件互传 接上! mv指令 m…...
关于矢量数据集图表
ui.Chart.feature.byFeature 函数 ui.Chart.feature.byFeature 是 Google Earth Engine (GEE) 中的一个函数,用于创建图表以可视化 FeatureCollection 中各个特征(features)的属性。它通常生成一个分组柱状图,其中: …...
第十七:go 反射
fmt.printf("%T",obj) // 打印 reflect 的类型 fmt.Printf("%T", obj) // *reflect.rtype //打印的是一个指针类型 reflect包 在Go语言中反射的相关功能由内置的reflect包提供,任意接口值在反射中都可以理解为由reflect.Type和…...
3-002: MySQL 中使用索引一定有效吗?如何排查索引效果?
1. 索引失效的常见原因 虽然索引可以加速查询,但在某些情况下,MySQL 可能不会使用索引,甚至使用索引反而更慢。 以下是一些常见导致索引失效的原因: ① 查询条件使用了 ! 或 <> 原因:索引通常用于范围或等值查…...
【RabbitMQ】Spring Boot 结合 RabbitMQ 完成应用间的通信
🔥个人主页: 中草药 🔥专栏:【中间件】企业级中间件剖析 Spring 框架与 RabbitMQ 的整合主要通过 Spring AMQP(Advanced Message Queuing Protocol)模块实现,提供了便捷的消息队列开发能力。 引…...
Pytorch系列教程:可视化Pytorch模型训练过程
深度学习和理解训练过程中的学习和进步机制对于优化性能、诊断欠拟合或过拟合等问题至关重要。将训练过程可视化的过程为学习的动态提供了有价值的见解,使我们能够做出合理的决策。训练进度必须可视化的两种方法是:使用Matplotlib和Tensor Board。在本文…...
electron+vue+webview内嵌网页并注入js
vue内嵌网页可以使用iframe实现内嵌网页,但是只能通过postMessage间接通信,在electron环境下,vue可以直接使用webview来内嵌网页,支持 executeJavaScript、postMessage、send 等丰富的通信机制。 使用 webview的优势 性能更佳&…...
利用OpenResty拦截SQL注入
需求 客户的一个老项目被相关部门检测不安全,报告为sql注入。不想改代码,改项目,所以想到利用nginx去做一些数据校验拦截。也就是前端传一些用于sql注入的非法字符或者数据库的关键字这些,都给拦截掉,从而实现拦截sql…...
CAD文件转换为STL
AutoCAD与STL格式简介 AutoCAD软件是由美国欧特克有限公司(Autodesk)出品的一款自动计算机辅助设计软件,可以用于绘制二维制图和基本三维设计,通过它无需懂得编程,即可自动制图,因此它在全球广泛使用&…...
78_Pandasagg()和aggregate()的用法
78_Pandasagg()和aggregate()的用法 通过使用pandas.DataFrame和Series的agg()或aggregate()方法,可以对行或列同时应用多个操作进行聚合。agg()是aggregate()的别名,二者用法相同。 pandas.DataFrame.agg — pandas 2.1.3 文档 pandas.Series.agg —…...
QT:串口上位机
创建工程 布局UI界面 设置名称 设置数据 设置波特率 波特率默认9600 设置数据位 数据位默认8 设置停止位 设置校验位 调整串口设置、接收设置、发送设置为Group Box 修改配置 QT core gui serialport 代码详解 mianwindow.h 首先在mianwindow.h当中定义一个串口指…...
C++跨平台开发环境搭建全指南:工具链选型与性能优化实战
C跨平台开发环境搭建全指南:工具链选型与性能优化实战 目录 开发环境搭建工具链选型性能优化实战常见问题排查 开发环境搭建 操作系统环境准备 Windows# 安装Visual Studio Build Tools choco install visualstudio2022buildtools choco install cmake --instal…...
数据批处理(队列方式)
数据批处理(队列方式) public class DataProcessor {private static final int THREAD_COUNT 4;private static final int QUEUE_SIZE 10;private LinkedBlockingQueue<Data> queue new LinkedBlockingQueue<>(QUEUE_SIZE);public DataP…...
win32汇编环境,网络编程入门之二
;运行效果 ;win32汇编环境,网络编程入门之二 ;本教程在前一教程的基础上,研究一下如何得到服务器的返回的信息 ;正常的逻辑是连接上了,然后我发送什么,它返回什么,但是这有一个很尴尬的问题。 ;就是如何表现出来。因为网络可能有延…...
MATLAB—从入门到精通的第二天
在第一天的学习中,我们掌握了 MATLAB 的安装配置、基础语法、变量管理和运算符的使用。本文将深入讲解 控制结构(嵌套 if、switch)、循环类型 和 向量操作,帮助读者进一步掌握 MATLAB 的核心编程技能。 1. 条件语句进阶 1.1 嵌套…...
【认识OpenThread协议】
OpenThread 是一种基于 IPv6 、IEEE 802.15.4 标准的低功耗无线 Mesh 网络协议,主要用于智能家居、物联网设备等场景。它的设计目标是实现设备之间的高效通信、低功耗运行和高可靠性。 OpenThread官方文档 ① 特性 低功耗: 适合电池供电的设备。 Mesh 网络: 支持多…...
驱动开发系列46 - Linux 显卡KMD驱动代码分析(七)- 显存管理
目录 一:概述 二:应用程序和UMD调用栈 三:KMD 显存分配和和映射过程 一:概述 显存管理是图形驱动程序中至关重要的一部分,涉及到从用户空间(UMD,User Mode Driver)到内核空间(KMD,Kernel Mode Driver)的显存分配和管理。本文将首先梳理从一个 OpenGL 应…...
MATLAB代码开发实战:从入门到高效应用
一、MATLAB生态系统的核心优势 (扩展原有内容,增加行业数据) MATLAB在全球工程领域的市场占有率已达67%(2024年IEEE统计),其核心优势体现在: 矩阵运算速度比传统编程快3-5倍包含22个专业工具箱…...
为什么 NFS 不适合作为 TDengine 的数据存储
NFS NFS 是一种分布式文件系统,允许多台计算机通过网络共享文件。其具有以下优点: 共享存储: 多个数据库实例可以共享同一个 NFS 目录,适合分布式数据库或集群环境。灵活性: 数据存储可以集中管理,便于备份和迁移。成本低: 利用…...
办公常用自动化工具
自动化办公工具说明文档 代码全部在底部。 文件批量重命名工具 (file_renamer.py) 功能概述 file_renamer.py 是一个用于批量重命名文件的工具,可以根据自定义规则为文件重命名,支持按日期、序号、原文件名等格式进行命名。 主要功能 支持按文件类…...
字节跳动 —— 建筑物组合(滑动窗口+溢出问题)
原题描述: 题目精炼: 给定N个建筑物的位置和一个距离D,选取3个建筑物作为埋伏点,找出所有可能的建筑物组合,使得每组中的建筑物之间的最大距离不超过D。最后,输出不同埋伏方案的数量并对99997867取模。 识…...
开源数字人模型Heygem
一、Heygem是什么 Heygem 是硅基智能推出的开源数字人模型,专为 Windows 系统设计。基于先进的AI技术,仅需1秒视频或1张照片,能在30秒内完成数字人形象和声音克隆,在60秒内合成4K超高清视频。Heygem支持多语言输出、多表情动作&a…...
Linux远程工具SecureCRT下载安装和使用
SecureCRT下载安装和使用 SecureCRT是一款功能强大的终端仿真软件,它支持SSH、Telnet等多种协议,可以连接和管理基于Unix和Windows的远程主机和网络设备。SecureCRT提供了语法高亮、多标签页管理、会话管理、脚本编辑等便捷功能,安全性高、操…...
从前端视角理解消息队列:核心问题与实战指南
消息队列(Message Queue)是现代分布式系统的核心组件之一,它在前后端协作、系统解耦、流量削峰等场景中发挥着重要作用。本文从前端开发者视角出发,解析消息队列的关键问题,并结合实际场景给出解决方案。 一、为什么要…...
Android 线程池实战指南:高效管理多线程任务
在 Android 开发中,线程池的使用非常重要,尤其是在需要处理大量异步任务时。线程池可以有效地管理线程资源,避免频繁创建和销毁线程带来的性能开销。以下是线程池的使用方法和最佳实践。 1. 线程池的基本使用 (1)创建线…...
CentOS7下安装MongoDB
步骤 1:创建 MongoDB Yum 仓库文件 你需要创建一个 MongoDB 的 Yum 仓库配置文件,以便从官方源下载 MongoDB。打开终端并使用以下命令创建并编辑该文件: sudo vi /etc/yum.repos.d/mongodb-org-7.0.repo 在打开的文件中,输入以下…...
