AskClean問淨

Xcode iOS DeviceSupport 可以刪嗎?安全清理指南

AskClean 團隊 · 更新於 2026-11-02

已經不再除錯的系統版本,其 DeviceSupport 資料夾可以刪除,但目前實體裝置使用的版本請保留。之後對應的裝置重新連接時,Xcode 可以再準備一次支援檔案,所以刪除的代價是日後多等一下,而不是遺失原始碼。

開發用筆電與手機周圍,環繞著目前使用中與已過時的裝置除錯符號方塊
保留目前測試範圍內實體裝置所需的支援檔案;過時的系統版本資料夾則另外逐一檢查。

DeviceSupport 裡面到底是什麼

Xcode 對實體 iPhone、iPad、Apple Watch 或 Mac 除錯時,需要該裝置作業系統版本的支援資料。在用過新舊不同版本 Xcode 的 Mac 上,你可能會在 ~/Library/Developer/Xcode/iOS DeviceSupport 底下找到依版本分開的資料夾,旁邊還有同層的 macOS DeviceSupport 目錄。

這些檔案讓 Xcode 在連接除錯器時,能理解系統框架與符號。它們不是你 App 的原始碼,不是模擬器裝置,也不是已發佈 App 對應的 dSYM。這三類檔案的刪除代價各不相同,所以安全清理的第一步,就是把它們分開。

每次連接執行不同系統版本或組建的裝置,這個目錄就會變大。經過好幾個發佈週期、用多支手機測試的開發者,可能還留著目前測試裝置上早已沒有的版本的支援資料。

找到資料夾,列出要保留的版本

檢查之前,先結束 Xcode 並拔除裝置。在 Finder 按 Command-Shift-G,輸入 ~/Library/Developer/Xcode,找找 iOS DeviceSupport 與 macOS DeviceSupport。實際有哪些目錄,取決於這台 Mac 用過哪些平台、Xcode 版本與實體裝置。

