Android Studio 太佔空間,先分清 SDK、映像和虛擬裝置
Android Studio 佔用的空間不只有編輯器,SDK 套件、Android 系統映像和每台虛擬裝置存的是不同內容,刪除後的復原成本也不同。先找出佔用最大的目錄,再透過 Android Studio 移除一個不用的套件或裝置,不急著手動刪資料夾。
找到 SDK 和虛擬裝置
開啟 Tools › SDK Manager,記下 Android SDK Location,Google 的 SDK Manager 說明介紹了這個入口,如果顯示位置和下面不同,以自己的設定為準,文中的 Android Studio 標籤沿用英文介面。
Google 的模擬器目錄說明把共用系統映像和虛擬裝置可寫入的資料分開,下面是常見位置,不是要你直接刪除這些上層資料夾。
~/Library/Android/sdk
~/Library/Android/sdk/system-images
~/.android/avd
| 目錄 | 保存什麼 | 先做什麼 |
|---|---|---|
| SDK 平台和工具 | 建置 Android App 需要的套件 | 在 SDK Manager 核對已安裝的套件 |
| 系統映像 | 模擬器使用的 Android 版本和變體 | 看哪些虛擬裝置還需要它 |
| AVD 資料 | 測試 App、設定和裝置可寫入的儲存內容 | 在 Device Manager 檢查對應裝置 |
| 快照 | 保存的模擬器狀態 | 只刪不再需要的狀態 |
資料夾大小只能幫你決定先查哪裡,不等於可刪容量,如果設定的位置在別處,就去看那個位置,不用建立不存在的預設目錄。
移除不用的 SDK 套件
在 SDK Manager 查看 SDK Platforms,用 Show Package Details 區分平台和系統映像,Google 的套件說明解釋了各自用途,目前專案和裝置測試範圍還用得到的套件先留下。
- 記下準備移除的平台或映像,以及 API 級別和變體。
- 只取消那個套件的勾選,再按 Apply。
- 確認前讀一遍移除清單,其他工具保持勾選。
- 建置一個仍在維護的專案,再啟動一台保留的虛擬裝置。
如果建置提示需要剛移除的平台,回 SDK Manager 裝回那個套件,前提是套件仍可下載、網路也可用,不要因為一個舊映像很大就刪掉整個 SDK。
清除裝置資料還是刪除裝置
Google 的 Device Manager 指南提供專案內的 View › Tool Windows › Device Manager 入口,用裝置選單裡的 Show on Disk 找到實際檔案,變更資料前先按 Stop。
想保留虛擬裝置、重設裡面的使用者資料,用 Wipe Data,不再需要這台裝置才用 Delete。操作前匯出要留的測試資料和重現問題的材料,因為重新建立裝置不會復原原來的狀態。
這和在 SDK Manager 解除安裝共用系統映像是兩回事,判斷映像是否閒置前,先看剩餘裝置是否還在用,一台乾淨的新裝置不是被清除裝置的備份。
只清快照,不清除裝置
Google 的快照說明介紹了快照保存的系統設定、App 狀態和使用者資料,在模擬器的快照面板選取不要的快照,再用刪除按鈕,除錯還需要的具名快照先留下。
Quick Boot 預設會保存啟動狀態,刪掉這份快照可能換來一次冷啟動,之後還會產生新快照,如果某份快照保留了失敗測試的現場,它就是有用資料,不能因為其他快照能重建就一起刪。
保存的狀態無法啟動時,先在 Device Manager 試 Cold Boot,讓模擬器不載入快照啟動,不把重設裝置資料當成排除問題的第一步。
每改一處就核對結果
回到同一組 SDK 和 AVD 目錄,確認目標套件或裝置已經移除,再執行保留的專案和裝置,通過後才處理下一項,如果空間幾乎沒變,按上表查看是不是另一類資料佔了大部分。
SDK Manager 的移除和裝置重設不保證能從 Mac 垃圾桶找回,無法取代的資料先留獨立副本。如果手動移動了檔案,Apple 的應用程式移除說明指出,垃圾桶裡的內容在永久刪除前仍佔空間,檢查期間先留在那裡。
Gradle 另行判斷,操作放在開發快取清理指南,Apple 工具鏈則看 Xcode 儲存空間指南,不把 Android 的路徑套到另一套 SDK 上。
Mole 會列出什麼
Mole Mac 的清理會把符合條件的 Android 項目放在開發工具下,Android 模擬器快速啟動快照只針對自動產生的 snapshots/default_boot,不是你保存的具名快照,未使用的 Android 系統映像會列出沒有已知 AVD 參照的映像,預設不勾選,留給你確認,參照資訊不完整時就不列出映像。
刪除前 Mole 會重新檢查模擬器的執行狀態,相關模擬器還在執行,或程序檢查無法確認它已經停止時,會拒絕刪除這些項目,系統映像的參照也會在移除前重新核對。預設不勾選是讓你確認,不代表選取後仍會保留資料,Android Studio 解除安裝指南說明了如何移除編輯器、留下 SDK 和簽署金鑰。
常見問題
Wipe Data 會刪掉系統映像嗎?
它重設的是所選裝置的使用者資料,共用系統映像在 SDK Manager 分開管理,要移除映像先核對剩餘裝置。
能直接刪除整個 AVD 資料夾嗎?
先保存要留的測試資料,再用 Device Manager 逐台刪除裝置,直接刪上層資料夾難以核對,也不能保證找回舊狀態。
為什麼模擬器佔用又增加了?
Quick Boot 會保存新快照,測試時 App 也會寫入新資料,先看是哪類目錄增加再決定要不要清,反覆重設也會丟掉你可能正在追查的現場。