Android RPA 开发文档
RPA 有 Python 语言和 Go 语言两种 API 文档,下面将分别介绍两种语言使用方法。
MYT RPA SDK Python 语言 API 文档
该包封装了 libmytrpc.dll 中的所有功能,用于远程控制设备
下载连接
📌 端口列表
- 更新日期 2025-04-07 初始版本
未找到匹配的文件
桥接模式
- IP 地址:桥接设备的 IP 地址
- RPA 端口:固定为 9083
非桥接模式
- IP 地址(如 192.168.30.2):用来定位具体的设备或宿主机
- RPA 端口:根据设备实例索引计算得出,计算公式为:30000 + (index - 1) × 100 + 2
Q1 设备端口列表(index 1-12):
| 实例位 | 实例位(index) | RPA 端口 |
|---|---|---|
| 坑位1 | 1 | 30002 |
| 坑位2 | 2 | 30102 |
| 坑位3 | 3 | 30202 |
| 坑位4 | 4 | 30302 |
| 坑位5 | 5 | 30402 |
| 坑位6 | 6 | 30502 |
| 坑位7 | 7 | 30602 |
| 坑位8 | 8 | 30702 |
| 坑位9 | 9 | 30802 |
| 坑位10 | 10 | 30902 |
| 坑位11 | 11 | 31002 |
| 坑位12 | 12 | 31102 |
P1 设备端口列表(index 1-24):
| 实例位 | 坑位号(index) | RPA 端口 |
|---|---|---|
| 坑位1 | 1 | 30002 |
| 坑位2 | 2 | 30102 |
| 坑位3 | 3 | 30202 |
| 坑位4 | 4 | 30302 |
| 坑位5 | 5 | 30402 |
| 坑位6 | 6 | 30502 |
| 坑位7 | 7 | 30602 |
| 坑位8 | 8 | 30702 |
| 坑位9 | 9 | 30802 |
| 坑位10 | 10 | 30902 |
| 坑位11 | 11 | 31002 |
| 坑位12 | 12 | 31102 |
| 坑位13 | 13 | 31202 |
| 坑位14 | 14 | 31302 |
| 坑位15 | 15 | 31402 |
| 坑位16 | 16 | 31502 |
| 坑位17 | 17 | 31602 |
| 坑位18 | 18 | 31702 |
| 坑位19 | 19 | 31802 |
| 坑位20 | 20 | 31902 |
| 坑位21 | 21 | 32002 |
| 坑位22 | 22 | 32102 |
| 坑位23 | 23 | 32202 |
| 坑位24 | 24 | 32302 |
目录结构
以下是 MYT RPA SDK 的完整目录结构,帮助您理解如何组织和使用 SDK 文件:
MYT_RPA_SDK_V10_20250407/
├── arm/ # ARM架构库文件
│ └── libmytrpc_arm64.so # ARM64 Linux库
├── centos7/ # CentOS 7库文件
│ └── libmytrpc_centos.so # CentOS 7 Linux库
├── demo_py_x64/ # Python 64位演示项目
│ ├── rpc_demo.py # Python演示脚本
│ ├── common/ # 公共模块目录
│ │ ├── logger.py # 日志模块
│ │ ├── mytRpc.py # Python SDK核心实现
│ │ ├── mytSelector.py # 选择器实现
│ │ ├── rpcNode.py # 节点操作实现
│ │ ├── ToolsKit.py # 工具函数
│ │ └── __init__.py # 模块初始化
│ ├── lib/ # 库文件目录
│ │ ├── libmytrpc.dll # Windows库文件
│ │ ├── libmytrpc.dylib # macOS库文件
│ │ └── libmytrpc.lib # Windows导入库
│ └── log/ # 日志目录
│ └── myt.log # 日志文件
├── include/ # 头文件目录
│ └── libmytrpc.h # C头文件
├── lib/ # Windows 32位库目录
│ ├── libmytrpc.dll # Windows 32位库文件
│ └── libmytrpc.lib # Windows 32位导入库
├── lib64/ # Windows 64位库目录
│ ├── libmytrpc.dll # Windows 64位库文件
│ └── libmytrpc.lib # Windows 64位导入库
├── macos(m)/ # macOS M系列芯片库目录
│ └── libmytrpc.dylib # macOS M系列库文件
├── macos(x86)/ # macOS x86芯片库目录
│ └── libmytrpc.dylib # macOS x86库文件
├── ubuntu/ # Ubuntu库目录
│ └── libmytrpc_ubuntu_x86_64.so # Ubuntu x86_64库文件
└── README.txt # SDK说明文档
引用文件功能与使用说明
模块导入
根据实际的 SDK 实现,Python 版本采用面向对象的方式进行调用。以下是正确的导入方式:
# 导入核心SDK类
from common.mytRpc import MytRpc
# 导入选择器类
from common.mytSelector import mytSelector
# 导入节点操作类
from common.rpcNode import rpcNode
依赖要求
- Python 3.7+ 64位版本
- Windows 操作系统(当前SDK主要支持Windows)
- 需要将
libmytrpc.dll文件放置在项目的common目录下或系统 PATH 目录 - 可选依赖:
- OpenCV (cv2):用于图像处理和显示
- NumPy (numpy):用于图像数据处理
引用文件功能说明
以下是 SDK 中各个引用文件的详细功能介绍:
| 文件名 | 功能描述 | 主要方法/类 | 使用场景 |
|---|---|---|---|
mytRpc.py | 核心 SDK 实现,封装了与设备通信的所有主要功能 | MytRpc 类 | 所有设备控制操作的入口点 |
mytSelector.py | 提供 UI 元素选择器功能,用于查找和筛选 UI 节点 | mytSelector 类 | 需要根据条件查找 UI 元素时使用 |
rpcNode.py | 封装了 UI 节点的操作和属性获取方法 | rpcNode 类 | 获取节点属性、执行节点操作时使用 |
logger.py | 提供日志记录功能 | logger 对象 | 需要记录日志信息时使用 |
ToolsKit.py | 提供各种工具函数 | ToolsKit 类 | 获取程序路径、检查进程状态等工具操作 |
__init__.py | 模块初始化文件 | - | 确保 common 目录可作为 Python 模块导入 |
libmytrpc.dll | 底层动态链接库,实现了与设备通信的核心功能 | - | 提供 SDK 核心功能的底层实现,所有上层操作最终都会调用此 DLL 中的函数 |
DLL 文件详细说明
libmytrpc.dll - 核心动态链接库
功能描述:
libmytrpc.dll 是 MYT RPA SDK 的核心动态链接库,实现了与远程设备通信的所有底层功能,包括设备连接、截图、触摸操作、按键输入、UI 节点获取等。
文件位置:
- 在 SDK 包中的位置:
MYT_RPA_SDK_V10_20250407/demo_py_x64/lib/libmytrpc.dll - 在项目中的位置:项目的
common目录下,即项目目录/common/libmytrpc.dll
引用方式:
-
自动引用:SDK 会自动在以下位置查找
libmytrpc.dll:- 当前 Python 脚本所在目录的
common子目录 - 系统 PATH 环境变量指定的目录
- 当前 Python 脚本所在目录的
-
手动设置路径:如果需要使用自定义路径的 DLL 文件,可以在创建
MytRpc实例前修改代码中的 DLL 路径设置。
使用说明:
- 开发者无需直接调用 DLL 中的函数,而是通过
MytRpc类提供的方法间接使用 DLL 功能 - DLL 文件会在创建
MytRpc实例时自动加载 - 不同平台有对应的库文件:
- Windows:
libmytrpc.dll - Linux:
libmytrpc.so(不同架构有不同版本) - macOS:
libmytrpc.dylib
- Windows:
DLL 依赖关系:
- Windows 平台:需要 Visual C++ Redistributable 运行时库
- Linux 平台:需要相应的系统依赖库
- macOS 平台:需要相应的系统框架支持
使用示例:
from common.mytRpc import MytRpc
# 创建 MytRpc 实例时,会自动加载 libmytrpc.dll
mytapi = MytRpc()
# 以下操作都会间接调用 DLL 中的功能
if mytapi.init("192.168.1.100", 30202, 10) == True:
# 调用 DLL 中的截图功能
mytapi.screentshot(1, 90, "screenshot.png")
# 调用 DLL 中的触摸操作功能
mytapi.touchClick(0, 500, 500)
常见问题与解决方案:
-
找不到 DLL 文件:
- 确保 DLL 文件已正确复制到项目的
common目录 - 检查系统 PATH 环境变量是否包含 DLL 所在目录
- 检查 DLL 文件是否与当前 Python 版本(32位/64位)匹配
- 确保 DLL 文件已正确复制到项目的
-
DLL 加载失败:
- 检查是否缺少依赖库(如 Visual C++ Redistributable)
- 确保 DLL 文件未被损坏
- 检查当前用户是否有足够的权限访问 DLL 文件
-
DLL 版本不匹配:
- 确保使用的 DLL 文件与 SDK 版本一致
- 不要混合使用不同版本的 DLL 文件
DLL 功能模块:
- 设备通信模块:负责与远程设备建立和维护连接
- 截图模块:实现远程设备截图功能
- 输入控制模块:实现触摸、按键等输入操作
- UI 树模块:获取和解析设备 UI 树结构
- 节点操作模块:实现 UI 节点的查找和操作
- App 管理模块:实现应用的打开、关闭等操作
- 视频流模块:实现设备屏幕视频流传输
性能优化建议:
- 避免频繁创建和销毁
MytRpc实例,这会导致 DLL 频繁加载和卸载 - 对于频繁执行的操作,考虑批量处理
- 合理设置超时时间,避免不必要的等待
- 及时释放不再使用的资源,如选择器和节点对象
各文件详细介绍
1. mytRpc.py - 核心 SDK 实现
MytRpc 类是 SDK 的核心类,负责与远程设备建立连接并提供所有设备控制功能。
主要功能:
- 设备连接与管理
- 截图操作
- 触摸操作
- 按键输入
- App 操作
- 节点树导出
- 选择器创建与管理
使用示例:
from common.mytRpc import MytRpc
# 创建 SDK 实例
mytapi = MytRpc()
# 初始化并连接设备
if mytapi.init("192.168.1.100", 30202, 10) == True:
print("设备连接成功")
# 执行设备命令
output, result = mytapi.exec_cmd("ls -la")
print(f"命令输出: {output}")
# 截图保存
mytapi.screentshot(1, 90, "screenshot.png")