Xcode iOS DeviceSupport 可以删吗?安全清理指南
AskClean 团队 · 更新于 2026-11-02
不再调试的系统版本,其 DeviceSupport 文件夹可以删除;当前真机正在使用的版本则要保留。以后连接对应版本的设备时,Xcode 可以重新准备所需的支持文件,所以删除的代价是以后要多等一会儿,而不是丢失源代码。

DeviceSupport 里到底存了什么
Xcode 调试实体 iPhone、iPad、Apple Watch 或 Mac 时,需要与该设备上的系统版本相对应的支持数据。在用过新旧多个版本 Xcode 的 Mac 上,你可能会在 ~/Library/Developer/Xcode/iOS DeviceSupport 下看到一个个按版本命名的文件夹,旁边还有同级的 macOS DeviceSupport 目录。
这些文件帮助 Xcode 在挂接调试器时理解系统框架和符号。它们不是你 App 的源代码,不是模拟器设备,也不是你分发过的 App 所对应的 dSYM。这三类东西的删除代价各不相同,所以安全清理的第一步,就是把它们区分开。
每当你连接运行不同系统版本或构建的设备,这个目录就会变大。一个跨多个发布周期测试多台手机的开发者,可能会留着当前测试设备早已不再使用的系统版本的支持数据。
找到文件夹,列出要保留的版本
检查之前,先退出 Xcode 并断开设备。在访达中按 Command-Shift-G,输入 ~/Library/Developer/Xcode,查找 iOS DeviceSupport 和 macOS DeviceSupport。具体有哪些目录,取决于这台 Mac 用过哪些平台、哪些 Xcode 版本和哪些实体设备。
把访达切换到列表视图并计算文件夹大小。习惯用终端的话,可以运行 du -sh ~/Library/Developer/Xcode/*DeviceSupport* 做只读汇总。如果通配符没有匹配到任何内容,shell 可能会报错,这只说明对应的目录不存在。
接着盘点你仍要调试的实体设备。在每台设备上打开“设置”>“通用”>“关于本机”查看软件版本,或者连接设备后在 Xcode 的 Window > Devices and Simulators 中查看。与这个当前测试范围内的系统版本和构建相匹配的支持文件夹,都要保留。
- 退出 Xcode 和模拟器(Simulator),然后断开实体测试设备。
- 在访达中打开 ~/Library/Developer/Xcode,测量每个 DeviceSupport 文件夹的大小。
- 列出你预计还要调试的每台实体设备当前安装的系统版本。
- 保留与之匹配的版本,以及团队近期需要的 Beta 版或兼容性测试目标。
- 只把没有设备对应、已经过时的版本文件夹移到废纸篓;在下一次真机调试检查成功之前,先不要清倒废纸篓。
删除之后会发生什么
如果以后重新连接一台支持文件已被你删除的设备,Xcode 可能会显示准备提示,同时恢复或获取它需要的支持文件。Apple 曾在某个 Xcode 版本的发布说明里,把这种“重新拷贝”的行为写成一个临时解决方法:删除 iOS DeviceSupport 后重新连接设备,Xcode 就会再次拷贝符号。
这说明 DeviceSupport 大体上可以在重新连接后恢复,但并不意味着任何时候删都没有代价。重新生成需要时间,需要对应的设备和兼容的工具链,还可能在你赶工期时打断调试。所以请保留当前测试设备在用的版本,不要把这个文件夹清到一个不剩。
对于已经无法复现、也不可能再连接的旧系统构建,就要在它的体积和以后可能用到它的小概率之间权衡。最保守的做法是先把这个文件夹移到有备份的外置存储;如果以后调查遗留问题需要它,再放回原来的目录。
Apple 文档中“删除后重新连接”的做法,是针对某个特定 Xcode 版本的临时解决方法。它可以证明支持文件能够重新准备,但并不是建议你清空当前所有的 DeviceSupport 文件夹。
别混淆这四类 Xcode 存储
DeviceSupport 服务于实体设备调试。模拟器运行时是通过 Xcode 的 Settings > Components(Xcode 14–15 中叫 Platforms)安装的平台镜像,而单台模拟设备及其中的 App 则位于 CoreSimulator。删除 DeviceSupport 不会卸载任何模拟器运行时。
DerivedData 存放项目的构建产物和索引,可以从源代码重新生成;需要低风险地腾出磁盘空间时,它通常是 Xcode 里第一个该清的类别。DeviceSupport 在很多情况下也能恢复,但要等 Xcode 针对相应的实体设备重新准备。
Archives 是代价最高的一类。一份 .xcarchive 可能保存着已分发构建的精确 App 二进制文件和匹配的 dSYM。绝不要因为某份归档的版本号和一个过时的 DeviceSupport 文件夹相像,就把它删掉——两者的名字描述的是完全不同的东西。
DeviceSupport 不一定是真正的空间大户
Xcode 目录很大,并不能证明 DeviceSupport 就是主要来源。请分别测量 DerivedData、Archives、CoreSimulator、DocumentationCache 和 DeviceSupport。清掉一个不大的符号文件夹,却留着一堆用不上的模拟器运行时,可能省不了多少空间,还白白增加以后重新准备的时间。
如果启动磁盘已经快满了,先从风险较低的候选项腾出工作空间:废纸篓、下载文件夹、旧的 DerivedData,以及你已核对过的不可用(unavailable)模拟设备。然后再按系统版本审核 DeviceSupport。Archives 留给专门的发布保留审核。
清理之后重新测量。macOS 的“储存空间”设置可能更新得较慢,访达里的文件夹大小或 du 的前后对比更直接。不要套用一个“肯定能省多少 GB”的通用数字:能腾出多少,就是你那些过时版本文件夹的实际占用。
AskClean 如何把差别显示出来
AskClean 把 iOS 和 macOS DeviceSupport 作为独立的 Xcode 清理项分别测量,并把每个版本单独列出:每种设备型号的最新版本保持不勾选,较旧的版本会预先勾选,供你审核;在你确认之前,什么都不会删除。它不会把这些文件夹和 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。要为线上版本的崩溃做符号化,请保留对应的归档或 dSYM。
删除 DeviceSupport 会删掉模拟器运行时吗?
不会。模拟器运行时和虚拟设备数据另外管理,分别通过 Xcode 的 Settings > Components、simctl 和 CoreSimulator 目录处理。
为什么 Xcode 又把文件夹建回来了?
因为 Xcode 需要与所连接实体设备的系统构建相对应的支持文件。缺少这些文件时,它可能会重新准备或拷贝,所以只要你还在调试同样的版本,占用就会回来。
参考来源