Arknights-Mower项目中的首页循环刷屏问题分析与解决方案
问题现象
在Arknights-Mower 23.05版本中,用户报告了一个异常现象:程序在执行任务时陷入了首页循环刷屏的状态,无法继续执行后续任务。从用户提供的日志和截图可以看出,程序不断重复点击首页的相同位置,形成了死循环。
问题分析
通过对日志的深入分析,我们发现以下几个关键点:
-
点击坐标验证:日志记录显示程序点击的坐标位置是正确的,排除了坐标计算错误的可能性。
-
输入设备问题:初步判断问题可能与scrcpy(屏幕复制工具)有关,这是Android设备屏幕控制和输入模拟的常用工具。
-
间歇性出现:该问题并非持续出现,而是间歇性发生,增加了问题复现和调试的难度。
技术背景
在自动化工具中,屏幕状态识别和输入模拟是两个核心功能:
- 屏幕状态识别:通过图像识别技术判断当前屏幕显示的内容
- 输入模拟:通过虚拟输入设备向目标设备发送点击、滑动等操作
当这两个环节中的任何一个出现异常,都可能导致程序陷入错误状态。
解决方案
针对这个问题,开发团队采取了以下措施:
-
升级scrcpy版本:计划将项目中使用的scrcpy工具升级到最新版本,以解决可能的输入模拟问题。
-
改进MaaTouch模块:在commit 01e55e8中改进了MaaTouch模块,这是负责处理触摸输入的核心组件。
-
增加状态校验:在代码中增加更多的状态检查点,防止程序陷入死循环。
预防措施
为了避免类似问题的发生,建议:
-
定期更新依赖:保持所有依赖库(如scrcpy)处于最新稳定版本。
-
完善日志系统:增加更详细的日志记录,特别是状态转换和输入反馈。
-
异常处理机制:实现更健壮的异常处理,当检测到异常循环时能够自动恢复。
总结
自动化工具中的循环异常是一个常见但棘手的问题,往往涉及多个组件的交互。通过分析日志、升级关键组件和改进核心模块,可以有效解决这类问题。对于用户而言,遇到类似问题时可以尝试手动暂停后重启程序,这通常能暂时解决问题,而长期解决方案则需要开发团队对底层组件进行优化。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



