身為 iOS 工程師要知道的清除 Mac 垃圾檔案的方法

2018/11/14閱讀時間約 8 分鐘
我有一台 2017 年版本的 Macbook Pro,儲存裝置的規格是 256GB SSD。原先以為就開發而言 256GB 已經很足夠了,平常僅用來存放技術文件、程式碼、電子書,除了開發工具以外安裝應用程式的需求也不多,而其他娛樂或是相片等檔案也大多存於外接硬碟中。然而隨著作業系統與開發工具的日益肥大、第三方函式庫或是套件管理器的各式各樣安裝方式(CocoaPods、Carthage、Homebrew、RubyGems、Bundler),在儲存裝置中總會留下或多或少的暫存、垃圾檔案。不知不覺當中,才發現 256GB 中可用的容量所剩無幾,甚至面臨每次要更新 macOS、或是 Xcode 版本時系統都會跳出可用空間不足的窘境。
專注力應該用在工作,而不是分心處理資源匱乏的問題。
《匱乏經濟學》一書中提到,人的認知頻寬(mental bandwidth)是有限的,資源(時間、空間、金錢等等)上的匱乏會盤據在人的心頭,從而產生隧道效應(tunneling),造成我們只能將注意力放在眼前讓自己焦慮的事情,而無法聚焦精神在其他重要但較不迫切的事物上。
工程師的專注力是非常寶貴的資源,和產出能力息息相關,如果因為儲存空間的不足導致必須時常費心去清除零碎檔案釋放空間,對工程師本人和產品本身都是極大的損失。所幸網路上找得到許多清除垃圾檔案的方法,在這邊我就重點擷取幾個對 iOS 工程師而言比較有感的方式。

使用系統工具管理儲存空間

macOS Sierra 和以上版本,可使用系統工具來管理儲存裝置上的空間。開啟的方式有兩種:
  1. 在「蘋果」()選單中選擇「關於這台 Mac」,然後按一下「儲存空間」。接著按下「管理」按鈕。
  2. 打開此路徑:「/應用程式/工具程式/系統資訊.app」(或是“/Applications/Utilities/System Information.app”),在 App 選單中選取「視窗>儲存空間管理」
接著可以使用該工具將檔案存到 iCloud 中、最佳化儲存空間、清除垃圾桶、或是依照檔案大小來清理不必要的檔案。

清除 Xcode 暫存或過期檔案

以下路徑的檔案可斟酌刪除,但後果請自負。
  • ~/Library/Developer/Xcode/DerivedData
  • ~/Library/Developer/Xcode/Archives
  • ~/Library/Developer/Xcode/iOS DeviceSupport
  • ~/Library/Developer/CoreSimulator/Devices
  • ~/Library/Caches/com.apple.dt.Xcode
DerivedData 和 Archives 應該不需要多說什麼,開發者都知道。iOS DeviceSupport 最好只清除新版 Xcode 不再支援的版本,也就是舊版 Xcode 殘留下來的版本。
CoreSimulator/Devices 點進去只看到一堆 UUID,這個目錄該如何清呢?請參照這篇,可以選擇在終端機應用程式中透過 xcrun simctl list devices 指令,一個一個對照之後清除用不到的,或者直接使用指令 xcrun simctl delete unavailable 一次清除。
Xcode Caches 顧名思義,清除應該是安全的。

清除 iOS 裝置備份檔案

  • ~/Library/Application Support/MobileSync/Backup
該路徑是 iOS 裝置透過 iTunes 在你電腦上的備份,可以參照官方的這篇文章決定是否刪除。

清除各個瀏覽器的暫存檔

Safari

  1. 點選 App 選單的 Safari偏好設定
  2. 在出現的視窗中點選進階
  3. 勾選在選單列中顯示「開發」選單
  4. 點選 App 選單的開發清除快取資料
  5. 以上步驟等同於直接清除 ~/Library/Caches/com.apple.Safari/Cache.db

Chrome

  1. 選取右上角的三點按鈕設定
  2. 選取最下方的進階,展開後選取清除瀏覽資料
  3. 只留下快取圖片和檔案的勾選,其他皆取消選取,然後選擇時間範圍後點選清除資料
  4. 以上步驟等同於直接清除 ~/Library/Caches/Google/Chrome/ 以及 ~/Library/Application Support/Google/Chrome/Default/Application Cache/

Firefox

  1. 點選右上角漢堡圖示偏好設定
  2. 點選左側欄的隱私權與安全性,找到 Cookie 與網站資料,點選旁邊的清除資料
  3. 僅保留勾選網頁快取內容,然後點選清除

清除 CocoaPods 的快取

可直接在終端機程式中輸入 rm -rf ~/Library/Caches/CocoaPods 或是 pod cache clean --all 來清除 CocoaPods 的快取。

清除 Carthage 的快取

參考這篇,在終端機程式中輸入 rm -rf ~/Library/Caches/org.carthage.CarthageKit 清除。

清除 Homebrew 老舊版本

如果你有透過 Homebrew 安裝 Carthagefastlane 或是 rbenv,每次升級後會有一些殘留的舊版本 formula,可以刪除。
參考官方文件,透過 brew cleanup -n 指令預覽哪些 formula 會被刪除,再透過 brew cleanup 指令刪除之。

清除 RubyGems 老舊版本

如果你有透過 RubyGems 安裝 CocoaPods 或是 fastlane,每次升級後會有一些殘留的舊版本 gems,可以刪除。
參考這篇或是官方文件,透過 gem cleanup --dryrun 指令預覽哪些 gems 會被刪除,再透過 gem cleanup 指令刪除之。

透過 Bundler 清除特定專案的 gems

如果你有使用 Bundler 來管理 CocoaPods 或是 fastlane gem 的版本或是相依性,可以使用指令來清除 bundler 目錄下未使用的 gems,通常在你大幅改變專案的 gem 相依性時比較會需要做這個動作。
參考這篇或是官方文件(連結為1.17版),透過 bundle clean --dry-run 指令預覽哪些 gems 會被刪除,再透過 bundle clean 刪除之。
附註:Bundler 在安裝 gem 時,除非有使用 bundle install --path ... 來指定安裝路徑,不然預設會裝在跟 RubyGems 設定一樣的位置,也就是 gem install ... 安裝的位置。這時候用 gem list 指令也會列出透過 Bundler 安裝的 gem。bundle clean 只會處理透過 --path 安裝的 gem,如果你很確定想要把系統預設路徑下專案未用到的 gem 都刪除,可以使用 bundle clean --force 指令——但如果你有其他專案有用到這些 gem 的話,這將會是一個危險的動作。此外,如果你有使用 --path 來安裝,bundle installbundle update 就會自動做清除的動作,所以通常 bundle clean 並不是那麼必要。

由於每個人使用的開發工具不同,在這裡也僅能分享一些筆者有用到的部分,但基本精神是相同的。希望透過這篇的整理可以讓大家不用再煩惱於儲存空間的不足,把專注力集中在開發程式上吧!謝謝收看。
我是 Lefty,一位低調的 iOS 開發者。
我的 Medium:https://medium.com/@lefty.
我的 vocus:https://vocus.cc/user/@lefty
為什麼會看到廣告
Lefty Chang
Lefty Chang
Even If the Right Answer Is Right, Lefty Will Pick the Left.
留言0
查看全部
發表第一個留言支持創作者!