1. 程式人生 > >android 開發過程中涉及到的清除快取操作

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/

![在這裡插入圖片描述](https://img-blog.csdn.net/20181014184947225?

~/.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/

是 gradle 快取的庫的原始檔。

刪除該目錄或其中某個庫後,當再次執行 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。