调试经验

watchOS 真机部署连接排障

中文阅读版

debuggingwatchosxcode

watchOS 真机部署连接排障

中文阅读版

在 watchOS 真机部署时,xcodebuild 能看到目标设备并不代表可以安装。还需要 Apple Watch 开启开发者模式、解锁、靠近 Mac,并且 Mac/iPhone/Watch 的本地网络调试隧道可建立。

关键内容

  • xcrun devicectl list devices 可用于确认 Apple Watch 是否被 CoreDevice 发现。
  • xcrun devicectl device info details --device <DEVICE_ID> 可检查:
  • developerModeStatus 是否为 enabled
  • tunnelState 是否为 connected 或至少不是 disconnected
  • udid 可用于 xcodebuild -destination id=<UDID>
  • 如果 devicectl install appTimed out while attempting to establish tunnel using negotiated network parameters,通常需要解锁 Apple Watch、确认 Wi-Fi/同一网络、让设备靠近 Mac 后重试。
  • 本项目新增了 /Users/loco/loco-devHome/code/goal-map/scripts/run_on_watch.sh,用于自动发现 Watch、检查连接状态、构建并安装已有 watchOS app。

背景

GoalMapDaily 的 GoalMapDaily Watch target 已有签名构建产物,bundle id 为 com.loco.goalmapdaily.watch,Team 为 4522PC4NXQ。本次部署被物理设备连接状态阻塞,而不是 Swift 编译错误。

后续动作

  • 在 Apple Watch 侧解锁并保持靠近 Mac。
  • 确认 iPhone 与 Mac 同 Wi-Fi,Apple Watch Developer Mode 已开启。
  • 重新执行 ./scripts/run_on_watch.sh

AI 检索提示

  • 相关命令:xcrun devicectl list devicesxcrun devicectl device info detailsxcrun devicectl device install appxcodebuild -destination
  • 相关错误:CoreDeviceError 4000RemotePairingError 1001tunnelState: disconnecteddeveloperModeStatus: disabled