如何清除gradle缓存?

我正在尝试使用Android Studio,第一次启动它时,它需要45分钟来编译……如果我不退出应用程序,这是可以的-每次后续编译/运行应用程序将花费大约45秒。

我试着检查我的一些缓存:在我的主目录中有一个.gradle/caches文件夹,它包含123 MB。

在我的项目文件夹中还有一个.gradle文件夹…其中一个EYZ1大概有200mb。我很害怕随意地把它们都炸了。删除文件夹的哪些部分是安全的?

有没有更好的解释为什么我的Android工作室在第一次加载应用程序时永远运行gradle assemble任务?

我也必须清除intellij缓存吗?

993490 次浏览

正如@Bradford20000在评论中指出的那样,可能有一个gradle.properties文件以及位于$HOME/.gradle下的全局gradle脚本。在这种情况下,删除该目录的内容时必须特别注意。

.gradle/caches目录保存Gradle构建缓存。如果你有任何关于构建缓存的错误,你可以删除它。

——no-build-cache选项将在没有构建缓存的情况下运行gradle。

Daemon on MS Windows 如果您使用的是Windows,则需要在守护进程允许您清除这些目录之前杀死它。

Gradle缓存位于

  • Windows: %USERPROFILE%\.gradle\caches
  • Mac / UNIX: ~/.gradle/caches/

您可以浏览到这些目录并手动删除或运行

rm -r $HOME/.gradle/caches/

在UNIX系统上。运行此命令还将强制下载依赖项。


更新

清除Android当前项目构建缓存

注意:Android Studio的File > Invalidate Caches / Restart不会清除Android构建缓存,所以你必须单独清除它。

在Windows上:

gradlew cleanBuildCache

在Mac或UNIX上:

./gradlew cleanBuildCache

更新2

这篇文章让你的Android Studio减肥给出了更多关于Android Studio缓存的细节

更新

cleanBuildCache不再工作。

Android Gradle插件现在利用Gradle缓存功能
# EYZ0 < / p >

清除缓存

清理缓存目录,以避免任何来自以前版本的攻击

 rm -rf $GRADLE_HOME/caches/build-cache-*

https://guides.gradle.org/using-build-cache/#caching_android_projects

其他内容:参见在这里(包括编辑)。


=== obsolete info ===

使用Gradle任务的最新解决方案:

cleanBuildCache

可通过Android插件用于Gradle,修订版2.3.0(2017年2月)

依赖关系:

  1. Gradle 3.3或更高。
  2. Build Tools 25.0.0或更高版本。

更多信息在:
# EYZ0 < / p >

背景

< p > # EYZ0
存储Android插件在构建项目时生成的某些输出(如未打包的aar和预解码的远程依赖项)。在使用缓存时,干净的构建要快得多,因为构建系统可以在后续构建期间重用那些缓存的文件,而不是重新创建它们。使用Android插件2.3.0及更高版本的项目默认使用构建缓存。要了解更多信息,请阅读使用构建缓存提高构建速度

注意:如果禁用构建缓存,cleanBuildCache任务将不可用。


使用

窗口:

gradlew cleanBuildCache

Linux / Mac:

gradle cleanBuildCache

Android Studio / IntelliJ:

gradle tab (default on right) select and run the task or add it via the configuration window

注意:gradle / gradlew是包含脚本的系统特定文件。请查看相关的系统信息如何执行脚本:

gradle守护进程还为每个构建日志创建许多大型文本文件。它们存储在这里:

# EYZ0

“X.X"是否使用gradle版本,如&;7.5&;和&;xxxx &;都是随机数,比如“1234”。"~"是你的用户$HOME文件夹。

# EYZ0。没有办法禁用日志记录。这些文件不会自动删除,实际上也不需要保留。

但是你可以创建一个小gradle任务自动删除它们,并释放大量的磁盘空间:

添加到你的app/build.gradle:

android {


buildTypes {
...
}


// Delete large build log files from ~/.gradle/daemon/X.X/daemon-XXX.out.log
// Source 1: https://discuss.gradle.org/t/gradle-daemon-produces-a-lot-of-logs/9905
// Source 2: https://stackoverflow.com/questions/23025433/how-to-clear-gradle-cache#51479044
def gradle = project.getGradle()
new File("${gradle.getGradleUserHomeDir().getAbsolutePath()}/daemon/${gradle.getGradleVersion()}").listFiles().each {
if (it.getName().endsWith('.out.log')) {
// println("Deleting gradle log file: $it") // Optional debug output
it.delete()
}
}
}

要查看哪些文件正在被删除,你可以启用println()行,然后在Android Studio ->视图→工具窗口->构建。然后按“切换视图”键;按钮显示文本输出。

注意,Gradle Sync或任何Gradle Build都会触发文件删除。

更好的方法是自动将文件移动到回收站/回收站,或者至少先将它们复制到回收站文件夹。但我不知道该怎么做。

小心gradle守护进程,你必须在清除和重新运行gradle之前停止它。

