android 開發過程中涉及到的清除快取操作
android 開發過程中會遇到很多快取,常常使人摸不清楚,這裡總結一下,希望下次遇到快取相關問題能有所幫助。
Clean Project
點選 Clean Project
會執行 clean
、:app:generateDebugSources
task
其中執行 clean
時會找到根專案和所有子專案的 clean
task,所以一般來講,會執行兩個 task,:clean
和 :app:clean
。
他們區別在於:
:clean
刪除 /build 資料夾:app:clean
刪除 /app/build 資料夾
Invalidate Cache/Restart
invalidate Caches/Restart 會刪除 android studio 的快取。
詳細內容可檢視 idea 的
這個快取指的是程式碼更改記錄的快取,即local history
,清除之後的效果:
- 無法檢視
local history
- 所有專案都需要重新 build
這樣看來,invalidate Caches / Restart 和 Rebuild Project 並沒有什麼區別。
刪除 .idea/libraries
刪除專案根目錄下 .idea/libraries
目錄的內容,或刪除整個目錄。
.idea/libraries
裡的檔案用來記錄第三方庫的 classes, javadoc 以及 sources 所對應的路徑。
當更新依賴、切換git分支後,往往會出現某個庫的程式碼報紅的情況,這時候就是.idea/libraries
刪除 /.idea/libraries
裡的內容後,再次同步時,會重新生成。
刪除 ~/.gradle/caches/transforms-1/files-1.1/
~/.gradle/caches/transforms-1/files-1.1/
是 gradle 快取的庫解壓後的目錄。
/.idea/libraries
中的檔案指向的路徑就是這裡。
刪除該目錄或其中某個庫後,當再次執行 generateDebugSources
時,不會重新下載,會從 modules-2
(下面要講的)目錄下尋找並解壓。
刪除 ~/.gradle/caches/modules-2/files-2.1/
~/.gradle/caches/modules-2/files-2.1/
刪除該目錄或其中某個庫後,當再次執行 generateDebugSources
時,會重新從網路下載。
/.idea/libraries 與 transforms-1 、modules-2
再理一遍它們的關係:
- 第一次執行
generateDebugSources
task,會在preBuild
時下載依賴庫到~/.gradle/caches/modules-2/files-2.1/
,並解壓到~/.gradle/caches/transforms-1/files-1.1/
- as 同步時,會生成
.idea/libraries
,記錄依賴庫快取的路徑,即~/.gradle/caches/transforms-1/files-1.1/...
注:
android studio 的 make、clean、sync、build 等都會執行到 generateDebugSources
task。