OnmyojiAutoScript项目ADB服务启动问题分析与解决方案
问题现象
在OnmyojiAutoScript(OAS)项目使用过程中,用户报告了一个突然出现的ADB服务启动问题。具体表现为:
- 通过OASX界面启动时无法进入脚本界面,报错信息显示与ADB相关
- 直接通过oas.exe启动可以进入界面,但无法正常运行任务
- 日志显示无法识别UI界面,且截图出现异常纵向拉伸现象
- 问题出现前系统曾正常工作,重装OAS和OASX后问题依旧存在
技术分析
从日志信息可以看出,问题主要出现在ADB服务和UI识别两个环节:
ADB服务异常
日志显示在启动ADB服务时出现了以下关键信息:
ShellException(python -m deploy.installer, exitCode 1, workingDirectory: H:\ruanjian\yys\oas)
这表明uiautomator2初始化失败,这是导致后续UI识别问题的根本原因。
UI识别失败
当尝试运行DailyTrifles任务时,系统无法识别当前游戏界面:
2024-10-03 20:34:52.327 | game_ui.py:0153 | WARNING | Unknown ui page
系统列出了所有支持的页面类型,但都无法匹配当前界面,导致任务无法启动。
解决方案
方法一:更换截图方式
- 进入OAS设置界面
- 找到"截图方式"或"Screenshot Method"选项
- 尝试切换不同的截图方式,如:
- DroidCast
- Minicap
- ADB原生截图
- 每种方式测试后观察是否解决问题
方法二:重置ADB服务
- 以管理员权限打开命令提示符(cmd)
- 导航到OAS安装目录
- 执行以下命令:
adb kill-server adb start-server - 重新启动OAS观察问题是否解决
方法三:检查模拟器连接
- 确保模拟器已完全启动并进入游戏主界面
- 检查ADB连接是否正常:
adb devices应显示连接的设备信息
- 如果使用网络ADB连接,检查IP和端口是否正确
预防措施
- 定期更新OAS到最新版本
- 避免同时运行多个ADB服务(如其他安卓工具)
- 保持模拟器环境稳定,避免频繁切换分辨率
- 重要操作前备份配置文件
技术原理
这个问题涉及Android调试桥(ADB)的工作原理和UI自动化测试的核心机制:
- ADB服务:作为OAS与模拟器/设备通信的桥梁,负责传输指令和截图
- UIAutomator2:Android官方UI测试框架,用于识别和操作界面元素
- 截图服务:不同截图方式各有优缺点,某些环境下特定方式可能失效
当这些组件中的任何一个出现异常,都会导致OAS无法正确识别游戏界面,进而影响自动化任务的执行。
通过理解这些底层原理,用户可以更有针对性地排查和解决类似问题。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



