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

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

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

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

我也必须清除intellij缓存吗?


当前回答

更新

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

其他回答

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

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

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

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

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

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

我执行cleanBuildCache, 3.4.2/目录消失了。接下来我做了另一个干净的构建:

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

结论:

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

接下来,我通过删除org.gradle禁用Gradle缓存。缓存=true从gradle。属性和我尝试了一些干净的构建:

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

更多的结论:

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

编辑3:用户tir38确认Android构建器缓存已经过时,并且已经被消除。Tir38也制造了这个问题。谢谢!

我删除了grade的内容。属性(全局属性)手动。 操作完成。

我的~ /。gradle/caches/ folder使用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

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

停止第一个守护进程:

./gradlew --stop

清洁缓存使用:

rm -rf ~/.gradle/caches/

再次运行编译

在android studio中清除gradle缓存:

开放终端和 运行gradlew清洁