这个错误:
previous preparation error: The developer disk image could not be unmounted on the device; An unknown error message 'internalError'; was from the device.
是 Xcode 真机调试时 Developer Disk Image(DDI)挂载失败的典型表现。背后通常是调试环境被卡住或残留所致。
为什么会这样
最常见的几种情况:
- 上一次调试没正常结束——可能是直接拔了线,或者设备自己崩溃重启了,导致已挂载的镜像没来得及卸载。
- Xcode 与 iOS 版本不匹配,缺少对应版本的 DDI。
- 设备上还有未退出的调试进程,锁定了挂载点。
解决步骤
1. 重启设备并重新连接(最先尝试)
拔掉数据线,重启 iPhone(长按电源键滑动关机再开机),然后完全退出 Xcode(Cmd+Q)。重新打开 Xcode 后插回设备,通常能清掉残留状态。
如果这招不管用,再往下试。
2. 手动卸载 Developer Disk Image
iPhone 上可以到「设置 → 通用 → iPhone 储存空间」看看有没有异常挂载(但大多时候看不到,刷机般重启能清理)。
更直接的方式是用 ideviceimagemounter 工具:
brew install libimobiledevice
ideviceimagemounter -u <你的设备 UUID>
-u 会卸载当前挂载的镜像。不知道 UUID 的话,连上设备后在 Xcode 的 Devices 窗口里能查到。
3. 检查 Xcode 自带的 DeviceSupport 文件
确认 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport/ 下有你设备对应的 iOS 版本文件夹,比如 17.5 (21F79)。如果没有,说明 Xcode 缺少这个版本的 DDI,可能需要升级 Xcode 或者从其他装有对应版本的 Mac 上拷贝一份。这个目录里面放的就是 DeveloperDiskImage.dmg。
4. 清理 Mac 上可能占用的 USB 进程
有时候系统层面有残留进程抓着 USB 通道不撒手。可以在终端跑一下:
ps aux | grep -i usb
看到可疑的就 kill -9 <PID>。不行就直接重启 Mac,这样最干净。
多数情况下,重启设备、重启 Xcode、重新插拔数据线这三步就能搞定。如果反复出现,检查一下是不是 Xcode 和 iOS 版本差得太远,那时升级是绕不过去的。

