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/
是 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。