停止第一个守护进程:

./gradlew --stop

清洁缓存使用:

rm -rf ~/.gradle/caches/

再次运行编译

这里张贴的信息似乎不正确。有些人报告了如何清除Android构建器缓存(使用任务cleanBuildCache),但似乎没有意识到所说的缓存是独立于Gradle的构建缓存AFAIK。

我的理解是,Android的缓存早于(并启发了)Gradle,但我可能错了。Android的构建器是否会被更新为使用Gradle的缓存并退出自己的缓存,我不知道。

编辑:的Android构建器缓存是过时的,已经被淘汰。Android的Gradle插件现在使用Gradle的构建缓存代替。为了控制这个缓存,你现在必须与Gradle的通用缓存基础结构进行交互。

提示:在线搜索Gradle的缓存帮助,不要提到关键字“android”,以获得当前相关缓存的帮助。

由于下面评论中tir38的问题,我正在使用Android Gradle插件v3.4.2项目进行测试。gradle缓存由gradle.properties中的org.gradle.caching=true开启。我做了一对clean build和第二次大多数任务显示FROM-CACHE作为他们的状态,显示缓存正在工作。

令人惊讶的是,我有一个cleanBuildCache gradle任务和<user-home>/.android/build-cache/3.4.2/目录,两者都暗示存在一个Android构建器缓存。

我执行cleanBuildCache3.4.2/目录消失了。接下来我做另一个clean build:

  • 没有任何变化:大多数任务显示FROM-CACHE作为它们的状态,并且以启用缓存的速度完成构建。
  • 3.4.2/目录被重新创建。
  • 3.4.2/目录为空(保存2个隐藏的零长度标记文件)。

结论:

  1. 所有正常的Android构建器任务的缓存是由Gradle处理的。
  2. 执行cleanBuildCache不会以任何方式清除或影响构建缓存。
  3. 那里仍然有一个Android构建器缓存。这可能是Android构建团队忘记删除的残留代码,或者它实际上缓存了一些奇怪的东西,无论出于什么原因,都没有或不能移植到Gradle缓存中。(恕我直言,“不能”选项是完全可以改进的。)

接下来,我禁用Gradle缓存删除org.gradle.caching=truegradle.properties和我尝试了一对clean build:

  • 构建很慢。
  • 所有任务都显示它们的状态为正在执行,而不是缓存或最新。
  • 3.4.2/目录继续为空。

更多的结论:

  1. 当Gradle缓存命中失败时,没有Android构建器缓存回退。
  2. Android构建器缓存,至少对于普通任务来说,确实已经被取消了。
  3. 相关的android医生包含过时的信息。特别是缓存默认不启用, Gradle缓存必须手动启用。

编辑3:用户tir38确认,Android构建器缓存是过时的,并已消除这个发现。Tir38还创建了这一期. .谢谢!

在android studio中打开视图比;工具窗口>终端并执行以下命令

在Windows上:

gradlew cleanBuildCache

在Mac或Linux上:

./gradlew cleanBuildCache

如果你想要从你的项目中禁用缓存,把这个添加到gradle的构建属性中

(# EYZ0)

android.enableBuildCache=false

在android studio中清除gradle缓存:

  1. 开放终端和
  2. 运行# EYZ0

我的~/.gradle/caches/文件夹使用了14G。

在使用以下解决方案后,它从14G下降到1.7G。

$ rm -rf ~/.gradle/caches/transforms-*


$ rm -rf ~/.gradle/caches/build-cache-*

奖金:

这个命令显示了使用的缓存空间的详细信息

$ sudo du -ah --max-depth 1 ~/.gradle/caches/ | sort -hr

这篇文章让你的Android Studio减肥帮助很大,推荐在这里

对于那些想要快速解决问题的人,请按下: # EYZ0比;# EYZ1 < / p >

清除特定项目/jar的缓存:

找到与该项目相关的所有缓存文件

find ~/.gradle/caches -name yourproject

上面的命令将返回所有与你的项目相关的缓存文件

rm -rf <each file returned>

您需要将缓存文件的路径传递给上面的命令。

gradle clean install

最后拉出最新的工件

更新:

删除缓存的一行代码:

for file in `find ~/.gradle/caches -name yourprojectartifactid`; do `rm -rf $file`; done

最新的命令:

--no-build-cache

找到:https://docs.gradle.org/current/userguide/build_cache.html 适用于如下命令:

./gradlew SomeApp:installDebug --no-build-cache
使用gradle命令在我的项目中不起作用,我一直得到失败,上面列出的命令在我的根项目中不受支持。 删除缓存目录下的目录对我有用

# EYZ0

我曾尝试删除错误报告中出现的工件,但这为我提供了一个干净的工作空间,并能够更容易地缩小依赖关系问题。

将compileSdkVersion和targetSdkVersion从30升级到31,解决了我的情况下的问题。但是构建失败在99%给出这个奇怪的错误lib/armeabi-v7a/libfbjni.so'。由给出的解求解。