标签:
android 开发过程中会遇到很多缓存,常常使人摸不清楚,这里总结一下,希望下次遇到缓存相关问题能有所帮助。
Clean Project
![在这里插入图片描述](
其中执行 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。
标签:
来源: https://blog.csdn.net/Gdeer/article/details/83049615