Skip to content

P4 设备发现与准备状态机修复结果 ​

结论 ​

设备选择器不再把 Network/Wi-Fi 记录标成 USB,物理 USB 设备与 Wi-Fi 拓扑按真实路由分类。已 Ready 设备在后台 usbmuxd 刷新后继续保持 Ready,不再被过期 discovering 状态长期遮挡。

Network 列表改为快速拓扑发现,用户选中后再做最长 10 秒的 Lockdown 身份验证。不可达记录会进入明确失败态并停止加载,不再拖慢物理 USB 设备列表。

产品行为 ​

场景修复后行为
物理 USB显示 USB 与线缆图标,排在列表前部
Network 拓扑显示 Wi-Fi 与 Wi-Fi 图标,未验证时标注“选择后验证”
不可达 Wi-Fi10 秒上限内返回可诊断失败,准备遮罩停止
后台设备刷新所选设备未变更时保留 App/DVT Ready
状态点只有性能服务 Ready 后为绿色,仅发现设备时为等待色
USB Toast仅响应 USB 路由变化,Network 变化不冒充 USB 插拔

实现要点 ​

  1. usbmux list --usb 读取 USB 详细身份,usbmux list --network --simple 并行读取 Network 拓扑;USB 优先排序且两路去重。
  2. resolveDevice 只在选中未解析 Network 记录后执行,以 lockdown info --udid DEVICE 补全身份。
  3. 后台发现快照保留已解析的同路由 Network 身份,不降级为匿名占位行。
  4. 阻塞遮罩改由 appListState.isLoading || connectionPhase.isBusy 驱动,与全局发现状态解耦。

验收证据 ​

项目结果证据
Swift 全量回归88/88E2
Python Collector 回归冻结 CPython 3.12 / pymobiledevice3 11.3.1,194/194E2
Mac App1.0.0 (31),x86_64,Foundation collector-foundation.2.1-betaE2
签名ad-hoc codesign --verify --deep --strict 通过E2
混合路由 FixtureUSB 优先、Network 标识、去重、Ready 保留、不可达失败全部通过E2
最终 App 内置工具匿名真机拓扑USB 3 条,1.44 s;Network 4 条,1.12 sE4(命令级)

证据边界 ​

  • E4 只证明最终 App 内置工具可在当前真机环境有界区分 USB 和 Network 拓扑;不包含修复后原生 UI 点击录屏。
  • 当前 4 条 Network 拓扑在本批前置诊断中均不可达;列表中存在拓扑记录不代表 Wi-Fi 路由已 Ready。
  • 设备名、设备标识、序列号、应用标识和进程信息均未写入报告。

未关门与下一阶段 ​

  1. P4 原生 UI 验收:用户在 build 31 中复测“打开选择器 → 识别 USB/Wi-Fi → 选择 USB → 读取 App → Ready”,并对不可达 Wi-Fi 的有界错误做点击确认。
  2. P3 长窗数值校准:iOS 17/18 四场景×三轮×600 秒真机验收仍是当前指标质量主门禁。
  3. 整体进度:P0/P1 完成;P2 Startup 官方链完成;P3 产品链完成、长窗校准待真机;P4 本批修复已 E2/E4 部分验收、原生 UI 待用户关门;P5 放电/ThermalStatus、P6 其余 xctrace 增强、P7 云端仍待推进。

Perfowl · Performance Observer