如何清理 Mac 上的旧 iOS 模拟器运行时
Xcode 的存储占用分成运行时、模拟器设备、DerivedData、DeviceSupport 和 Archives。它们在 Finder 里看起来相近,但由不同组件管理,删除后的恢复成本也不一样。
先测量,再删除。一个运行时镜像可能占几 GB,每台模拟器设备还会积累 App、缓存和测试数据。删错对象不仅要重新下载,还可能丢掉复现问题需要的测试状态。
运行时镜像和模拟器设备不是一回事
运行时是下载到本机的 iOS、watchOS、tvOS 或 visionOS 系统镜像;模拟器设备则是使用某个运行时启动的虚拟 iPhone、iPad 或其他设备。多个模拟器设备可以共用一个运行时。
通过 Xcode 或命令行删除对应对象
下面的命令只会删除运行时已经不可用的设备记录:
xcrun simctl delete unavailable
它不会卸载运行时镜像。要查看并移除已经下载的运行时,请用 Xcode > Settings > Components。Xcode 会显示平台版本和可回收大小,也能正确更新 CoreSimulator 的记录。不要直接删除 /Library/Developer/CoreSimulator 或 /System/Library/AssetsV2 里的运行时文件夹。
只想清掉测试状态时,重置具体设备
某台模拟器里的 App 数据已经混乱时,启动这台设备,在 Simulator 中选择 Device > Erase All Content and Settings。这会重置当前虚拟设备,不会删除共用的运行时。它相当于抹掉一台测试手机,已安装 App、钥匙串、数据库和其他设备状态都会消失。
如果只想删除某一台虚拟设备,可在 Window > Devices and Simulators 中按名称检查,不必一次删除所有不可用设备。
DerivedData、DeviceSupport 和 Archives 价值不同
DerivedData 是可以重新生成的构建产物和索引。先在 Xcode > Settings > Locations 中找到不再使用的项目目录;清空全部内容会让所有项目重新构建和索引。
DeviceSupport 保存实体设备和系统版本的符号与支持数据,旧目录仍可能用于调试。Archives 更需要谨慎:已经分发的构建依赖归档内匹配的 dSYM 来解析后续崩溃。请在 Window > Organizer 中检查,仍有用户运行的版本都应保留对应归档。
Mole 的清理确认页可以列出被新版本取代的模拟器运行时,并通过 Apple 的 simctl runtime delete 删除你选中的项目。分析页则能画出 DerivedData、CoreSimulator 和 Archives 的实际大小,帮你判断究竟哪一类占空间。设备、组件和发布归档仍应回到 Xcode 管理。
更完整的开发者存储流程,包括归档与 dSYM 的边界,可看如何安全清理 Xcode 文件。
常见问题
删除模拟器会删掉项目代码吗?
不会,项目源代码不在模拟器中。但虚拟设备里的 App 和测试状态会被删除,需要复现问题的数据要先保留。
可以直接删除整个 DeviceSupport 吗?
不要把它当成可以整包清空的缓存。旧系统版本的目录也可能用于实体设备调试或崩溃解析,应逐项检查。
Mole 能找到旧的模拟器运行时吗?
可以。Mole 会列出被取代的已下载运行时,并通过 simctl 删除选中项;它不会手动删 CoreSimulator 文件夹,也不会替你判断仍在使用的测试运行时。