# 如何清理 Mac 上的舊 iOS 模擬器執行階段

> 分清模擬器裝置和執行階段映像，再透過 Xcode 或 simctl 清理，同時保留可能仍需要的封存與符號。

Published: 2026-09-01 | Updated: 2026-09-30

Xcode 的模擬器執行階段可能占用數 GB，每台虛擬裝置還會累積 App 和測試資料，清理前要先分清這兩種內容。

Xcode 的儲存空間分成執行階段、模擬器裝置、DerivedData、DeviceSupport 和 Archives。它們看起來相近，但管理方式與還原成本不同，應先測量再刪除。

## 先建立 Xcode 儲存空間清單

Apple 建議在 [Xcode 的 Components 設定](https://developer.apple.com/documentation/xcode/downloading-and-installing-additional-xcode-components)管理額外平台元件。確認不可用裝置後再執行：

```bash
xcrun simctl list runtimes
xcrun simctl list devices
```

| 類型 | 移除後的成本 | 何時保留 |
|---|---|---|
| 執行階段 | 要重新下載，依賴裝置會不可用 | 測試矩陣或錯誤重現仍需要 |
| 模擬器裝置 | App、鑰匙圈、資料庫與測試狀態消失 | 還要重現問題 |
| DerivedData | 專案重新建置與索引 | 目前建置仍使用 |
| DeviceSupport | 可能失去對應真機版本的離線除錯資料 | 仍連接該裝置或分析相關崩潰 |
| Archives | 可能失去已發行版本對應的 dSYM | 使用者仍可執行該版本 |

## 為什麼 iOS 模擬器會佔用這麼多空間

執行階段是下載的 iOS、watchOS、tvOS 或 visionOS 系統映像；模擬器裝置是使用其中一個執行階段的虛擬裝置。多台裝置可以共用同一個執行階段，兩者不能當成同一種快取。

## 如何透過終端機刪除未使用的模擬器

前面的兩條唯讀指令用來核對已安裝的執行階段與裝置，不會刪除任何內容。



在 **Xcode > Settings > Components** 檢查和移除已下載的執行階段，不要直接刪除 `/Library/Developer/CoreSimulator` 或 `/System/Library/AssetsV2` 裡的資料夾。

### 目前平台的最新版本
開發中的平台至少保留最新執行階段。

### 仍要重現問題的舊版本
測試計畫、CI 或使用者問題仍指向它時，其價值不只是下載時間。

## 單獨移除不可用裝置

檢查清單後，這條命令只刪除執行階段已不可用的裝置記錄，不會解除安裝執行階段。

```bash
xcrun simctl delete unavailable
```

## 清除模擬器快取與 App 資料

只想清除某台裝置的測試狀態時，在 Simulator 中啟動它，再選擇 **Device > Erase All Content and Settings**。這會重設目前裝置，不會刪除共用的執行階段；已安裝 App、鑰匙圈和資料庫都會消失。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/xcode-storage-map.webp" width="1360" height="454" loading="lazy" alt="Xcode 開發者目錄分為可重建快取，包括 DerivedData 和模組快取，以及擷取產物，包括 DeviceSupport、Archives 與模擬器。">
  <figcaption>DerivedData 可以重建，Archives、dSYM 和部分裝置支援資料可能長期有用。</figcaption>
</figure>

## 分別管理 DeviceSupport、DerivedData 和 Archives

DerivedData 可重新產生，但整包清空會讓所有專案重新建置和索引。DeviceSupport 可能仍用於實體裝置除錯；已發布版本的 Archives 和 dSYM 可能要用於後續崩潰解析。Mole 可以列出被新版取代的執行階段，並透過 `simctl runtime delete` 移除選取項，其他裝置和歸檔仍應回到 Xcode 管理。

## DeviceSupport 按真機與崩潰需求篩選

資料夾日期舊不代表無用，仍連接的裝置與待分析崩潰決定是否保留。

## Archives 按仍在運行的版本保留

使用者仍在使用的版本，要保留對應的封存檔，除非已確認其他地方保存了該版本的建置產物與 dSYM。

## 可重複的安全清理順序

先退出 Xcode、Simulator 與相關建置，再分別測量五類空間；從 Xcode 設定移除確認不再需要的舊執行階段，檢查裝置清單後才執行 `xcrun simctl delete unavailable`。DerivedData 只清舊專案，DeviceSupport 依真機與崩潰需求篩選，Archives 在 Organizer 按仍在分發的版本保留。重新測量後，空間足夠就停止。

## Mole 的邊界

Mole 只移除 Apple 標記可刪的舊執行階段，不會清空裝置狀態或發行歸檔。

## 常見問題

### 刪除模擬器會刪掉我的專案原始碼嗎？
不會刪除專案原始碼，但虛擬裝置中的 App 和測試狀態會消失。

### 刪除 iOS DeviceSupport 資料夾安全嗎？
不要把整個 DeviceSupport 當成快取。舊系統版本的資料仍可能用於實體裝置除錯或崩潰解析。

### Mole 能找到舊的模擬器嗎？
Mole 會列出被取代的已下載執行階段，並透過 `simctl` 刪除選取項；其他 CoreSimulator 資料夾它不會手動刪，唯一會清的是可重新產生的系統快取 `/Library/Developer/CoreSimulator/Caches`，而且只在沒有模擬器執行時才清。

---

Canonical HTML page: https://mole.fit/tw/blog/how-to-clean-up-ios-simulator-mac
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
