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。

android 开发过程中涉及到的清除缓存操作相关推荐

  1. android开发过程中遇到的问题

    记录android开发过程中遇到的问题. 1.在一个xml中能否使用同一个include多次 http://www.apkbus.com/android-104152-1-1.html android ...

  2. android开发过程中一些遇到的问题

    记录android开发过程中遇到的问题. 1.在一个xml中能否使用同一个include多次 http://www.apkbus.com/android-104152-1-1.html android ...

  3. Android开发过程中的部分经验总结

    该文章为Android App 开发过程中遇到的常见问题总结,该总结也会持续不断的优化 完善当中.后续开发中一定会遇到各种各样的问题, 这些问题会酌情不断补充进来. 我将遇到的问题分为两大类,非技术问 ...

  4. Android开发过程中的一些基本常识

    http://blog.csdn.net/ekeuy/article/details/42292589 本文介绍Android开发过程中的一些基本常识,大多是一些流程.专业术语和解决问题的方法等. 一 ...

  5. Android开发过程中在sh,py,mk文件中添加log信息的方法

    Android开发过程中在sh,py,mk文件中添加log信息的方法 在sh文件中: echo "this is a log info" + $info 在py文件中: print ...

  6. 记录的Android开发过程中遇到的问题。

    180508  更新 网上下载demo 本地studio版本和demo版本不一致处理方式 修改两处 1 项目的build.gradle 里面classpath 2修改项目目录下 gradle--> ...

  7. 搬砖之路----MusicPlayer 一个基于Vlc(2.0+)开发的android音乐播放器--浅析在android开发过程中播放器选择之路!

    前言 MusicPlayer 是一款基于vlc播放器开发的一个音乐播放器,你也可以理解为在此核心上的搬砖之路,核心的内容并不是我写的,因此在正式写blog之前,感谢那些vlc核心的开发人员让我用到这么 ...

  8. 在ASP.NET Core中使用AOP来简化缓存操作

    前言 关于缓存的使用,相信大家都是熟悉的不能再熟悉了,简单来说就是下面一句话. 优先从缓存中取数据,缓存中取不到再去数据库中取,取到了在扔进缓存中去. 然后我们就会看到项目中有类似这样的代码了. pu ...

  9. Android—开发过程中的相关注意事项

    查看测试机显示的内容所对应的Activity 先在环境变量Path中添加sdk所在的路径. adb shell dumpsys activity 包名 | findstr ACTIVITY App打包 ...

最新文章

  1. PHP导入excel到mysql数据库完整代码附效果图
  2. backbone.js全栈开发
  3. 洪嘉振 计算多体系统动力学pdf_如何在多体动力学模型中评估齿轮啮合刚度
  4. android 实现SSL握手协商
  5. 支付宝支付php代码示例,Laravel使用支付宝进行支付的示例代码
  6. java如何开根号?
  7. 杰控连接mysql_杰控FameView在数据库连接和查询方面的应用
  8. 学习网站及编程电子书下载网站
  9. java字符串时间去掉秒_Java:当秒和毫秒均为0时,DateTimeFormatter无法解析时间字符串吗?...
  10. 将APP发布到各大官方网站的方法,如华为、360手机助手、小米等
  11. python离线语音转文字_利用Python和API轻松实现:语音转文字,文字转语音
  12. Tableau详细安装教程【踩坑】
  13. 如何批量隔行删除Excel行
  14. team viewer 远程控制计算机,使用TeamViewer让手机控制电脑的设置步骤
  15. html 制作人物模型,玩家制作《辐射4》人物模型图 惊艳无比让人叹服
  16. 轻松选择/复制word文档的整个章节的内容
  17. 工程地质计算机应用百度云,工程地质计算机应用
  18. 祛除体内湿气的最佳方法 713.html,祛除体内湿气七种有效泡水方法
  19. 使用jQuery调色器farbtastic--触发change事件
  20. MySQL自动删除指定时间以前的记录

热门文章

  1. Proteus中七段数码管引脚说明
  2. c++重载运算符实现分数加减乘除
  3. 【k8s】7、pod控制器详解
  4. php如果登录失败弹出失败,登录失败或出现错误信息(无跳转、提示失败、出现错误信息)的解决方法...
  5. 7-1 用格里高利公式求给定精度的PI值 (15分)
  6. Address Sanitizer 用法
  7. r语言和python的区别-Python和R语言之分析对比
  8. 数字孪生开发平台 数字孪生开发成本 数字孪生开发平台cortona3d
  9. 《自律让你自由》摘要
  10. Java一年两年工作经验面试题