Mac 上的 iOS 模拟器占用:哪些能删,哪些删不掉
先从 Xcode 设置的“组件”面板移除不再需要的运行时。模拟设备、缓存和运行时镜像是不同的数据;抹掉设备前先保存需要的测试数据,完成受支持的移除后再核对实际可用空间。下面的数字来自 2026 年 8 月的一台 Mac,不代表所有 Xcode 或 macOS 版本都会得到同样结果。
要点
- 简单说: 先到 Xcode 设置 → Components,删掉不再需要的运行时。
- 注意: 设备、缓存和运行时镜像是不同种类的数据。抹掉设备前先保存测试数据,删完再看实际的可用空间。
- 用 Mint: Mint 为每一项列出适用的操作。删不掉的内容会显示大小和原因,不给勾选框。
先分清是哪种存储,再选操作
下面的数据是 2026 年 8 月 20 日至 26 日在一台开发者 Mac 上测的,只反映那台机器当时的安装。用跟版本有关的命令之前,先看看当前 Xcode 的组件列表,以及你装的 simctl 的帮助。别为了强删去关掉系统完整性保护。
模拟器的空间分布在哪儿
一共四个地方,各有各的规矩。已注册的运行时是磁盘镜像,由 CoreSimulator 挂载,实际内容通常在 /System/Library/AssetsV2 下,或者在 /Library/Developer/CoreSimulator/Cryptex/Images/bundle 里的一个 Cryptex 包中。设备数据,也就是每台模拟 iPhone 里装的 App 和文件,在 ~/Library/Developer/CoreSimulator/Devices。每次启动模拟器会重建的共享缓存就在旁边。如果某次运行时安装出了岔子,还可能在 /Library/Developer/CoreSimulator/Images/Inbox 留下暂存副本。
在一台开发者的 Mac 上,这些加起来约 35 GB,其中 16.9 GB 用任何命令都回收不了。分清眼前是哪一堆,就占了大半工作量,因为文件多大,跟它能不能删没有关系。
怎样才能把空间要回来
要通过 CoreSimulator 来删,这些文件归它管。它维护着一份登记表,绕过它直接删文件,登记表里就会留下一堆已经不存在的运行时。
- 打开 Xcode 设置 → 组件(旧版本叫 Platforms)。留下当前测试要用的运行时版本,不用的点它的信息或删除按钮移除。
- 抹掉或删除模拟设备之前,先存好要用的 App 数据,再退出正在运行的模拟器。用 xcrun simctl list devices 找到具体是哪台设备,然后看看你装的版本里 xcrun simctl help erase 或 xcrun simctl help delete 的说明。这两种操作都会清掉设备数据。
- 清共享缓存是可选的进阶操作。先看 xcrun simctl runtime help,因为我们测试用的 dyld_shared_cache 子命令跟工具版本有关。实测腾出的 3.04 GB 只是暂时的,启动模拟器时会重建需要的缓存。
- 再看一次可用空间,并启动一台留下的模拟器。空间要是没回来,去看组件列表和报错信息,别反复强删。登记表里删掉了,不代表底层镜像也没了。
删不掉的那些,以及为什么
/System/Library/AssetsV2 下的运行时内容带着 SIP restricted 标记。用 xcrun simctl runtime delete <运行时 UUID> 删除,会释放注册、卸载挂载,但磁盘上那个文件夹还在,可用空间一点没变。我们在同一台机器上验证了两次。
Inbox 里的暂存副本更奇怪。其中两个各 8.22 GB,没有特殊文件标记、扩展属性或 ACL,所以不受 SIP 保护。也没有任何东西引用它们:hdiutil 和 diskutil 都显示没有挂载,运行时列表里的磁盘镜像数是零。重启之后它们还在,我们试过的办法也都删不掉。运行 xcrun simctl runtime add <文件> --move,等于请 Apple 自己那个有权限的守护进程把镜像搬走。它会接管运行时,然后打印出:「--move was specified but unable to remove original file: (1) Operation not permitted」。权限比你的 shell 还高的守护进程都删不掉这个文件,root 的 rm 也不会更管用。
这是在一台 Mac 上、用我们测试的那些操作得到的结果,不能证明每个版本里的同类文件都永远回收不了。你遇到的情况如果不一样,以当前 Xcode 的管理方式和 Apple 的支持说明为准。
旁边还值得看一眼的
其他 Xcode 版本留下的旧 Metal 工具链,每个约 670 MB,同样只能在「组件」面板里、在「为其他 Xcode 版本安装」那一栏移除。xcodebuild -deleteComponent 这条命令只作用于当前版本,而且不接受版本参数,所以够不着这些残留。
DerivedData 和 Archives 在完全不同的地方,规则也不一样。DerivedData 是可重建的,关掉 Xcode 之后删除是安全的。Archives 里放着你读已发布版本崩溃报告所需要的符号文件,近期的那些应该留着。
Mint 怎么处理
Mint 列出模拟器占用时,每一项都配上对它有效的操作。能通过 CoreSimulator 删除的运行时,就走那条路径。AssetsV2 下的内容会显示体积和原因,但不给勾选框,因为给了勾选框就等于说它能删。已经输过管理员密码、仍然被拒的暂存副本,Mint 会记下来,同一个文件不会再问你要第二次密码。
权限、正在运行的进程或扫描之后的变化,仍可能让操作被拒。请核对最终结果,别默认勾选的每个字节都已经腾出来了。
常见问题
我能直接手动删掉 ~/Library/Developer/CoreSimulator 吗?
别手动删整个 CoreSimulator 文件夹。先确认是哪台设备或哪个运行时,存好要用的设备数据,再用你装的 Xcode 或 simctl 支持的方式删除。
为什么删掉一个运行时,释放的空间比它的体积小?
运行时的注册、挂载的镜像和底层内容是分开的。在 Xcode 的组件管理里删完,还要再看看可用空间;我们实测时遇到过注册没了、底层内容还在的情况。
删掉共享缓存安全吗?
在我们测试的 Mac 和工具版本上,关掉所有模拟器之后可以删。先看一下你装的版本的 simctl runtime 帮助。需要的缓存会重建,所以腾出的空间是暂时的。
Inbox 文件夹里那些 .cxbd 文件呢?
它们可能是运行时安装留下的暂存副本。我们测试的那几个,文中列出的操作都删不掉,但这不代表每个 .cxbd 文件都没在用,或者永远回收不了。先看当前 Xcode 的管理选项和 Apple 的支持说明。
看看你的 Mac 上到底有哪几种模拟器文件
在本机免费扫描一次,分清模拟器存储、受保护文件和其他开发数据,再决定怎么处理。