把 Finder 切換成列表顯示方式,並在「顯示方式選項」中勾選「計算所有大小」。習慣用「終端機」的話,可以執行 du -sh ~/Library/Developer/Xcode/*DeviceSupport* 取得唯讀的摘要;如果萬用字元沒有比對到任何項目,shell 可能會顯示錯誤,這只代表對應的目錄不存在。

接著盤點仍需要除錯的實體裝置。在每台裝置上前往「設定」>「一般」>「關於本機」查看軟體版本,或連接後在 Xcode 的 Window > Devices and Simulators 查看。與目前測試範圍內的系統版本和組建相符的支援資料夾,都要保留。

  1. 結束 Xcode 與 Simulator,並拔除實體測試裝置。
  2. 在 Finder 開啟 ~/Library/Developer/Xcode,測量每個 DeviceSupport 資料夾。
  3. 列出每台預計還要除錯的實體裝置目前安裝的系統版本。
  4. 保留相符的版本,以及團隊近期需要的 Beta 或相容性測試目標。
  5. 只把沒有對應裝置、已過時的版本資料夾丟到垃圾桶;在下一次實機除錯確認正常之前,先不要清空垃圾桶。

刪除以後會發生什麼

如果之後重新連接一台支援資料夾已被你刪除的裝置,Xcode 可能會顯示準備中的訊息,同時還原或取得所需的支援檔案。Apple 曾在 Xcode 版本說明的因應措施中記載這種重新複製的行為:刪除 iOS DeviceSupport 後重新連接裝置,Xcode 就會再複製一次符號。

所以 DeviceSupport 大致上可以靠重新連接取回,但並不是任何時候刪都沒有代價。重新產生需要時間,也需要裝置與相容的工具,還可能在你趕截止日期時打斷除錯。請保留目前測試裝置的版本,不要為了省空間把資料夾清到一個不剩。

至於已經無法重現、也沒有裝置可以重新連接的舊系統組建,就在「日後用到的小機率」和它佔的空間之間權衡。保守的做法是先把資料夾移到有備份的外接儲存裝置;日後調查舊問題需要時,再放回原本的目錄。

Apple 記載的「刪除後重新連接」做法,是針對特定 Xcode 版本的因應措施。請把它當成支援檔案可以重新準備的證據,而不是建議你清空目前所有的 DeviceSupport 資料夾。

別把這四類 Xcode 儲存空間搞混

DeviceSupport 屬於實體裝置除錯。模擬器執行階段是透過 Xcode 的 Settings > Components(Xcode 14–15 為 Platforms)安裝的平台映像,個別模擬器裝置及其 App 則位於 CoreSimulator。刪除 DeviceSupport 不會解除安裝模擬器執行階段。

DerivedData 存放專案的建置產物與索引,會從原始碼重新產生,通常是想低風險回收空間時第一個清理的 Xcode 類別。DeviceSupport 在許多情況下也能取回,但要等 Xcode 為對應的實體裝置重新準備之後。

封存(Archives)是代價最高的類別。一份 .xcarchive 可能保存著已發佈建置的確切 App 二進位檔與對應的 dSYM。絕不要因為某份封存的版本號看起來像某個過時的 DeviceSupport 資料夾,就把它刪掉——兩者的名稱描述的是完全不同的東西。

DeviceSupport 不一定是真正的空間大戶

Xcode 目錄很大,不代表 DeviceSupport 就是主因。請分別測量 DerivedData、Archives、CoreSimulator、DocumentationCache 與 DeviceSupport。清掉不大的符號資料夾,卻留著用不到的模擬器執行階段,可能省不了多少空間,還白白增加之後的準備時間。

如果啟動磁碟已經滿到危急,先從風險較低的項目騰出工作空間:垃圾桶、「下載項目」、舊的 DerivedData,以及檢查過的無法使用模擬器裝置。接著再依系統版本檢查 DeviceSupport;封存則留到專門的發佈保留盤點時再處理。

清理後再測量一次。macOS 的「儲存空間」設定可能更新得比較慢,Finder 的資料夾大小或 du 的前後比較會更直接。不要套用放諸四海皆準的 GB 數字:能回收多少,就是你那些過時版本資料夾實際佔用的大小。

AskClean 如何把這些差異攤開來

AskClean 會把 iOS 與 macOS DeviceSupport 當成獨立的 Xcode 項目測量,並逐一列出每個版本:每種裝置機型最新的版本預設不勾選,較舊的版本則預先勾選,交給你檢查。它不會把 DeviceSupport 和 DerivedData 混在一起,也不會把封存說成同等的快取。

掃描結果會說明 DeviceSupport 日後需要重新準備的代價,刪除任何東西之前都會先請你確認;確認後的刪除是永久的,不會移到垃圾桶。封存則套用更嚴格的「不可復原」標示。這讓決策一目了然,但最終仍以你目前實體裝置的測試範圍為準。

DeviceSupport 只是 Xcode 儲存空間的其中一層

用位置與復原代價來判斷,避免刪錯東西。

類別常見位置刪除後果
實體裝置支援檔案~/Library/Developer/Xcode/iOS DeviceSupport相符的裝置重新連接時,Xcode 可能會再準備一次。
模擬器資料~/Library/Developer/CoreSimulator刪除裝置會一併移除裡面安裝的 App 與測試資料。
DerivedData~/Library/Developer/Xcode/DerivedData專案會從原始碼重新建置並重建索引。
封存與 App dSYM~/Library/Developer/Xcode/Archives已發佈建置的確切證據可能再也無法取回。

常見問題

iOS DeviceSupport 可以安全刪除嗎?

不再除錯的系統版本資料夾,一般都可以移除;目前實體裝置使用的版本請保留。被刪除的版本日後如果又需要,對應裝置重新連接時,Xcode 可能得再準備或複製一次支援檔案。

DeviceSupport 裡有我 App 的 dSYM 嗎?

它服務的是實體裝置與作業系統的除錯,不能取代已發佈建置所保存的 App dSYM。要把正式版的當機報告符號化,請保留對應的封存或 dSYM。

刪除 DeviceSupport 會移除模擬器執行階段嗎?

不會。模擬器執行階段與虛擬裝置資料,是透過 Xcode 的 Settings > Components、simctl 與 CoreSimulator 目錄另外管理的。

為什麼 Xcode 又把資料夾建回來了?

因為 Xcode 需要連接中實體裝置的系統組建所對應的支援檔案。缺少時,它可能會重新準備或複製,所以只要你繼續對同樣的版本除錯,這些空間就會再被佔用。

參考來源

把 Xcode 相關清理一次看完