Skip to content

[Enhancement] 统一模拟器启动参数、分辨率与静音策略 #389

Description

@Lance0174

背景

近期模拟器相关反馈分散在多个 Issue:

本 Issue 用于收敛模拟器启动参数和状态恢复策略,不重复替代上述问题的用户反馈。

当前可观察问题

  1. 静默模式和音频静音被混为一个概念。现有静默模式的用户预期是任务期间不显示模拟器窗口,但雷电 14 上老板键路径可能失效,失败后要等到最大等待时间才结束;同时没有独立的“启动后禁用模拟器声音”能力。
  2. 模拟器分辨率没有统一的启动策略或配置入口。用户无法指定任务启动时的目标分辨率,也无法确认启动后是否修改了模拟器实例配置。
  3. 雷电实例的状态轮询可能触发全局设置命令。当前前端会周期性轮询设备状态,状态查询路径同时执行 globalsetting --cleanmode,需要确认该写配置行为是否会放大分辨率、帧率等实例设置被重置的问题。
  4. 启动失败信息不完整。没有 returncode、stderr、实际执行参数和模拟器版本时,无法区分路径错误、实例不存在、CLI 崩溃或模拟器自身异常。

建议方案

1. 统一启动策略入口

在现有模拟器配置页面为每个模拟器实例提供唯一的启动策略入口,至少区分:

  • 窗口可见性:任务静默时隐藏窗口,优先使用稳定的窗口句柄控制;不再把老板键作为唯一实现。
  • 音频策略:启动后禁用模拟器声音,明确显示“该模拟器版本不支持”时不伪造成功。
  • 分辨率策略:关闭、使用实例原值或指定目标分辨率;未启用时不得主动写入分辨率。

不要在全局静默开关、脚本配置和模拟器页面重复暴露同一个控制值;已有全局静默只保留为总开关,具体模拟器能力由该实例策略统一承接。

2. 按模拟器版本确认命令

实现前必须对 MuMu、雷电各支持版本执行本机 --help 或使用官方发行版文档确认参数。只有确认存在的 CLI 参数才能使用;若 CLI 不支持,应评估 ADB/vendor 配置或 Windows 窗口 API 兜底,并记录能力检测结果。

3. 解耦状态查询与写配置

globalsetting --cleanmode 从高频状态查询路径移到明确的配置变更或一次性启动准备阶段,且保证幂等。分辨率/音频策略只修改目标键,任务结束后按实例和原始值恢复,不能依赖与屏蔽广告开关绑定的整文件覆盖。

4. 完整诊断信息

启动失败日志至少包含脱敏后的可执行文件、关键参数、模拟器类型/版本、实例索引、returncode、stdout 和 stderr。窗口隐藏、分辨率设置或静音失败应立即给出 warning,并继续/终止行为由策略明确决定,不能静默等待到总超时。

验收标准

  • 雷电 9.x 与 14(至少各一个可复现版本)分别验证窗口隐藏、音频静音和分辨率策略。
  • MuMu 当前支持版本验证相同策略,并确认已有应用前台补启动和关闭流程不回归。
  • 未启用策略时,实例原分辨率、帧率、关闭提示和其他用户设置保持不变。
  • 连续状态轮询不会重复写入模拟器配置;日志可证明配置命令只在预期阶段执行。
  • 模拟器 CLI 失败时,前端和日志能看到 returncode、stdout、stderr,且不泄露账号、Token 或完整敏感路径。
  • 增加针对命令构造、能力不支持、配置恢复和静默失败的最小自动化测试,并补充真实模拟器矩阵测试记录。

关联 Issue

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions