[{"data":1,"prerenderedAt":61},["ShallowReactive",2],{"blog-zh-clear-xcode-storage":3},{"meta":4,"html":14,"headings":15,"raw":60},{"title":5,"description":6,"topic":7,"date":8,"author":9,"icons":10},"Xcode 占用几十 GB：DerivedData、模拟器、设备支持文件怎么清","看清 Xcode 的空间花在哪里，DerivedData、模拟器、运行时和设备支持文件哪些能删、怎么删，哪些必须保留。","developer-cleanup","2026-10-29","浣熊管家团队",[11,12,13],"blocks","smartphone","terminal","\u003Cp>做 iOS 或 macOS 开发一段时间后，你可能会发现系统设置“储存空间”里的“系统数据”或“开发者”一项越来越大。占地方的通常不是 Xcode 应用本身，而是它在使用中持续生成的数据：每个项目的构建缓存、每个系统版本的模拟器运行时、每台调试过的真机对应的设备支持文件。这些内容分散在几个目录里，有的删了只是让下次构建慢一点，有的删了就找不回来。下面先帮你看清每一块是什么，再给出手动清理的方法，最后说明浣熊管家能替你做哪些。\u003C\u002Fp>\n\u003Ch2 id=\"where-the-space-goes\">\u003Ca class=\"heading-anchor\" href=\"#where-the-space-goes\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>先看空间花在哪里\u003C\u002Fh2>\n\u003Cp>Xcode 的数据大多在 \u003Ccode>~\u002FLibrary\u002FDeveloper\u003C\u002Fcode> 下，模拟器运行时则放在系统级目录中。先用两条只读命令看看各占多少：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 列出 Xcode 和模拟器目录下各子目录的大小，从小到大排序\ndu -h -d 1 ~\u002FLibrary\u002FDeveloper\u002FXcode ~\u002FLibrary\u002FDeveloper\u002FCoreSimulator 2&gt;\u002Fdev\u002Fnull | sort -h\n# 列出已安装的模拟器运行时及其占用\nxcrun simctl runtime list\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>常见的大户如下，路径都相对于 \u003Ccode>~\u002FLibrary\u002FDeveloper\u003C\u002Fcode>：\u003C\u002Fp>\n\u003Cdiv class=\"table-wrap\">\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>位置\u003C\u002Fth>\u003Cth>内容\u003C\u002Fth>\u003Cth>删除后\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>\u003Ccode>Xcode\u002FDerivedData\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>各项目的构建产物、索引和日志\u003C\u002Ftd>\u003Ctd>下次构建和索引变慢，会自动重建\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>Xcode\u002FiOS DeviceSupport\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>真机调试用的系统符号，每个系统版本一份\u003C\u002Ftd>\u003Ctd>再连接该版本的设备时重新准备\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>CoreSimulator\u002FDevices\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>每台模拟器，以及装在里面的 App 和数据\u003C\u002Ftd>\u003Ctd>模拟器中的数据随之删除\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>CoreSimulator\u002FCaches\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>模拟器生成的共享缓存\u003C\u002Ftd>\u003Ctd>首次启动模拟器变慢\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>\u003Ccode>Xcode\u002FArchives\u003C\u002Fcode>\u003C\u002Ftd>\u003Ctd>发布用的归档和调试符号（dSYM）\u003C\u002Ftd>\u003Ctd>无法再导出该版本，也无法符号化它的崩溃日志\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003C\u002Fdiv>\n\u003Cp>模拟器运行时不在这个目录里，单个往往就有数 GB，用上面的 \u003Ccode>xcrun simctl runtime list\u003C\u002Fcode> 查看。\u003C\u002Fp>\n\u003Ch2 id=\"safe-vs-risky\">\u003Ca class=\"heading-anchor\" href=\"#safe-vs-risky\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>哪些能删，哪些要先想想\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Cstrong>可以直接删\u003C\u002Fstrong>：DerivedData、\u003Ccode>CoreSimulator\u002FCaches\u003C\u002Fcode>，以及旧的设备日志和文档索引。它们都由 Xcode 自动生成，删了只是下次要重新生成。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>按需删除\u003C\u002Fstrong>：模拟器运行时、设备支持文件和模拟器设备。判断标准是你还要不要在那个系统版本上运行或调试。项目最低支持 iOS 17，就留一个 iOS 17 的运行时；早已不用的测试机，对应的设备支持文件可以删掉。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>不要当缓存删\u003C\u002Fstrong>：\u003Ccode>Archives\u003C\u002Fcode> 里是你提交或分发过的构建，以及符号化崩溃日志所需的 dSYM。项目目录、证书和描述文件更不在清理范围内。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"manual-cleanup\">\u003Ca class=\"heading-anchor\" href=\"#manual-cleanup\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>手动清理\u003C\u002Fh2>\n\u003Cp>动手前先退出 Xcode 和模拟器，避免文件在删除过程中被重新写入。下面的 \u003Ccode>rm -rf\u003C\u002Fcode> 会直接删除，不经过废纸篓。\u003C\u002Fp>\n\u003Ch3 id=\"derived-data\">\u003Ca class=\"heading-anchor\" href=\"#derived-data\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>DerivedData\u003C\u002Fh3>\n\u003Cp>先在 \u003Cstrong>Xcode → Settings → Locations\u003C\u002Fstrong> 确认 Derived Data 用的是默认位置；如果设成了自定义目录，把下面的路径换成你的目录。\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 查看每个项目的构建缓存大小\ndu -h -d 1 ~\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData | sort -h\n# 删除全部构建缓存，源码、证书和归档不受影响\nrm -rf ~\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>只想处理某个项目，就删除对应的“项目名-一串字符”文件夹。如果只是为了解决构建异常，可以先试 \u003Cstrong>Product → Clean Build Folder\u003C\u002Fstrong>，影响范围更小。\u003C\u002Fp>\n\u003Ch3 id=\"simulator-devices\">\u003Ca class=\"heading-anchor\" href=\"#simulator-devices\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>模拟器设备和 SwiftUI 预览\u003C\u002Fh3>\n\u003Cpre>\u003Ccode class=\"language-bash\"># 列出所有模拟器及其 UDID\nxcrun simctl list devices\n# 删除对应运行时已不存在的模拟器\nxcrun simctl delete unavailable\n# 删除指定的模拟器，连同其中的 App 和数据\nxcrun simctl delete &lt;UDID&gt;\n# 清空 SwiftUI 预览专用的模拟器，下次预览时会重新创建\nxcrun simctl --set previews delete all\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>\u003Ccode>delete unavailable\u003C\u002Fcode> 只处理已经失去运行时的设备，最适合在删除运行时之后执行。你也可以在 \u003Cstrong>Window → Devices and Simulators\u003C\u002Fstrong> 中右键删除单台模拟器。\u003C\u002Fp>\n\u003Ch3 id=\"simulator-runtimes\">\u003Ca class=\"heading-anchor\" href=\"#simulator-runtimes\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>模拟器运行时\u003C\u002Fh3>\n\u003Cp>最直观的方法是打开 \u003Cstrong>Xcode → Settings → Components\u003C\u002Fstrong>，点不再需要的版本旁边的信息按钮，再点 \u003Cstrong>Delete\u003C\u002Fstrong>，详见 Apple 的\u003Ca href=\"https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002Fxcode\u002Fdownloading-and-installing-additional-xcode-components\" target=\"_blank\" rel=\"noopener\">组件管理说明\u003C\u002Fa>。命令行也可以：\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">xcrun simctl runtime list\n# 用列表中显示的标识符删除指定运行时\nxcrun simctl runtime delete &lt;标识符&gt;\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>删除后，这个系统版本的模拟器无法再启动，需要时在同一页面重新下载即可。\u003C\u002Fp>\n\u003Ch3 id=\"device-support\">\u003Ca class=\"heading-anchor\" href=\"#device-support\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>设备支持文件\u003C\u002Fh3>\n\u003Cp>每当你用一台运行新系统版本的真机调试，Xcode 就会在 \u003Ccode>iOS DeviceSupport\u003C\u002Fcode>（watchOS、tvOS、visionOS 也各有一个目录）中保存一份该版本的符号，单个就可能有几 GB。\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-bash\">du -h -d 1 &quot;$HOME\u002FLibrary\u002FDeveloper\u002FXcode\u002FiOS DeviceSupport&quot; | sort -h\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>找出早已不用的系统版本，删除对应的文件夹即可。以后再连接这个版本的设备，Xcode 会重新准备，第一次调试要多等一会儿。\u003C\u002Fp>\n\u003Ch3 id=\"archives\">\u003Ca class=\"heading-anchor\" href=\"#archives\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>归档\u003C\u002Fh3>\n\u003Cp>归档请在 \u003Cstrong>Window → Organizer\u003C\u002Fstrong> 的 Archives 中逐个管理。确认某个版本不需要再分发、也不需要分析它的崩溃日志后，再删除。\u003C\u002Fp>\n\u003Ch2 id=\"washbear\">\u003Ca class=\"heading-anchor\" href=\"#washbear\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>用浣熊管家清理 Xcode 数据\u003C\u002Fh2>\n\u003Cp>在\u003Ca href=\"\u002Fdocs\u002Fdeep-clean\">深度清理\u003C\u002Fa>中运行 \u003Cstrong>标准扫描\u003C\u002Fstrong> 后，Xcode 相关内容集中在 \u003Cstrong>Xcode 数据\u003C\u002Fstrong> 类别中：\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>Xcode 构建缓存\u003C\u002Fstrong>：默认位置的整个 DerivedData。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Xcode 模拟器缓存\u003C\u002Fstrong>：CoreSimulator 的缓存和临时文件，模拟器设备、运行时和应用数据都会保留。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Xcode 文档与设备日志\u003C\u002Fstrong>：超过 14 天的文档索引，以及 iOS、watchOS 设备日志。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Xcode 设备支持文件\u003C\u002Fstrong>：按系统版本逐个列出，可以只勾选不再需要的版本。\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Xcode 模拟器运行时\u003C\u002Fstrong>：通过 Xcode 自带的 \u003Ccode>simctl\u003C\u002Fcode> 删除，只列出系统标记为可删除的运行时，同样可以逐个勾选。\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>这一类条目都不会被 \u003Cstrong>智能推荐\u003C\u002Fstrong> 预先勾选，需要你展开查看路径和大小后自己选择。它们都要求先退出 Xcode，部分还要求退出模拟器；在 \u003Cstrong>确认清理\u003C\u002Fstrong> 中可以通过 \u003Cstrong>关闭运行中的应用（可选）\u003C\u002Fstrong> 让浣熊管家代为关闭，请先保存工作。\u003C\u002Fp>\n\u003Cp>与 iOS 开发相关的还有几项，分布在其他类别：\u003Cstrong>应用缓存\u003C\u002Fstrong> 中的 \u003Cstrong>CoreDevice 设备缓存\u003C\u002Fstrong>，\u003Cstrong>系统缓存\u003C\u002Fstrong> 中的 \u003Cstrong>旧的 iPhone 和 iPad 固件下载\u003C\u002Fstrong>（超过 7 天的固件包），以及 \u003Cstrong>用户缓存文件\u003C\u002Fstrong> 中的 \u003Cstrong>Swift Package Manager 缓存\u003C\u002Fstrong> 和 \u003Cstrong>CocoaPods 下载缓存\u003C\u002Fstrong>。项目里的 \u003Ccode>Pods\u003C\u002Fcode>、\u003Ccode>.build\u003C\u002Fcode> 目录，见\u003Ca href=\"\u002Fblog\u002Fclean-project-build-artifacts\">旧项目构建目录的批量清理\u003C\u002Fa>。\u003C\u002Fp>\n\u003Cdiv class=\"callout callout-note\">\u003Cp class=\"callout-title\">说明\u003C\u002Fp>\u003Cp>浣熊管家不会删除 Archives、模拟器设备和 SwiftUI 预览数据，也不会处理自定义位置的 DerivedData，这几项请按上一节手动处理。清理会直接删除文件，不进入废纸篓，结果记录在\u003Ca href=\"\u002Fdocs\u002Fgetting-started#history\">操作历史\u003C\u002Fa>中。\u003C\u002Fp>\n\u003C\u002Fdiv>\u003Cp>想知道这些目录在你的 Mac 上占了多少，可以\u003Ca href=\"\u002Fdownload\">下载浣熊管家\u003C\u002Fa>运行一次深度清理，扫描本身不会删除任何内容。下面的演示窗口使用示例数据，其中的条目、大小和勾选状态仅作示意。\u003C\u002Fp>\n\u003C!--demo:deepClean-->\u003Ch2 id=\"checklist\">\u003Ca class=\"heading-anchor\" href=\"#checklist\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>清理清单\u003C\u002Fh2>\n\u003Col>\n\u003Cli>保存工作，退出 Xcode 和模拟器。\u003C\u002Fli>\n\u003Cli>DerivedData 和模拟器缓存可以直接清理。\u003C\u002Fli>\n\u003Cli>运行时和设备支持文件只保留项目仍要支持的系统版本。\u003C\u002Fli>\n\u003Cli>删除运行时后，运行一次 \u003Ccode>xcrun simctl delete unavailable\u003C\u002Fcode>。\u003C\u002Fli>\n\u003Cli>Archives 只在 Organizer 中逐个确认后删除。\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"faq\">\u003Ca class=\"heading-anchor\" href=\"#faq\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>常见问题\u003C\u002Fh2>\n\u003Ch3 id=\"faq-source-code\">\u003Ca class=\"heading-anchor\" href=\"#faq-source-code\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>删除 DerivedData 会影响源码或 Git 吗？\u003C\u002Fh3>\n\u003Cp>不会。DerivedData 只存放生成的内容，源码、Git 历史、证书和描述文件都在别处。代价是下一次完整构建和索引会慢一些。\u003C\u002Fp>\n\u003Ch3 id=\"faq-grows-back\">\u003Ca class=\"heading-anchor\" href=\"#faq-grows-back\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>为什么清理后没多久又涨回去了？\u003C\u002Fh3>\n\u003Cp>这是正常现象。只要你还在构建项目、使用模拟器，Xcode 就会重新生成这些数据。与其频繁清空正在使用的缓存，不如定期删掉不再用的系统版本和旧项目的数据。\u003C\u002Fp>\n\u003Ch3 id=\"faq-runtime-mistake\">\u003Ca class=\"heading-anchor\" href=\"#faq-runtime-mistake\" aria-hidden=\"true\" tabindex=\"-1\">#\u003C\u002Fa>运行时删错了怎么办？\u003C\u002Fh3>\n\u003Cp>在 \u003Cstrong>Xcode → Settings → Components\u003C\u002Fstrong> 中重新下载对应版本即可，代价只是下载时间。如果整台 Mac 的空间都很紧张，可以先看\u003Ca href=\"\u002Fblog\u002Fmac-storage-full\">Mac 储存空间不足时的清理顺序\u003C\u002Fa>。\u003C\u002Fp>\n",[16,20,23,26,30,33,36,39,42,45,48,51,54,57],{"depth":17,"id":18,"text":19},2,"where-the-space-goes","先看空间花在哪里",{"depth":17,"id":21,"text":22},"safe-vs-risky","哪些能删，哪些要先想想",{"depth":17,"id":24,"text":25},"manual-cleanup","手动清理",{"depth":27,"id":28,"text":29},3,"derived-data","DerivedData",{"depth":27,"id":31,"text":32},"simulator-devices","模拟器设备和 SwiftUI 预览",{"depth":27,"id":34,"text":35},"simulator-runtimes","模拟器运行时",{"depth":27,"id":37,"text":38},"device-support","设备支持文件",{"depth":27,"id":40,"text":41},"archives","归档",{"depth":17,"id":43,"text":44},"washbear","用浣熊管家清理 Xcode 数据",{"depth":17,"id":46,"text":47},"checklist","清理清单",{"depth":17,"id":49,"text":50},"faq","常见问题",{"depth":27,"id":52,"text":53},"faq-source-code","删除 DerivedData 会影响源码或 Git 吗？",{"depth":27,"id":55,"text":56},"faq-grows-back","为什么清理后没多久又涨回去了？",{"depth":27,"id":58,"text":59},"faq-runtime-mistake","运行时删错了怎么办？","\n做 iOS 或 macOS 开发一段时间后，你可能会发现系统设置“储存空间”里的“系统数据”或“开发者”一项越来越大。占地方的通常不是 Xcode 应用本身，而是它在使用中持续生成的数据：每个项目的构建缓存、每个系统版本的模拟器运行时、每台调试过的真机对应的设备支持文件。这些内容分散在几个目录里，有的删了只是让下次构建慢一点，有的删了就找不回来。下面先帮你看清每一块是什么，再给出手动清理的方法，最后说明浣熊管家能替你做哪些。\n\n## 先看空间花在哪里 {#where-the-space-goes}\n\nXcode 的数据大多在 `~\u002FLibrary\u002FDeveloper` 下，模拟器运行时则放在系统级目录中。先用两条只读命令看看各占多少：\n\n```bash\n# 列出 Xcode 和模拟器目录下各子目录的大小，从小到大排序\ndu -h -d 1 ~\u002FLibrary\u002FDeveloper\u002FXcode ~\u002FLibrary\u002FDeveloper\u002FCoreSimulator 2>\u002Fdev\u002Fnull | sort -h\n# 列出已安装的模拟器运行时及其占用\nxcrun simctl runtime list\n```\n\n常见的大户如下，路径都相对于 `~\u002FLibrary\u002FDeveloper`：\n\n| 位置 | 内容 | 删除后 |\n| --- | --- | --- |\n| `Xcode\u002FDerivedData` | 各项目的构建产物、索引和日志 | 下次构建和索引变慢，会自动重建 |\n| `Xcode\u002FiOS DeviceSupport` | 真机调试用的系统符号，每个系统版本一份 | 再连接该版本的设备时重新准备 |\n| `CoreSimulator\u002FDevices` | 每台模拟器，以及装在里面的 App 和数据 | 模拟器中的数据随之删除 |\n| `CoreSimulator\u002FCaches` | 模拟器生成的共享缓存 | 首次启动模拟器变慢 |\n| `Xcode\u002FArchives` | 发布用的归档和调试符号（dSYM） | 无法再导出该版本，也无法符号化它的崩溃日志 |\n\n模拟器运行时不在这个目录里，单个往往就有数 GB，用上面的 `xcrun simctl runtime list` 查看。\n\n## 哪些能删，哪些要先想想 {#safe-vs-risky}\n\n- **可以直接删**：DerivedData、`CoreSimulator\u002FCaches`，以及旧的设备日志和文档索引。它们都由 Xcode 自动生成，删了只是下次要重新生成。\n- **按需删除**：模拟器运行时、设备支持文件和模拟器设备。判断标准是你还要不要在那个系统版本上运行或调试。项目最低支持 iOS 17，就留一个 iOS 17 的运行时；早已不用的测试机，对应的设备支持文件可以删掉。\n- **不要当缓存删**：`Archives` 里是你提交或分发过的构建，以及符号化崩溃日志所需的 dSYM。项目目录、证书和描述文件更不在清理范围内。\n\n## 手动清理 {#manual-cleanup}\n\n动手前先退出 Xcode 和模拟器，避免文件在删除过程中被重新写入。下面的 `rm -rf` 会直接删除，不经过废纸篓。\n\n### DerivedData {#derived-data}\n\n先在 **Xcode → Settings → Locations** 确认 Derived Data 用的是默认位置；如果设成了自定义目录，把下面的路径换成你的目录。\n\n```bash\n# 查看每个项目的构建缓存大小\ndu -h -d 1 ~\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData | sort -h\n# 删除全部构建缓存，源码、证书和归档不受影响\nrm -rf ~\u002FLibrary\u002FDeveloper\u002FXcode\u002FDerivedData\n```\n\n只想处理某个项目，就删除对应的“项目名-一串字符”文件夹。如果只是为了解决构建异常，可以先试 **Product → Clean Build Folder**，影响范围更小。\n\n### 模拟器设备和 SwiftUI 预览 {#simulator-devices}\n\n```bash\n# 列出所有模拟器及其 UDID\nxcrun simctl list devices\n# 删除对应运行时已不存在的模拟器\nxcrun simctl delete unavailable\n# 删除指定的模拟器，连同其中的 App 和数据\nxcrun simctl delete \u003CUDID>\n# 清空 SwiftUI 预览专用的模拟器，下次预览时会重新创建\nxcrun simctl --set previews delete all\n```\n\n`delete unavailable` 只处理已经失去运行时的设备，最适合在删除运行时之后执行。你也可以在 **Window → Devices and Simulators** 中右键删除单台模拟器。\n\n### 模拟器运行时 {#simulator-runtimes}\n\n最直观的方法是打开 **Xcode → Settings → Components**，点不再需要的版本旁边的信息按钮，再点 **Delete**，详见 Apple 的[组件管理说明](https:\u002F\u002Fdeveloper.apple.com\u002Fdocumentation\u002Fxcode\u002Fdownloading-and-installing-additional-xcode-components)。命令行也可以：\n\n```bash\nxcrun simctl runtime list\n# 用列表中显示的标识符删除指定运行时\nxcrun simctl runtime delete \u003C标识符>\n```\n\n删除后，这个系统版本的模拟器无法再启动，需要时在同一页面重新下载即可。\n\n### 设备支持文件 {#device-support}\n\n每当你用一台运行新系统版本的真机调试，Xcode 就会在 `iOS DeviceSupport`（watchOS、tvOS、visionOS 也各有一个目录）中保存一份该版本的符号，单个就可能有几 GB。\n\n```bash\ndu -h -d 1 \"$HOME\u002FLibrary\u002FDeveloper\u002FXcode\u002FiOS DeviceSupport\" | sort -h\n```\n\n找出早已不用的系统版本，删除对应的文件夹即可。以后再连接这个版本的设备，Xcode 会重新准备，第一次调试要多等一会儿。\n\n### 归档 {#archives}\n\n归档请在 **Window → Organizer** 的 Archives 中逐个管理。确认某个版本不需要再分发、也不需要分析它的崩溃日志后，再删除。\n\n## 用浣熊管家清理 Xcode 数据 {#washbear}\n\n在[深度清理](\u002Fdocs\u002Fdeep-clean)中运行 **标准扫描** 后，Xcode 相关内容集中在 **Xcode 数据** 类别中：\n\n- **Xcode 构建缓存**：默认位置的整个 DerivedData。\n- **Xcode 模拟器缓存**：CoreSimulator 的缓存和临时文件，模拟器设备、运行时和应用数据都会保留。\n- **Xcode 文档与设备日志**：超过 14 天的文档索引，以及 iOS、watchOS 设备日志。\n- **Xcode 设备支持文件**：按系统版本逐个列出，可以只勾选不再需要的版本。\n- **Xcode 模拟器运行时**：通过 Xcode 自带的 `simctl` 删除，只列出系统标记为可删除的运行时，同样可以逐个勾选。\n\n这一类条目都不会被 **智能推荐** 预先勾选，需要你展开查看路径和大小后自己选择。它们都要求先退出 Xcode，部分还要求退出模拟器；在 **确认清理** 中可以通过 **关闭运行中的应用（可选）** 让浣熊管家代为关闭，请先保存工作。\n\n与 iOS 开发相关的还有几项，分布在其他类别：**应用缓存** 中的 **CoreDevice 设备缓存**，**系统缓存** 中的 **旧的 iPhone 和 iPad 固件下载**（超过 7 天的固件包），以及 **用户缓存文件** 中的 **Swift Package Manager 缓存** 和 **CocoaPods 下载缓存**。项目里的 `Pods`、`.build` 目录，见[旧项目构建目录的批量清理](\u002Fblog\u002Fclean-project-build-artifacts)。\n\n> [!NOTE]\n> 浣熊管家不会删除 Archives、模拟器设备和 SwiftUI 预览数据，也不会处理自定义位置的 DerivedData，这几项请按上一节手动处理。清理会直接删除文件，不进入废纸篓，结果记录在[操作历史](\u002Fdocs\u002Fgetting-started#history)中。\n\n想知道这些目录在你的 Mac 上占了多少，可以[下载浣熊管家](\u002Fdownload)运行一次深度清理，扫描本身不会删除任何内容。下面的演示窗口使用示例数据，其中的条目、大小和勾选状态仅作示意。\n\n::demo deepClean\n\n## 清理清单 {#checklist}\n\n1. 保存工作，退出 Xcode 和模拟器。\n2. DerivedData 和模拟器缓存可以直接清理。\n3. 运行时和设备支持文件只保留项目仍要支持的系统版本。\n4. 删除运行时后，运行一次 `xcrun simctl delete unavailable`。\n5. Archives 只在 Organizer 中逐个确认后删除。\n\n## 常见问题 {#faq}\n\n### 删除 DerivedData 会影响源码或 Git 吗？ {#faq-source-code}\n\n不会。DerivedData 只存放生成的内容，源码、Git 历史、证书和描述文件都在别处。代价是下一次完整构建和索引会慢一些。\n\n### 为什么清理后没多久又涨回去了？ {#faq-grows-back}\n\n这是正常现象。只要你还在构建项目、使用模拟器，Xcode 就会重新生成这些数据。与其频繁清空正在使用的缓存，不如定期删掉不再用的系统版本和旧项目的数据。\n\n### 运行时删错了怎么办？ {#faq-runtime-mistake}\n\n在 **Xcode → Settings → Components** 中重新下载对应版本即可，代价只是下载时间。如果整台 Mac 的空间都很紧张，可以先看[Mac 储存空间不足时的清理顺序](\u002Fblog\u002Fmac-storage-full)。\n",1793257450428]