[实战指南]解决阴阳师脚本多开模拟器失败的5个关键步骤
【免费下载链接】OnmyojiAutoScriptOnmyoji Auto Script | 阴阳师脚本项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript
问题现象:多开环境下的自动化任务异常
📱用户操作场景还原:
玩家小明在Windows 10系统中配置了3个MuMu模拟器实例(命名为999、888、777),希望通过OnmyojiAutoScript同时执行不同的阴阳师任务。启动脚本后,第一个模拟器卡在包检测环节,第二个提示ADB连接失败,第三个虽然显示"已连接"却无法执行点击操作。日志文件中充斥着"多包识别冲突"和"无效窗口句柄"的错误信息。
💡典型错误日志片段:
2023-10-20 14:35:22 [ERROR] 检测到多个阴阳师包: com.netease.yysbwp, com.netease.onmyoji.wyzymnqsd_cps 2023-10-20 14:35:45 [ERROR] ADB连接失败: Could not connect to 127.0.0.1:16416 (不知道这样的主机) 2023-10-20 14:36:10 [ERROR] GetWindowRect failed: 无效的窗口句柄排查流程:故障树分析
关键排查命令:
# 查看ADB端口占用情况 netstat -ano | findstr "5555 16416" # 列出设备上的阴阳师相关包 adb -s emulator-5554 shell pm list packages | findstr "netease" # 查看窗口标题 tasklist /v | findstr "MuMu"⚠️注意事项:执行ADB命令前需确保已将adb.exe添加到系统PATH,或使用完整路径(如C:\Program Files\MuMu\emulator\nemu\adb.exe)。
解决方案:从临时修复到彻底解决
1. 快速修复(10分钟应急方案)
📱针对多包识别冲突:
# 在config/emulator.py中强制指定包名 class EmulatorConfig: PackageName = "com.netease.onmyoji" # 明确指定主包💻针对ADB连接失败:
# 重启ADB服务 adb kill-server && adb start-server # 手动连接模拟器 adb connect 127.0.0.1:16416⌨️针对窗口句柄无效:
- 关闭所有模拟器
- 重命名模拟器为"MuMu1_YYS"、"MuMu2_YYS"格式
- 以管理员身份重启脚本
2. 彻底解决(系统性修复)
模拟器环境标准化配置:
# 模拟器配置文件示例 (config/emulator.ini) [MuMu1_YYS] serial = emulator-5554 port = 5554 package = com.netease.onmyoji resolution = 1080x1920 dpi = 480 [MuMu2_YYS] serial = emulator-5556 port = 5556 package = com.netease.onmyoji resolution = 1080x1920 dpi = 480ADB端口映射原理:
每个模拟器实例通过不同的端口与ADB通信,默认从5554开始递增(5554, 5556, 5558...)。当端口被占用或映射错误时,会导致"连接超时"或"主机未知"错误。可通过以下命令检查端口映射:
# 查看MuMu模拟器端口配置 reg query "HKEY_CURRENT_USER\Software\Microvirt\MuMu\MultipleInstances" /s | findstr "Port"窗口句柄识别机制:
Windows系统通过窗口标题和类名识别窗口,纯数字命名可能导致系统混淆。OnmyojiAutoScript通过win32gui.FindWindow函数查找窗口,规范的命名格式可显著提高识别成功率:
# 窗口识别核心代码 (module/device/windows_impl.py) def find_window(title): hwnd = win32gui.FindWindow(None, title) if hwnd == 0: raise Exception(f"未找到窗口: {title}") return hwnd预防措施:构建稳定多开环境
1. 自动化检查脚本
创建check_env.bat定期检查环境:
@echo off echo 检查ADB端口... netstat -ano | findstr "5554 5556 5558" echo. echo 检查模拟器窗口... tasklist /v | findstr "MuMu" echo. echo 检查阴阳师包... adb devices | findstr "device" | for /f "tokens=1" %%i in ('more') do ( adb -s %%i shell pm list packages | findstr "netease.onmyoji" )2. 配置检查清单
| 检查项 | 标准配置 | 常见问题 |
|---|---|---|
| 模拟器名称 | 前缀+数字+用途(如MuMu1_YYS) | 纯数字命名、包含空格 |
| ADB端口 | 5554, 5556, 5558...(递增2) | 端口冲突、未映射 |
| 已安装包 | 仅保留一个阴阳师主包 | 共存测试包、渠道包 |
| 系统缩放 | 100%(推荐) | 缩放率>125%导致截图偏移 |
| 窗口状态 | 非最小化、无遮挡 | 被任务栏/其他窗口遮挡 |
3. 专家建议
💡模拟器隔离方案:
- 使用"多开器"功能而非手动复制模拟器目录
- 为每个实例分配独立的IP和存储路径
- 定期清理模拟器缓存(
adb shell rm -rf /data/data/com.netease.onmyoji/cache)
💡稳定性优化:
- 将模拟器安装路径添加到杀毒软件白名单
- 禁用系统自动更新(避免重启打断任务)
- 使用脚本内置的"健康检查"功能(
python script.py --check)
通过以上步骤,大多数多开环境问题都能得到有效解决。记住,规范的配置和定期维护是自动化任务稳定运行的关键。当遇到复杂问题时,建议先查看logs/目录下的详细日志,或在项目issue中搜索类似案例。
【免费下载链接】OnmyojiAutoScriptOnmyoji Auto Script | 阴阳师脚本项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考