Android Studio Gradle构建加速

167

自从上个更新(6月25日版本)之后,在Android Studio中进行Gradle更改变得非常缓慢。当您编辑文件并在键盘松开时重新编译,它似乎也会自动跟踪更改。

在我的i5上,每次更改都需要几分钟的时间。

有什么方法可以加快Gradle更改速度吗?


1
对于那些花时间阅读答案和问题的人来说,这不是一个重复的问题,正如@Dave Jarvis所建议的那样。但它与旧版AS高度相关,可能与当前版本没有什么关系。 - Einar Sundgren
请查看这个链接:https://dev59.com/B2Qn5IYBdhLWcg3wg3aR#36826562 - Ahmad Aghazadeh
请查看此链接 https://dev59.com/mGQm5IYBdhLWcg3w0Bm5#54852468 - Jay
24个回答

101

确实有所不同:如何加速Gradle构建时间

只需在以下目录中创建名为gradle.properties的文件:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

将以下这行添加到文件中:
org.gradle.daemon=true

2
好的答案。如需进一步详细阅读,请查看此 SO 答案链接:https://dev59.com/B2Qn5IYBdhLWcg3wg3aR#19500539。 - Sufian
13
注意:这仅影响控制台构建。Android Studio始终使用Gradle守护进程(根据您的设置可能还有其他一些优化)。 - ChiefTwoPencils
2
我有一个名为 .gradle 的目录,其中包含一个名为 gradle.properties 的文件。但是构建仍然需要很长时间。有什么建议吗? - CoDe
5
没关系。 - Vlado Pandžić
快到2017年底了,性能依然很差,每个操作需要10-15分钟。使用i5处理器和4GB内存,没有其他应用程序在运行。有更好的解决方案吗?目前正在使用Android Studio 2.2。如果切换到AS 3+,性能会有所提高吗? - Uday
显示剩余4条评论

80

更改这些设置后,我的编译时间从10分钟缩短到了10秒钟。

步骤1:

设置(Ctrl + Alt + S)->

构建、执行、部署->

编译器->

在命令行选项框中输入"--offline"。

步骤2:

  

勾选“并行编译独立模块”复选框。

     

& 点击应用 -> 确定

输入图像描述

步骤3:在您的gradle.properties文件中添加以下行

org.gradle.jvmargs=-Xmx2048M -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.daemon=true

更新:

如果您使用的是 Android Studio 2.0 或更高版本,请尝试使用 Instant Run。

设置 → 构建、执行、部署 → Instant Run → 启用 Instant Run。

有关 Instant Run 的更多信息 - https://developer.android.com/studio/run/index.html#instant-run


7
我尝试了这个方法,确实显著加快了我的构建速度。我知道这个选项现在将导致离线构建,那么离线构建有什么缺点吗? - Simon
6
@Simon- 缺点是您将无法拉取build.gradle文件中标识的依赖项的最新版本。 它运行更快,因为它使用这些导入库的缓存快照。对于一些开发人员来说,稳定性至关重要,但长时间离线可能会使他们在最终上线时出现问题,因为这些依赖项已经发生了变化,从而使该项目落后。 - Mark Lapasa
1
谢谢兄弟,这个对我很有效,我的Gradle构建速度提高了。 - Android_programmer_office
1
@Sauron,我认为如果你这样做的话,依赖项都会在一天结束时更新,这可能意味着你的代码库中的方法可能已更改、被弃用等。最好保持离线复选框未选中,除非你的构建时间很长。 - Simon
2
它从33秒减少到5秒:)) - Miron
显示剩余3条评论

65

通过在Android Studio的gradle.properties文件中添加以下内容,我成功地将我的Gradle构建时间从43秒减少至25秒,这是在我的旧Core2Duo笔记本电脑(运行Linux Mint)上实现的。

org.gradle.parallel=true
org.gradle.daemon=true

有关为什么“daemon”设置可以使构建更快的来源: https://www.timroes.de/2013/09/12/speed-up-gradle/


3
从你提供的链接中:“注意:这只会影响控制台构建。Android Studio始终使用Gradle守护进程(根据您的设置,可能还使用其他优化)。” - ChiefTwoPencils
2
并行选项甚至在AS中提高了我的构建速度。谢谢 :) - jonathanrz
3
并行选项并没有改善我的构建结果。 - Vlado Pandžić
谢谢。这个解决方案将我的构建时间从7分钟缩短到了23秒... - GOBINATH.M
谢谢,让我的构建时间从两分钟缩短到了3秒。 - Pouya Samie

41

开发人员正在处理这个问题。像我在这个答案中发布的那样,目前最快的解决方案是从命令行使用gradle,并且您应该切换到二进制库来管理所有您不开发的模块。在g+上,有一些与开发人员关于此问题的讨论


我显然应该早些加入工具讨论组 - Einar Sundgren

14

按照以下步骤操作可使构建速度提高10倍,构建时间减少90%。

首先,在以下目录中创建名为 gradle.properties 的文件:

/home/<username>/.gradle/ (Linux)
/Users/<username>/.gradle/ (Mac)
C:\Users\<username>\.gradle (Windows)

将此行添加到文件中:

org.gradle.daemon=true
org.gradle.parallel=true

在Android Studio中勾选以下选项:

输入图像描述

输入图像描述


7

我所做的是将gradle构建速度大幅提升!第一次构建从1分钟缩短到了20秒,后续构建时间也由40秒缩短至5秒。

gradle.properties文件中添加以下内容:

org.gradle.jvmargs=-Xmx8192M -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

在"命令行参数"中,通过转到文件->其他设置->默认设置->构建、执行、部署->编译器,将以下参数添加到命令行参数。
添加这个:
--debug --stacktrace -a, --no-rebuild -q, --quiet --offline

See image here


7

Gradle有一个更新版本(ver 2.4)。

您可以通过从文件菜单中打开“项目结构”对话框来为您的项目设置它,

项目结构 -> 项目 -> Gradle版本

并将其设置为“2.4”。
您可以在此链接上阅读更多关于提高性能的信息。


2
谢谢,Gradle版本2.4节省了近14秒的时间。 - Miao1007
5
这使得我的构建时间更长。 - Egemen Hamutçu

6

6
尽量避免在进行Android开发时使用只有8GB RAM的Mac/PC。即使你启动一个模拟器(Genymotion或其他),在使用gradle构建的Android Studio中,你的构建时间也会变得非常缓慢。即使你对一个源文件做了一个简单的一行更改,这种情况仍然会发生。
关闭模拟器并使用真实设备可以帮助很多,但当然这是非常有限和不太灵活的。减少模拟器的RAM使用设置可能有所帮助,但最好的方法是确保你的笔记本电脑至少有12-16 GB的RAM。
更新(2017年6月):现在有几篇很好的medium.com文章详细解释如何加速Android Studio gradle构建,并且它甚至适用于8GB机器。

总结共识是:

创建一个gradle.properties文件(可以是全局的在~/.gradle/gradle.properties或者是项目本地的),并添加以下行:

org.gradle.daemon=true
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.parallel=true
org.gradle.configureondemand=true

5
dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}

1
“incremental ture” 在 Android Studio 2018 中已经过时。 - M'aiq the Coder
这是2年前发布的。 - AnupamChugh
我知道,我只是为那些仍在寻找这些解决方案的人陈述了一下。;) - M'aiq the Coder

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接