外观
iOS 26 E4 入场兼容验收(首轮)
结论
Build 37 已在一台 iOS 26.5 USB 真机上进入 E4:设备发现、User App 枚举、PNG 截图、modern Provider 路由和单 Provider/DTX owner 均得到真实回包。冷启动目标 App A 时,ProcessControl 返回目标启动失败,Session 尚未开始;随后设备从 USB 发现列表消失,两次刷新均为 0 台。因此本轮状态为 partial,不能把 iOS 26 升级为 validated · E4,也没有 iOS 27 证据。
匿名机器可读账本见 iOS 26 E4 入场证据。证据不含设备名、UDID、Bundle ID 或 PID。
运行身份
| 项 | 本轮事实 |
|---|---|
| Mac App | 1.0.0 (37) |
| Foundation | collector-foundation.2.6-beta |
| Collector | 0.18.0 / CPython 3.12.3 / x86_64 |
| pymobiledevice3 | 11.3.1 |
| 设备 | 设备 A / iOS 26.5 / USB |
| 目标 | 目标 App A;应用元数据完整 |
| 证据边界 | E4 连接与服务入场;指标/数值/Startup 未关门 |
已通过的 E4 入场项
| 门禁 | 结果 | 观察 |
|---|---|---|
| 设备发现 | 通过 | 发现 1 台 USB 设备,版本识别为 iOS 26.5 |
| User App 枚举 | 通过 | 39 个 User App;目标 App A 的 Bundle/Executable 元数据在运行时完整,公开证据仅保留别名 |
| DVT 截图 | 通过 | 有效 PNG,1290 × 2796,16-bit RGB;单次 4.29 s |
| 平台识别 | 通过 | platformFamily=iOS26;仍如实标记 platformEvidence=e2-candidate |
| modern 路由 | 通过 | Host 请求 usbmux,Provider 实际回报 tunneld |
| 单 Provider | 通过 | providerCount=1 |
| 基础服务 | 通过 | ProcessControl、DeviceInfo、CoreProfile channel 均报告 ready |
这些结果只证明 Build 37 可以进入 iOS 26 的现代连接与基础 DVT 服务,不证明 9 个 source family 已经都能产出数据。
未通过与中断点
验收工具以独立 CLI 的 controlled-cold-launch 路径请求一次冷启动并选择全部九类 source family。目标启动在 Session 建立前失败,Wire 随后报告 CoreProfile prelaunch readiness failed。单独执行目标拉起后,进程快照没有观察到目标仍在运行;准备使用目标 App B 交叉验证时,native remoted 已无法找到设备。之后立即刷新和等待 5 秒后二次刷新,USB 设备数都为 0。
这里存在两个独立事实,当前证据不足以合并成一个根因:
- 目标启动未成立:可能是目标 App 自身立即退出、设备状态变化或 ProcessControl 拒绝,尚未得到稳定复现。
- 独立 CLI 错误归类不准确:非产品预热路径把 launch 失败包成
CoreProfile prelaunch readiness failed。Mac App 的正式链路是“设备预热 → App/指标预热 → 用户开始 → 唯一启动”,本轮没有进入该原生 UI 链,不能据此认定 Mac App 存在同一问题。
设备随后离线,因此没有继续重试,避免把不稳定链路写成指标不兼容。
9 类源与 64 项账本
| 项 | 本轮状态 | 说明 |
|---|---|---|
| sysmontap | 未运行 | Session 未建立 |
| device-network | 未运行 | Session 未建立 |
| process-network | 未运行 | Session 未建立 |
| graphics | 未运行 | Session 未建立 |
| gpu-counter | 未运行 | Session 未建立 |
| core-profile-frame | channel ready;未采样 | 只确认基础通道,未形成 Raw Session |
| energy | 未运行 | Session 未建立 |
| device-conditions | 未运行 | Session 未建立 |
| startup | 启动失败 | 九阶段 0 项;不是数值 0,而是未产生 Session |
| 64 项 metricID | 未建立账本 | observed/missing 数量均不填 0 |
本轮没有改动任何指标公式、单位、scope、窗口、差分、聚合或质量算法,因此 Canonical 指标知识页版本保持不变。
下一步验收顺序
- 使用 Build 37 原生 Mac App 选择设备,等待“设备服务已就绪”;选择目标 App 后等待“设备与应用服务已就绪”。
- 先不选择 Startup,用目标 App B 完成普通开始/停止;再选择 Startup,用目标 App A 与 B 各完成一次唯一冷启动。
- iOS 26 完成 9 个 source family selector/schema census,再生成 64 项 observed/missing/合法 0 账本。
- 单独执行 Startup 九阶段、停止恢复和 30 分钟混合指标;8 小时长稳作为后续门禁。
- 接入 iOS 27 真机,按同一矩阵独立执行,不借用 iOS 26 结果。
开发与验收责任边界
截至 Build 37,当前无设备条件下可以完成的开发、离线测试、签名打包与 64 项路由合同均已完成;本批没有发现需要先行修改指标公式或平台路由的代码证据。后续只剩必须由真机产生的 E4 兼容、数值和稳定性证据,由用户执行原生 UI 验收。若验收中出现可复现失败,再以 Session 导出、时间点和界面状态建立独立修复批次。
| 开发收口门禁 | 结果 |
|---|---|
| Python | 230/230 |
| Swift | 109/109 |
| Registry / source family | 64/64 / 9/9 |
| VitePress | build complete;指标知识门禁通过 |
| App | 1.0.0 (37);x86_64;codesign --deep --strict 通过 |
| 测试包 | Perfowl-1.0.0-37-x86_64.zip |
| ZIP SHA-256 | ec78e595dacd3a4a072011257ed547c74abe5c2f71320254edcc7ab5760b5adc |
整体进度
- iOS 26:E2 代码支持完成;E4 入场 6 项通过,目标拉起与指标 Session 未通过,仍为
E2 candidate + E4 partial。 - iOS 27:E2 代码支持完成;E4 尚无设备。
- 64 项 Registry:代码归属仍为 64/64;本轮没有新增真机数值结论。
- Build 37:已重新构建、签名并生成测试 ZIP;代码身份仍为提交
2f6fa1b。