# 如何安全刪除 Xcode Derived Data：釋放 Mac 儲存空間

> 了解 Xcode Derived Data 包含哪些內容、何時可以刪除，以及如何只清除單一專案或整個資料夾而不影響原始碼

可以，Xcode Derived Data 通常能安全刪除。預設資料夾裡存放的是 Xcode 可以重新產生的建置成果與索引，刪除後**不會影響專案原始碼**，但下一次建置和程式碼索引會花比較久的時間。

真正要留意的是刪除範圍：先結束 Xcode，並確認操作的是 `~/Library/Developer/Xcode/DerivedData`，不要誤刪 Archives、模擬器裝置資料或專案資料夾。

> 本文所列路徑與檢查指令已於 2026 年 8 月 10 日在 macOS 15.7.7、Xcode 16.2 上驗證。Xcode 選單位置可能隨版本調整；若你沒有自訂建置位置，預設 Derived Data 路徑與下方的終端機操作仍然適用。

## Xcode Derived Data 是什麼？

Xcode 會把建置專案與分析程式碼時產生的檔案放進 Derived Data，常見內容包括：

- 編譯成果與建置過程中的中間檔案；
- 用於程式碼導覽、搜尋與自動完成的索引；
- 記錄檔與其他專案建置輔助資料；
- 該工作區在本機簽出的 Swift Package 與相關建置資料。

Apple 文件指出，工作區索引位於各自的 Derived Data 目錄；Xcode 版本說明也曾建議在部分建置問題發生時，清除該專案的 Derived Data 作為排除方式。換句話說，這個資料夾的內容原本就應該能夠重新產生，而不是原始碼的唯一來源。

遇到下列情況時，可以考慮清除：

- 已不再使用的舊專案留下數 GB 的產生資料；
- 建置時反覆使用過期的結果；
- 程式碼自動完成或索引運作異常；
- 更新 Xcode 後，Package 或 Macro 建置失敗；
- 需要釋放磁碟空間，而且可以接受第一次重建較慢。

不要只因為 Derived Data 存在就定期清空。開發中的專案會利用增量建置資料縮短編譯時間；若資料夾不大、運作也正常，刪除它只會用建置時間交換少量磁碟空間。

## 哪些內容可以安全刪除？

<table>
<thead>
  <tr>
    <th>
      位置
    </th>
    
    <th>
      建議
    </th>
    
    <th>
      刪除後的影響
    </th>
  </tr>
</thead>

<tbody>
  <tr>
    <td>
      <code>
        ~/Library/Developer/Xcode/DerivedData/ProjectName-*
      </code>
    </td>
    
    <td>
      可刪除你能確認的單一專案資料
    </td>
    
    <td>
      該專案需要重新建置與建立索引
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ~/Library/Developer/Xcode/DerivedData
      </code>
      
       內的所有內容
    </td>
    
    <td>
      需要完整重設時可以清除
    </td>
    
    <td>
      所有 Xcode 專案都需要重新建置與建立索引
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ~/Library/Developer/Xcode/Archives
      </code>
    </td>
    
    <td>
      不要當成快取刪除
    </td>
    
    <td>
      可能失去用於發佈或當機分析的封存檔，以及對應的除錯符號
    </td>
  </tr>
  
  <tr>
    <td>
      <code>
        ~/Library/Developer/CoreSimulator/Devices
      </code>
    </td>
    
    <td>
      請另外逐項檢查
    </td>
    
    <td>
      可能失去模擬器中的應用程式、設定與測試資料
    </td>
  </tr>
  
  <tr>
    <td>
      Git 儲存庫或專案資料夾
    </td>
    
    <td>
      不要刪除
    </td>
    
    <td>
      這裡才是實際的原始碼與專案設定
    </td>
  </tr>
</tbody>
</table>

清除前也請先查看 Xcode 的 **Settings → Locations**。如果 Derived Data 設為 **Custom**，請使用畫面上顯示的位置，不要直接套用預設路徑。

## 方法一：使用 Finder 清除 Derived Data

如果想在刪除前先看清楚各個專案資料夾，使用 Finder 最直觀。

1. 儲存工作，並停止正在執行的建置或測試。
2. 開啟 **Xcode → Settings → Locations**。
3. 找到 **Derived Data**，按一下路徑旁的箭頭，在 Finder 中顯示該資料夾。
4. 結束 Xcode。
5. 只將有問題或已不再使用的專案資料夾移到垃圾桶。若要完整重設，再移動 Derived Data 資料夾內的所有內容。
6. 重新開啟 Xcode 並再次建置專案。

先移到垃圾桶，可以保留短暫的復原機會。確認專案能正常開啟並重新建置後，再清空垃圾桶。

## 方法二：使用終端機檢查與清除

先確認資料夾及其佔用的總空間：

