解除安裝 Mac 上的 Xcode,留下還需要的工具和封存
解除安裝 Xcode 前,先分清是以後不再做 Apple 平台開發,還是只想移除體積很大的編輯器,Xcode App、獨立安裝的 Command Line Tools、模擬器執行階段和發佈封存是不同的東西。一起刪除,可能讓原本能用的建置環境失效,也可能丟掉以後還需要的符號檔。
先決定哪些要留下
Apple 的 Command Line Tools 文件區分了獨立工具套件和 Xcode 內的工具,後續工作還需要命令列建置時,可以保留獨立套件,但它不提供所有 Xcode 指令。
| 項目 | 刪除前確認什麼 | 如何復原 |
|---|---|---|
| Xcode.app | 留下仍需使用的其他 Xcode 版本 | 從垃圾桶放回,或重新安裝相容版本 |
| 獨立 Command Line Tools | 後續命令列建置是否需要它 | 重新安裝相容工具套件 |
| 模擬器裝置和執行階段 | 留下測試資料和需要涵蓋的系統版本 | 重新下載執行階段,已清除的裝置狀態需要備份 |
| DerivedData 和快取 | 原始碼和依賴項目是否仍可取得 | 重新建置和建立索引 |
| 封存和簽署資料 | 留下已散佈的建置和需要的簽署材料 | 從核驗過的備份復原,重新建置不能取代 |
如果只是想減少佔用,先看 Xcode 儲存空間清理指南,裡面講的是保留編輯器、逐項處理快取。
留下封存和簽署資料
移除 Xcode 前,先在 Organizer 查看封存,把需要的建置複製到獨立儲存裝置,Apple 的封存指南說明了封存用於散佈,常見的 Archives 位置也是 Mole 明確排除在快取清理之外的目錄。
~/Library/Developer/Xcode/Archives
已經散佈的建置,要連同相符的 dSYM 一起保留,Apple 的除錯資訊說明要求二進位檔和 dSYM 的建置 UUID 相符,所以重新編譯原始碼不能取代那份符號檔。
還在使用的佈署描述檔和簽署身分也要留下,Apple 的簽署資料備份說明指出,重新下載描述檔無法復原遺失的簽署私密金鑰,不要把 App 解除安裝變成鑰匙圈和簽署資料的大清理。
先移除 Xcode App
完成建置和測試,結束 Xcode 和 Simulator,再找到這次確實要移除的 Xcode,按 Apple 的 Finder 移除步驟把它移到垃圾桶。如果裝了多個版本,先核對實際安裝位置,不要把名稱相近的 App 一起刪掉。
確認保留的工具能正常使用之前,讓 App 留在垃圾桶裡,只有它還在那裡時才能放回,之後重新安裝需要相容版本和可用下載,永久刪除前空間還沒釋放,不要把可用空間沒變化誤判成移動失敗。
分開決定 Command Line Tools 的去留
Apple 的開發目錄選擇說明提供這個唯讀檢查。
xcode-select --print-path
回傳 Xcode 內的開發目錄,表示目前命令列工具來自那個 App,回傳 /Library/Developer/CommandLineTools 表示選取了獨立工具套件,錯誤則表示沒有使用中的開發目錄,不是專案原始碼消失了。
如果需要獨立工具套件但還沒安裝,用 xcode-select --install 要求安裝並完成安裝,確認目錄存在後才選擇它。
sudo xcode-select --switch /Library/Developer/CommandLineTools
xcode-select --print-path
第二條指令應該回傳獨立套件路徑,以後想切回去,按 Apple 的同一套步驟選擇實際保留的 Xcode,切換路徑不會替你安裝缺少的工具。
如果後續工作都不需要獨立工具套件,Apple 在安裝文件裡提供移除 /Library/Developer/CommandLineTools 的步驟,確認不再需要才按那個完整路徑處理,這是直接刪除,不經過垃圾桶,不要連更大的 /Library/Developer 一起刪。
模擬器和快取另外處理
移除最後一個 Xcode 前,先按 Apple 的元件管理說明檢查不用的執行階段,目前文件把這個設定面板稱為 Components,執行階段和使用它的虛擬裝置要分開判斷,具體操作見 iOS 模擬器清理指南。
DerivedData 和快取按前面的 Xcode 儲存空間指南處理,只針對確認過的建置輸出,重新產生需要原始碼、依賴項目和相應工具鏈,Archives 和描述檔不在這次清理裡,也不要為了解除安裝收尾就刪除整棵 Developer 目錄。
核對 Homebrew 和剩餘建置
Homebrew 的安裝要求列出,從原始碼建置 formula 需要 Command Line Tools 或 Xcode,所以即使不再開啟 Xcode,獨立工具套件也可能仍有用,但需要 xcodebuild 這類 Xcode 專屬工具的流程,不能靠它取代完整 Xcode。
先核對選取的開發目錄,再試一個以後還要用的代表性建置,失敗就讀錯誤訊息,分清缺工具還是缺專案依賴項目,不急著重新安裝或繼續刪除,通過之前保留可以復原的 App。
Mole 會做什麼
Mole Mac 的軟體允許移除 Xcode,並為它顯示資料確認提示,這是提醒你檢查勾選的資料,不代表關聯目錄都能丟棄。
在清理裡,Mole 的開發快取目錄表排除了 Xcode Archives,內建白名單也包含 Archives 路徑,這個保護不等於封存和簽署資料的備份,解除安裝前仍要分開保存。
常見問題
解除安裝 Xcode 後還能用 Homebrew 嗎?
可以,Homebrew 建置需要工具時,留下或安裝相容的 Command Line Tools,再檢查開發目錄和一個自己實際會用的建置。
刪除 Xcode.app 會刪掉全部模擬器嗎?
不要這樣假設,移除最後一個 Xcode 前,按元件和模擬器指南分開核對下載的執行階段與裝置資料。
留著原始碼就能刪 Archives 嗎?
已經散佈的建置要保留封存和相符符號,重新建置不保證 UUID 相同,重新安裝 Xcode 也不能復原舊簽署私密金鑰。