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

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

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

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

我也必须清除intellij缓存吗?


当前回答

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

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

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

Windows守护进程 如果您使用的是Windows,则需要在守护进程允许您清除这些目录之前杀死它。参见Kill all Gradle Daemons Regardless Version?更多信息。

其他回答

使用gradle命令在我的项目中不起作用,我一直失败,上面列出的命令在我的根项目中不受支持。 删除缓存目录中的目录对我有用。

Sudo rm -r .gradle/caches/*

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

Gradle缓存位于

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

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

rm -r $HOME/.gradle/caches/

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


更新

清除当前项目的Android构建缓存

注意:Android Studio的文件>无效缓存/重新启动不清除Android构建缓存,所以你必须单独清除它。

在Windows上:

gradlew cleanBuildCache

在Mac或UNIX上:

./gradlew cleanBuildCache

更新2

这篇文章将为你的Android Studio提供更多关于Android Studio缓存的细节

更新

cleanBuildCache不再工作。

Android Gradle插件现在利用Gradle缓存功能 https://guides.gradle.org/using-build-cache/

清除缓存 清理缓存目录,以避免任何来自以前版本的攻击 rm -rf $GRADLE_HOME/ cached /build-cache-*

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

其他题外话:见这里(包括编辑)。


=== obsolete info ===

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

cleanBuildCache

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

依赖关系:

Gradle 3.3或更高。 Build Tools 25.0.0或更高版本。

更多信息: https://developer.android.com/studio/build/build-cache.html#clear_the_build_cache

背景

建立缓存 存储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是包含脚本的系统特定文件。请查看相关的系统信息如何执行脚本:

Linux 窗户 Mac

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

~ gradle守护/ X。X /日志daemon-XXXX出局。

“X.X”是正在使用的gradle版本,比如“7.5”,而“XXXX”只是随机数,比如“1234”。"~"是你的用户$HOME文件夹。

总大小可以在短短几个月内增长到几百MB。没有办法禁用日志记录。这些文件不会自动删除,实际上也不需要保留。

但是你可以创建一个小的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 -> View -> Tool Windows -> Build中的调试输出。然后按下该窗口上的“Toggle View”按钮,显示文本输出。

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

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

最新的命令:

--no-build-cache

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

./gradlew SomeApp:installDebug --no-build-cache