AskCleanAskClean问净

Xcode iOS DeviceSupport 可以删吗?安全清理指南

AskClean 团队 · 更新于 2026-07-31

不再用于真机调试的系统版本,其 DeviceSupport 文件夹可以删除;当前测试设备正在使用的版本应当保留。以后再次连接对应设备时,Xcode 可以重新准备所需支持,因此删除的代价主要是等待,而不是丢失源代码。

开发用 Mac 与手机周围分布着当前和过时的设备调试符号
保留当前真机测试矩阵需要的版本,其他旧版本按系统逐个审核。

DeviceSupport 里面到底是什么

Xcode 连接并调试实体 iPhone、iPad、Apple Watch 或 Mac 时,需要理解那台设备上的系统框架和符号。在安装过多个 Xcode、连接过多代设备的 Mac 上,常见位置是 ~/Library/Developer/Xcode/iOS DeviceSupport,以及同级的 macOS DeviceSupport。

这些文件服务于实体设备和操作系统调试。它们不是你的 App 源代码,不是模拟器设备,也不是线上 App 对应的 dSYM。这几类文件的删除代价不同,安全清理的第一步就是不要把它们混在一起。

每当你连接运行不同系统版本或 Build 的设备,Xcode 都可能准备一套对应支持。经历几轮系统测试后,开发机上经常会留下当前设备实验室已经不再使用的旧版本。

找到文件夹,列出必须保留的版本

审核前先退出 Xcode,并断开实体设备。在访达按 Command-Shift-G,输入 ~/Library/Developer/Xcode,查看是否存在 iOS DeviceSupport 和 macOS DeviceSupport。实际目录取决于这台 Mac 用过哪些平台、Xcode 版本和设备。

切到列表视图并计算各文件夹大小。终端用户可以运行 du -sh ~/Library/Developer/Xcode/*DeviceSupport* 做只读汇总;如果通配符没有匹配到内容,通常只是说明相应目录不存在。

接着盘点仍需调试的真机。在设备上打开「设置 > 通用 > 关于本机」查看软件版本,也可以连接后在 Xcode 的 Window > Devices and Simulators 中核对。与当前测试矩阵匹配的 DeviceSupport 应当保留。

  1. 退出 Xcode 和 Simulator,并断开实体测试设备。
  2. 在访达打开 ~/Library/Developer/Xcode,测量每个 DeviceSupport 文件夹。
  3. 列出近期仍需调试的每台真机及其系统版本。
  4. 保留对应版本,以及团队近期明确要测试的 Beta 或兼容性目标。
  5. 仅把不匹配、已经退役的版本移到废纸篓;完成下一次真机调试验证前,不要清空废纸篓。

删除以后会发生什么

如果以后重新连接一台被你删过支持文件的设备,Xcode 可能显示准备提示,并恢复或获取该系统版本所需的数据。Apple 曾在 Xcode 发布说明的故障解决步骤中明确写过:删除 iOS DeviceSupport 后,重新连接设备,Xcode 会再次复制符号。

这说明 DeviceSupport 通常可以重新准备,但不意味着任何时候都适合清空。重新生成需要时间、需要对应设备和兼容工具链,还可能在你急着调试时打断工作。因此,当前设备实验室里的系统版本应当留下。

如果某个旧系统 Build 已经无法复现,也没有设备可重新连接,就要权衡以后调查遗留问题的可能性。最保守的办法是先把该版本移动到有备份的外置存储,需要时再放回原目录。

Apple 的「删除后重新连接」说明来自某个 Xcode 版本的特定故障处理。它能证明支持文件可以再次准备,但不是让你定期清空所有当前版本的建议。

别混淆这四类 Xcode 存储

DeviceSupport 对应实体设备调试。模拟器运行时通过 Xcode Settings > Platforms 管理,虚拟设备及其 App 数据则位于 CoreSimulator。删除 DeviceSupport 不会卸载模拟器运行时。

DerivedData 保存项目构建产物和索引,可以从源代码重新生成。急需空间时,它通常是第一个检查对象。DeviceSupport 在很多情况下也能恢复,但需要 Xcode 针对相应实体设备重新准备。

Archives 风险最高。一份 .xcarchive 可能保存已分发二进制与匹配 dSYM。绝不能因为 Archive 的版本号看起来像一个过时的 DeviceSupport 目录,就把两者视为同一类缓存。

DeviceSupport 不一定是真正的空间大户

Xcode 目录很大,不代表 DeviceSupport 就是主要来源。应当分别测量 DerivedData、Archives、CoreSimulator、DocumentationCache 与 DeviceSupport。清掉一个不大的符号目录,却留下多套废弃模拟器运行时,既省不了多少空间,还平白增加下次准备时间。

启动盘已经爆满时,先从可逆、可重建的数据腾出工作空间:废纸篓、下载目录、旧 DerivedData 和 unavailable 模拟设备。然后再按系统版本审核 DeviceSupport,最后才是需要发布制度判断的 Archives。

清理后重新测量。macOS「存储」设置里的分类更新可能有延迟,访达文件夹大小或 du 的前后对比更直接。不要套用「肯定能省十几 GB」的通用数字,真正可回收的就是你这台 Mac 上那些过时版本的实际体积。

AskClean 如何把差异显示出来

AskClean 会把 iOS 与 macOS DeviceSupport 作为独立 Xcode 项目测量,放进需要谨慎确认的流程。它不会把 DeviceSupport 与 DerivedData 合并,也不会把 Archives 描述成同等代价的缓存。

扫描结果会解释 DeviceSupport 删除后的重新准备成本,并在移动到废纸篓前询问你;Archives 则显示更严格的不可恢复警告。工具负责把风险说清,当前真机测试矩阵仍然由你决定。

DeviceSupport 只是 Xcode 存储的一层

结合目录位置与恢复代价,避免删错对象。

类别常见位置删除后果
实体设备支持~/Library/Developer/Xcode/iOS DeviceSupport以后连接匹配设备时,Xcode 可能重新准备。
模拟器数据~/Library/Developer/CoreSimulator删除设备会失去其中安装的 App 和测试数据。
DerivedData~/Library/Developer/Xcode/DerivedData项目会从源代码重新构建和索引。
Archives 与 App dSYM~/Library/Developer/Xcode/Archives可能永久失去某个已分发版本的精确调试证据。

常见问题

iOS DeviceSupport 删除安全吗?

已经不再调试的系统版本通常可以删除;当前真机使用的版本应该保留。以后若再次需要,被删除的支持数据可能由 Xcode 在设备重连时重新准备。

DeviceSupport 里有我 App 的 dSYM 吗?

它服务于实体设备和操作系统调试,不能替代某个线上二进制对应的 App dSYM。生产崩溃符号化仍要保留原始 Archive 或匹配符号。

删除 DeviceSupport 会删掉模拟器运行时吗?

不会。模拟器运行时和虚拟设备数据由 Xcode Platforms、simctl 与 CoreSimulator 单独管理。

为什么删完之后文件夹又回来了?

因为 Xcode 调试实体设备时,需要匹配其系统 Build 的支持数据。再次连接相同版本的设备,Xcode 可能重新准备或复制,所以仍在使用的版本会重新占用空间。

参考来源

继续检查 Xcode 存储