```bash
du -sh "$HOME/Library/Developer/Xcode/DerivedData"
du -sh "$HOME/Library/Developer/Xcode/DerivedData"/* 2>/dev/null | sort -h
```

每個專案資料夾通常會以可辨識的專案名稱開頭，後面接著一段唯一識別字串。可以先在 Finder 中開啟檢查：

```bash
open "$HOME/Library/Developer/Xcode/DerivedData"
```

若要永久刪除單一專案，請將範例資料夾名稱換成你在輸出結果中看到的完整名稱：

```bash
rm -rf "$HOME/Library/Developer/Xcode/DerivedData/YourProject-xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
```

若要永久刪除預設 Derived Data 資料夾內的所有項目：

```bash
find "$HOME/Library/Developer/Xcode/DerivedData" \
  -mindepth 1 -maxdepth 1 -exec rm -rf {} +
```

這些指令不會經過垃圾桶。按下 Return 前，務必再看一次完整路徑；如果 Xcode 正在建置、測試或建立索引，請不要執行最後一段指令。

## 方法三：先試試 Clean Build Folder

如果只有一個專案出現建置問題，且不需要連同索引及其他工作區資料一起刪除，可以先在 Xcode 中執行 **Product → Clean Build Folder**。Apple 也將這個操作列為疑難排解方式之一。

工作區對應的指令可能如下：

```bash
xcodebuild \
  -workspace YourApp.xcworkspace \
  -scheme YourApp \
  clean
```

這個做法的範圍比刪除整個 Derived Data 資料夾小。它只會要求目前選取的建置系統清除該專案的建置成果，不是針對所有 Xcode 工作區的磁碟清理指令。

## 清除後會發生什麼事？

第一次建置通常會比較慢。Xcode 必須重新建置各個 target、建立索引，還可能需要再次解析或下載 Package 資料。在索引完成前，程式碼自動完成與跳至定義也可能暫時不完整。

專案檔案、Git 歷史記錄、簽署憑證、Provisioning Profile 和 Xcode Archives 都不在預設的 Derived Data 根目錄中。只刪除本文說明的確切路徑，就不會影響這些內容。

如果完整重建後原本的錯誤再次出現，問題根源很可能不是 Derived Data。此時應查看第一個有意義的編譯錯誤、套件相依性解析、目前使用的 Xcode 版本與專案 Build Settings，而不是反覆清除快取。

## 使用 MangoDisk 檢查 Xcode Derived Data

如果希望先確認大小與確切位置，再決定是否清除，[MangoDisk 深度清理](/tw/docs/features/deep-clean)包含專門處理 Xcode Derived Data 的規則。

這項規則刻意將範圍限制得很明確：只處理預設的 `~/Library/Developer/Xcode/DerivedData` 根目錄、要求先關閉 Xcode，而且預設不會選取。它不包含專案原始碼、Archives、簽署資料、模擬器裝置或已安裝的模擬器執行階段。掃描全程在本機進行，清理前也會由你確認結果。完整的確認與清理紀錄流程，請參閱 [MangoDisk 安全性指南](/tw/docs/safety)。

## 常見問題

### Xcode 開啟時可以刪除 Derived Data 嗎？

不要在建置、測試或建立索引期間刪除。請先結束 Xcode，避免清理時檔案仍持續寫入。

### 刪除 Derived Data 能修正所有 Xcode 建置錯誤嗎？

不能。它適合處理過期或狀態不一致的產生資料，但無法修正原始碼錯誤、無效簽署、缺少相依套件或錯誤的建置設定。

### 多久需要清除一次？

只有在能釋放可觀的磁碟空間，或有跡象顯示建置資料已經異常時，才需要清除。每次建置後都刪除正常的 Derived Data 並沒有好處。

### 為什麼清除後資料夾又出現了？

這是正常現象。只要再次建置專案或建立索引，Xcode 就會重新建立 Derived Data。清除的目的是移除舊的產生資料，不是停用之後的建置快取。

## 參考資料

- [Xcode 26 Release Notes：清除 Derived Data 的疑難排解步驟](https://developer.apple.com/documentation/Xcode-Release-Notes/xcode-26-release-notes)
- [Apple Technical Note TN3118：Debugging Your App’s Launch Screen（包含 Clean Build Folder 步驟）](https://developer.apple.com/documentation/technotes/tn3118-debugging-your-apps-launch-screen)
- [Xcode 4 Release Notes：Derived Data 中的工作區索引](https://developer.apple.com/library/archive/documentation/Xcode/Conceptual/RN-Xcode-Archive/Chapters/xc4_release_notes.html)
- [Cargo 快取和 target 資料夾有什麼不同？](/tw/blog/cargo-cache-vs-target-folder)

想先以視覺化方式查看開發工具產生的資料，再決定要移除哪些內容？可以[下載 MangoDisk](/tw)，在本機執行深度清理。
