先看结论:删 Runtime,不删 AssetsV2
Xcode 的 Simulator Runtime 是某个平台与系统版本的模拟运行环境,例如 iOS、watchOS、tvOS 或 visionOS Runtime。它通常比单个模拟设备占用更大;删除一个 Runtime 会让依赖该版本的模拟设备无法继续运行,之后若再次需要就要重新下载。
Apple 提供的主要管理入口是 Xcode → Settings → Components。这里会列出已安装组件,并显示移除后可回收的空间。不要把 /System/Library/AssetsV2 当作普通下载目录手动清空:其中还可能有软件更新、语音、字体和其他 macOS 管理的资产。
| 对象 | 作用 | 建议 |
|---|---|---|
| Simulator Runtime | 提供一个平台与系统版本的模拟环境 | 确认不用后从 Components 按版本删除 |
| 模拟设备 | 在某个 Runtime 上保存具体设备状态 | 只删设备不会移除整个 Runtime |
| DerivedData | 项目构建中间产物 | 与 Runtime 分开判断 |
| AssetsV2 顶层目录 | macOS 管理多种系统资产 | 不要整体手删 |
第一步:记录现状和仍需测试的系统版本
打开苹果菜单 → 系统设置 → 通用 → 储存空间,记录当前可用容量。再列出正在维护的项目、最低部署版本、客户仍在使用的系统版本,以及团队或持续集成是否依赖本机 Runtime。
不要只按“版本旧”决定删除。一个旧 Runtime 可能仍用于复现线上问题;一个较新的 visionOS Runtime 如果从未使用,反而可能更适合移除。若无法确认项目要求,先保留并询问项目负责人。
- 记录 df -h / 的 Available 数值。
- 打开项目的部署目标与测试计划,列出仍需覆盖的系统版本。
- 退出正在运行的 Simulator 和调试会话。
- 在 Xcode → Settings → Components 记录已安装 Runtime 与界面显示的可回收空间。
第二步:在 Xcode Components 中删除
在 Xcode 中选择 Xcode → Settings,然后打开 Components。Apple 将 Simulator Runtime 列在 Other Installed Platforms;点击目标组件旁的信息按钮,在确认版本与影响后选择 Delete。不同 Xcode 版本的文字与布局可能略有变化,但都应从组件管理入口识别目标。
一次只处理一个明确的 Runtime。删除期间不要退出 Xcode、强制结束 CoreSimulator 进程或同时手动移动相关目录。若按钮不可用或组件状态正在变化,先等待当前安装或删除完成。
- 找到 Other Installed Platforms。
- 核对平台、系统版本与预计回收空间。
- 确认当前项目不再需要该版本。
- 点击信息按钮并选择 Delete。
- 等待组件状态更新,再处理下一个版本。
需要终端时,先只读列出 Runtime
终端适合核对 Xcode 已登记的 Runtime,而不是绕过组件管理。先运行 xcrun simctl runtime list -v,记录平台、版本、build、UUID、状态与最后使用时间。若 xcrun 或 simctl 不存在,不要为了删文件临时安装整套 Xcode;回到系统储存空间和实际应用入口继续判断。
只有你已经确认单一 Runtime 的 UUID、理解它会影响哪些模拟设备,并且 Components 无法完成同一操作时,才考虑 xcrun simctl runtime delete RUNTIME-UUID。RUNTIME-UUID 是占位符,不能原样复制;不要使用 all,也不要直接递归删除 Runtime 的磁盘路径。
- xcrun simctl runtime list -v
- 复制并再次核对目标 Runtime 的完整 UUID。
- 关闭使用该 Runtime 的 Simulator 与调试任务。
- 只对确认的 UUID 执行删除,不使用通配符或批量目标。
删除后怎么证明空间真的回来了
命令返回成功或组件从列表消失,只能证明删除流程已执行,不能单独证明磁盘已经回收预期容量。重新打开 Components,确认目标不再显示为已安装;再运行 runtime list 和 df,与操作前的记录比较。
macOS 的“系统数据”分类可能延迟重新计算,因此应把文件系统可用空间作为主要结果,把储存分类变化作为辅助观察。如果状态仍显示删除中,先等待;不要重复提交或手动杀进程。
- 重新运行 xcrun simctl runtime list -v。
- 运行 df -h /,比较 Available 数值。
- 在 Xcode 中启动一个保留的 Simulator,确认现有项目仍可运行。
- 记录删除的具体版本与实测释放量,而不是引用界面的预计值。
删错了怎么恢复,以及怎样避免反复下载
如果项目后来需要被删除的版本,可回到 Components,使用 Add Platforms 或相应的 Get 按钮重新下载。Apple 也支持用 xcodebuild 下载与导入平台组件,但普通单机使用优先采用图形界面,减少选错架构或 Xcode 版本的风险。
不要为了每次腾空间都删除近期仍会使用的 Runtime。更稳妥的策略是保留当前开发版本、最低支持版本和一个用于复现问题的关键版本,其余版本按项目结束时间定期复核。Apple silicon 机器默认下载适合本机架构的较小变体时,也不要无理由改为 universal 变体。