如何清除gradle缓存?

时间:2014-04-12 02:35:48

标签: android caching intellij-idea ide gradle

我尝试使用Android Studio,第一次启动它时,编译需要45分钟...如果我不退出应用程序,那就没关系 - 每次后续编译/运行应用程序需要45秒。

我试图查看我的一些缓存:我的主目录中有一个.gradle/caches文件夹,它就像123 MB大。

我的项目文件夹中还有一个.gradle文件夹...其中一个taskArtifacts就像200 MB。我害怕只是随意地将它们两者核对。删除文件夹的哪些部分是安全的?

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

我是否还必须清除intellij缓存?

11 个答案:

答案 0 :(得分:252)

Gradle 缓存位于

  • 在Windows上:%USER_HOME%\.gradle/caches/
  • 在Mac / Unix上:$HOME/.gradle/caches/

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

rm -rf $HOME/.gradle/caches/

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

更新2: Clear the Android build cache of current project

注意:Android Studio的文件|无效缓存/重新启动不会清除Android构建缓存,因此您必须单独清理它。

在Windows上:

gradlew cleanBuildCache

在Mac或Linux上:

./gradlew cleanBuildCache

答案 1 :(得分:214)

您可以安全地删除位于项目目录下的整个.gradle文件夹。每次运行任务时都会重新创建它。主目录下的.gradle也是如此。它也将被重新创建,但必须再次下载整个依赖项 - 这非常耗时。

正如我在各个地方看到的那样,通过网络进行Android开发的速度非常慢,人们抱怨它。不知道究竟是什么原因 - 这就是它的工作原理。

我不认为低性能是因为大文件夹。实际上他们帮助它更快。

正如@ Bradford20000在评论中指出的那样,可能有一个gradle.properties文件以及位于$HOME/.gradle下的全局gradle脚本。在这种情况下,删除此目录的内容时必须特别注意。 缓存目录包含Gradle构建缓存。因此,如果您有任何错误,可以删除它。它位于.gradle/caches

答案 2 :(得分:49)

使用 gradle任务的最新解决方案

<强> cleanBuildCache

可通过Android插件获取Gradle,修订版2。3。0(2017年2月)

依赖关系:

  1. Gradle 3.3或更高版本。
  2. 构建工具25.0.0或更高版本。
  3. 更多信息:

    https://developer.android.com/studio/build/build-cache.html#clear_the_build_cache

    背景

    构建缓存:

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

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

    <强>用法:

    windows

    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是包含脚本的系统特定文件 - 请参阅系统信息如何执行脚本

    1. linux - https://www.cyberciti.biz/faq/howto-run-a-script-in-linux/
    2. windows - https://technet.microsoft.com/en-us/library/bb613481(v=vs.85).aspx
    3. mac https://developer.apple.com/library/content/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/index.html

答案 3 :(得分:4)

请注意gradle守护进程,您必须先停止它,然后再清除并重新运行gradle。

停止第一个守护程序:

  

./ gradlew --stop

使用以下命令清除缓存

  

rm -rf〜/ .gradle / caches /

再次运行编译

答案 4 :(得分:3)

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

  

~/.gradle/daemon/X.X/daemon-XXXX.out.log

“ X.X”是使用中的gradle版本,例如“ 4.4”,“ XXXX”只是随机数,例如“ 1234”。

总大小可以在短短几个月内增长到数百MB 。无法禁用日志记录,并且文件不会自动删除,并且确实不需要保留它们。

但是您可以创建一个small gradle task to automatically delete them,并释放大量磁盘空间:

将此添加到您的 app/build.gradle

android {

    buildTypes {
        ...
    }

    // Delete large build log files from ~/.gradle/daemon/X.X/daemon-XXX.out.log
    // Source: https://discuss.gradle.org/t/gradle-daemon-produces-a-lot-of-logs/9905
    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()
        }
    }
}

要查看要删除的文件,可以在Android Studio->视图->工具窗口->构建中查看调试输出。然后在该窗口上按“切换视图”按钮以显示文本输出。

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

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

答案 5 :(得分:0)

要在 android studio 中清除您的 gradle 缓存:

  1. 打开终端并
  2. 运行gradlew clean

答案 6 :(得分:0)

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

答案 7 :(得分:0)

这篇文章Put your Android Studio on a diet按照推荐here

很有帮助

对于那些寻求快速修复的人,请按: File > Invalidate Caches Restart

答案 8 :(得分:-1)

there seems to be incorrect info posted here. some people report on how to clear the Android builder cache (with task cleanBuildCache) but do not seem to realize that said cache is independent of Gradle's build cache, AFAIK.

my understanding is that Android's cache predates (and inspired) Gradle's, but i could be wrong. whether the Android builder will be/was updated to use Gradle's cache and retire its own, i do not know.

答案 9 :(得分:-1)

在android studio中,打开查看>工具窗口>终端,然后执行以下命令

在Windows上:

gradlew cleanBuildCache

在Mac或Linux上:

./gradlew cleanBuildCache

如果要从项目中禁用缓存,请将其添加到gradle构建属性中

警告:如果没有缓存,这可能会降低您的PC性能,因为在运行应用程序期间每次都消耗相同的时间

android.enableBuildCache=false

答案 10 :(得分:-2)

命令:rm -rf ~/.gradle/caches/