一个对安卓设备(主要是安卓模拟器)进行基础操作的工具包
-
Root Directory
README.mdmain.pyrequirements.txtsetup.py
-
minidevice/
__init__.pyDroidCast.pyQueueUtils.pyadbcap.pyadbtouch.pydevice.pylogger.pyminicap.pyminitouch.pymaatouch.pyscreencap.pyconfig.pyutils.pytouch.py- bin/
DroidCast-debug-1.1.1.apk- minicap/jni/
- Various
minicap.sofiles for different Android versions and architectures
- Various
- minicap/libs/
- Various
minicapbinaries for different architectures
- Various
- minitouch/libs/
- Various
minitouchbinaries for different architectures
- Various
maatouch
-
tests/
test_minidevice.py
更新为3.0版本 移除pyminitouch依赖,解决minitouch触控方式部分设备旋转屏幕方向后无法使用的问题,加入MaaTouch触控方式,修改部分不符合命名规范的类 ADBtouch -> ADBTouch ADBcap -> ADBCap Minicap -> MiniCap Minitouch -> MiniTouch adbutils 依赖解除版本限制
minitouch无法在安卓13上使用,请使用MaaTouch替代
屏蔽pyminitouch的日志并在MiniDevice中添加部分日志以及引入tests自动化测试Minidevice相关实例是否正常(测试不代表所有情况) 尝试修复部分bug
README说明,添加MiniDevice类
移除opencv库的引用,让用户自行处理截图源数据bytes,以此减少库依赖(opencv,numpy库真的很大且并非所有人都需要)
pyminitouch adbutils==1.2.9
pip install minidevice
大致设计思路就是通过实现ScreenCap和Touch这两个抽象基类
- ScreenCap
- @abstractmethod screencap_raw 返回截图bytes数据
- save_screencap(path) 保存截图到path
- Touch
- @abstractmethod click(x,y,duration)
- @abstractmethod swipe(points,duraiton)
整合至MiniDevice类创建对安卓设备操作的对象,引入基础操作锁,防止不合理并发导致的程序错误
MiniDevice(self, serial=None, capMethod: Union[ADBtouch, Minicap , DroidCast] = None,
touchMethod: Union[ADBtouch,Minitouch] = None, screenshotTimeout=500)
capMethod|touchMethod 为 ScreenCap | Touch 的子类或者子类实例,为None时不创建对应方法
当capMethod|touchMethod包含子类时,serial为必须
- screenshot_raw
- click
- swipe
User无需关心具体实现过程,Developer直接继承基类即可添加新方法
- ScreenCap
- MiniCap
- ADBCap
- DroidCast
- Touch
- MiniTouch
- ADBTouch
- MaaTouch
- MiniDevice
- ScreenCap
- Touch
-
转发端口清理失败(暂时无需清理,所有转发时都会判断端口是否被占用) - pyminitouch库使用系统路径的adb,导致需用户自行安装adb工具并添加到环境变量中
- pyminitouch库实现存在潜在问题,主要集中在
连接问题以及输入是否合法未进行检查上面
进行测试前请pip install pytest
相关使用特性见pytest 文档
修改文件中以下参数以适配不同测试环境以及新方法
SERIAL = "emulator-5554" # 设备ID
SCREENSHOT_TIMEOUT = 500 # 截图延迟 单位ms
METHOD_LIST = [
# 格式为 (ScreenCap,Touch)
# 截图方法
(Minicap, None),
(DroidCast, None),
(ADBcap, None),
# 操作方法
(None, ADBtouch),
(None, Minitouch)
]Minicap>>DroidCast>>ADBcap
- Minicap截取一张图片时间大概
20~30ms,当然你可以通过添加参数rate,以获得更加高的速度(但这同时会拉高设备CPU占用) - DroidCast截图图片时间大概在
100ms以内,场景越复杂,时间越长,解决方法未知 - ADBcap耗时
500ms甚至更长,稳定性未知
Minitouch>>ADBtouch
- Minitouch触控效率据说和Windows api几乎相同
- ADBtouch无法模拟曲线滑动,只能点到点直线
