Xcode 佔用太多空間:哪些可以安全刪除
Xcode 本身就要好幾 GB,而它留下的東西往往大得多:建置資料夾、模擬器、模擬器執行階段,以及你接過的每台裝置的除錯符號。
簡單說:DerivedData、Device Support 資料夾、預覽用的模擬器,以及不再使用的模擬器,都可以安全移除:Xcode 需要時會重新建置或下載。封存檔(Archives)除非確定用不到,否則請保留。
Xcode 的這些資料都放在哪裡?
~/Library/Developer/Xcode/DerivedData:你開過的每個專案的建置產物和索引。安全:下次建置時會重建,只是那一次會比較慢。~/Library/Developer/Xcode/iOS DeviceSupport(以及watchOS、tvOS、macOS和visionOS對應的資料夾):從你連接過的每台裝置、每個系統版本拷貝過來的除錯符號。安全:下次連接該裝置時會再拷貝一次。~/Library/Developer/CoreSimulator/Devices:你的模擬器,以及安裝在裡面的 App 和資料。執行階段已經不在的模擬器,只是白佔空間。- 模擬器執行階段(給模擬器用的一整套 iOS、watchOS 或 visionOS,每個都有好幾 GB)。macOS 會把它們算進「系統資料」,而不是 Xcode。
~/Library/Developer/Xcode/UserData/Previews:為 SwiftUI 預覽建立的模擬器。安全:會自動重新建立。~/Library/Developer/CoreSimulator/Caches和~/Library/Developer/XCTestDevices:模擬器快取,以及平行測試時複製出來的模擬器。安全。~/Library/Developer/Xcode/Archives:你為 App Store 或 TestFlight 封存過的每一個建置版本。需檢查:請見下文。
DerivedData 要怎麼刪除?
- 結束 Xcode。
- 在 Finder 中選擇「前往」›「前往檔案夾」(Shift-Command-G),貼上
~/Library/Developer/Xcode/DerivedData。 - 選取裡面的資料夾,移到垃圾桶。要釋放空間,請清空垃圾桶。
在「終端機」中,下面這行效果相同,但會跳過垃圾桶,所以無法還原:
rm -rf ~/Library/Developer/Xcode/DerivedData/*
舊的模擬器和模擬器執行階段要怎麼移除?
交給 Xcode 自己的工具處理,模擬器清單才不會亂掉:
xcrun simctl delete unavailable
xcrun simctl runtime list
xcrun simctl runtime delete <runtime identifier>
第一行會移除執行階段已不再安裝的模擬器。後兩行會列出已安裝的執行階段,並移除一個你不再用來測試的。你也可以在 Xcode › Settings › Components(舊版 Xcode 為 Platforms)中移除執行階段,在 Window › Devices and Simulators 中移除個別模擬器。
iOS DeviceSupport 可以刪除嗎?
可以。每個資料夾存放一台裝置、一個系統版本的符號,讓 Xcode 在你用那台裝置除錯時,能顯示看得懂的堆疊追蹤。你的裝置已經不再執行的版本,對應的資料夾就可以刪除。如果之後又接上這樣的裝置,Xcode 會重新拷貝符號,大約要花幾分鐘。
Xcode 封存檔(Archives)該刪嗎?
只刪你確定不需要的。封存檔保存了你發布的那個建置版本本身,以及它的除錯符號(dSYM)。少了它,你就無法把那個版本的當機報告轉成看得懂的堆疊追蹤,也無法再次匯出那個建置版本。仍有人在使用的版本,就保留它的封存檔,這是個不錯的原則。
為什麼過一週空間又被吃回去了?
DerivedData 每次建置都會再長大,新版 Xcode 或 iOS 也會帶來新的執行階段和 Device Support。這很正常:這些資料夾本來就是快取。偶爾清一次,或在磁碟快滿時清一下就夠了。