重裝或清理 Xcode 的完整步驟(詳解)

【新增】
一般清理,

  1. 從 App Store 下載安裝 DevCleaner ,可以清理掉很多。
  2. 命令行作一般清理
  • xcrun simctl list 列出所有 devices / runtimes 等等
  • xcrun simctl delete unavailable 刪除不再可用的模擬器數(shù)據(jù)(實際刪除的是 ~/Library/Developer/CoreSimulator/Devices 的某個子目錄,子目錄名字是該模擬器的UUID)(包括模擬器配置和安裝的 app,不包括模擬器的運行時 runtime)
  • /Library/Developer/CoreSimulator/Profiles/Runtimes,超級占空間的模擬器的 runtime,(用 Finder 或者du -sh *查看占空間情況),F(xiàn)inder 打開文件夾后刪除,或者sudo rm -rf 某個具體的模擬器運行時,反正得輸入開機密碼。
  1. Xcode下載資料的緩存 ~/Library/Caches/com.apple.dt.Xcode,這個目錄下的Downloads 子目錄可能占了很多空間,建議清空。

【原文】
徹底清理
直接更新Xcode會將配置信息和舊模擬器都保留,有時會產(chǎn)生一些無法推測原因的混亂。
如果你想安裝一個全新的Xcode,請按下面的步驟進行:

  1. 刪除App
    移除 /Applications/Xcode.app,并從垃圾桶移除(若不清除會影響后續(xù)的find結(jié)果;如果從 LaunchPad 長按并點叉叉刪除則不進垃圾桶);

  2. 找到并刪除Xcode的相關文件(文檔,模擬器,plug-ins,編譯記錄)

find / -maxdepth 7 -name Xcode 2>/dev/null 

(命令末尾的 2>/dev/null 是過濾掉沒有文件夾訪問權(quán)限的提示信息)
將找到的目錄悉數(shù)刪除(刪除前先確認有沒有自定義的名為Xcode的什么文件)

  1. 找到并刪除Xcode配置信息,安裝記錄,Cookie/Cache/CrashReporter,等等
find / -maxdepth 7 -name com.apple.dt.\* 2>/dev/null 

(dt是developer tools的意思,比如Xcode的bundleId是com.apple.dt.Xcode,假定你只安裝了蘋果家Xcode這一個開發(fā)工具)
列出這些目錄,其中,/System/Library/LaunchAgents/ 目錄下的
com.apple.dt.CommandLineTools.installondemand.plist
這個文件不建議刪除(此處不作解釋)
不要手工刪除 /var 目錄下的內(nèi)容,重啟時應該會自動刪除。若發(fā)現(xiàn)文件太大,且重啟后也不消失,可先移到某個用戶目錄)

所以安全穩(wěn)妥的刪除方式是,執(zhí)行下面的兩個命令將它們?nèi)縿h除,
(涉及兩個目錄,/Library 和 ~/Library,前者是系統(tǒng)目錄,后者是用戶目錄)

find /Library -maxdepth 7 -name com.apple.dt.\* 2>/dev/null -print0 | xargs -0 sudo rm -rf
find ~/Library -maxdepth 7 -name com.apple.dt.\* 2>/dev/null -print0 | xargs -0 sudo rm -rf 

(-print0是將NUL作為分隔符,NUL也就是'/0',而不是空格;-0與此相應)

  1. 謹慎移除名為Developer的系統(tǒng)目錄下的內(nèi)容
find / -maxdepth 5 -name Developer 2>/dev/null 

找到的結(jié)果里,有3個值得注意的目錄

/Library/Developer
~/Library/Application\ Support/Developer
~/Library/Developer

對于找到的 /Library/Developer 目錄,可能包含的3個子目錄是:
CommandLineTools,命令行工具,可刪除,日后重裝不難,
CoreSimulator,模擬器(非常占空間的運行時 runtime),如果你不希望新安裝的Xcode使用舊的模擬器,建議一并刪除(Xcode的設置菜單里可重新下載)(用 finder 刪除或 sudo rm -rf 才行,反正要輸入開機密碼)
PrivateFrameworks目錄,請不要刪除,如果要刪除,請先將它的名字后加上.bak,在新的Xcode安裝成功并能成功編譯項目后再行刪除——否則,有導致新Xcode無法啟動的風險。尚不清楚這個目錄是首次安裝Xcode時引入的,還是macOS自帶的。

~/Library/Application\ Support/Developer 目錄下安裝的是 plug-in,由于Xcode 早已禁用 plug-in,而推薦 Xcode Extension,所以該Developer目錄完全可以刪除。

~/Library/Developer 下的3個子目錄都可以刪除。下面講這3個子目錄的用途:
CoreSimulator,存放模擬器配置數(shù)據(jù)(下載的模擬器存放在前面講過的系統(tǒng)目錄下,而不是這個用戶目錄);
XCPGDevices暫不清楚用途,但確認可刪,且其子目錄結(jié)構(gòu)與 CoreSimulator目錄下的任一模擬器相似;
Xcode目錄存放一些臨時數(shù)據(jù),其DerivedData存儲編譯緩存和每個項目的索引數(shù)據(jù),iOS DeviceSupport子目錄存放插到mac機上的手機索引信息,如果刪除該目錄,會導致下次將手機插入mac時不能馬上開始調(diào)試,而需要等待幾分鐘。

  1. provisioning profile 目錄
~/Library/MobileDevice/Provisioning Profiles

一般不需要清理。
有意思的是,這個目錄下的授權(quán)證書文件名就是證書的 UUID

security cms -Di xx.mobileprovision | grep -A 1 UUID

就能對比出結(jié)果了。

其他參考資料

  1. ios-simulator-simctl
  2. stackoverflow: How to remove old unneeded devices
  3. stackoverflow: Can I delete data from iOS DeviceSupport
  4. delete-temporary-items-private-var-folders-mac-os-x
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容