開發者儲存空間指南

Xcode 把我的空間都佔走了

在現役的 Mac 上是二十到六十 GB,分散在六個資料夾,而 Xcode 從來不會自己清理其中任何一個。以下逐一說明各自的用途,以及你能不能刪。

14 天免費試用,不必信用卡。 之後一次 15 美元,可用於 3 台電腦。

Bytesweep 依大小列出 Xcode 的 DerivedData 與裝置支援資料夾

先量一下

一個指令就能看出總量在 Xcode 各資料夾之間怎麼分配,你也就知道該從哪一個下手:

du -sh ~/Library/Developer/Xcode/* ~/Library/Developer/CoreSimulator 2>/dev/null | sort -h

六個資料夾

DerivedData — 通常最大 · 可安心刪除

建置中間檔、索引與模組快取,每個專案一個資料夾,而且會永久保留,連你早就刪掉的專案也在內。

~/Library/Developer/Xcode/DerivedData

刪掉的代價只有一次較慢的建置,別無其他。它也是 Xcode 行為異常時的標準解法,所以每個 iOS 開發者都把這個路徑背得滾瓜爛熟。

iOS DeviceSupport — 很大 · 可安心刪除

從你曾接過的每一台實機複製來的符號快取,每個 iOS 版本一個資料夾。每個好幾 GB,而且會為你早就不用的手機一直累積。

~/Library/Developer/Xcode/iOS DeviceSupport

下次你接上該 iOS 版本的裝置時,Xcode 會重新複製一次 — 只是第一次連線比較慢,沒有其他代價。

CoreSimulator 裝置 — 很大 · 大致安全

每個模擬裝置都有自己的檔案系統,而且從不會被回收。請使用 Xcode 自己的指令,而不是刪除資料夾,好讓它的資料庫保持一致:

xcrun simctl delete unavailable

若要更進一步, xcrun simctl delete all 會移除每一個模擬裝置。模擬器執行環境本身則在下列位置管理: Xcode → 設定 → 元件

Archives — 小但無可取代 · 請保留

你曾經出貨的每一個版本,連同它的 dSYM 除錯符號。

~/Library/Developer/Xcode/Archives

這一個請別動。 沒有已發行版本的 dSYM,你就無法為正在使用該版本的使用者的當機報告做符號化 — 堆疊追蹤會永遠停留在十六進位位址。如果非得在這裡挪出空間,請保留每一個仍在外流通版本的封存。

下一次 iOS 更新後,再來一次

DerivedData 在你建置的那天就回來了,DeviceSupport 每接一台裝置就變大 — 這是一件反覆出現的雜事,不是一次性的解決。Bytesweep 一次掃描就找出全部六個資料夾,把 Archives 標為待檢視而非待清除,而且任何清理都能在七天內復原 — 這在你清錯專案的那天格外重要。

Swift Package Manager 快取 — 可安心刪除

複製下來的相依套件儲存庫,需要時會重新取得。

~/Library/Caches/org.swift.swiftpm

舊的模擬器執行環境與舊版 Xcode — 小心處理即可

一份舊的 Xcode.app 本身就有 15 GB,它的執行環境再多幾 GB。留下你為了舊專案仍需要的版本;其餘用 Finder 刪除,然後在「設定 → 元件」中移除相關的執行環境。

兩個能把它壓住的習慣

以專案為單位刪 DerivedData,不要整包刪

每個子資料夾都以專案命名。清掉整個資料夾,會逼得你手上正在做的每一個專案重新建置;只清掉去年就結束的專案那幾個,則完全沒有代價。

每次 iOS 更新後檢查 DeviceSupport

它會依 iOS 版本、依你接過的每一台裝置各增加一個資料夾,所以整年都在悄悄往上爬。每年九月花兩分鐘,就能避免它變成 30 GB。

一次找出六個

Bytesweep 會依名稱辨識出 Xcode 的每個資料夾、顯示其大小,並把 Archives 標為值得檢視而非待清除。你清掉的一切都會進入還原點,所以七天內復原只要一次點按。

相關頁面: Docker disk space · 完整的 Mac 清單

常見問題

刪除 DerivedData 安全嗎?

安全。它完全是從你的原始碼衍生而來,名字說的就是這個意思。唯一的代價是每個受影響專案的下一次建置會是完整建置。

刪掉 DeviceSupport 會讓我的手機無法除錯嗎?

不會。下次你接上該 iOS 版本的裝置時,Xcode 會重新複製符號。之後的第一次連線會多花幾分鐘。

我可以刪掉 Xcode 的封存嗎?

可以,但請先想清楚。封存裡有你已出貨版本的 dSYM 檔案,沒有它們,那些版本的當機報告就無法做符號化。仍在使用者手上的請保留;舊的測試版可以放心刪。

為什麼 Xcode.app 本身這麼大?

大約 15 GB,因為它內含蘋果所支援的每個平台的工具鏈、SDK 與模擬器執行環境。你可以在「Xcode → 設定 → 元件」移除沒在用的模擬器執行環境,但應用程式套件本身就是那麼大。

Xcode 會自動清理這些嗎?

不會。這些資料夾都沒有大小上限,也沒有到期時間。這正是這一頁存在的原因。