安卓工作室Gradle构建时间太长

277

我的 Android Studio 项目以前构建速度更快,但现在构建需要很长时间。有什么想法是什么导致了这种延迟吗?我尝试了https://dev59.com/aoHba4cB1Zd3GeqPSokC#27171878,但没有效果。我没有运行任何可能会中断构建的反病毒软件。我的应用程序大小也不是很大(约 5MB),以前能在几秒钟内构建完成,但不确定发生了什么变化。

10:03:51 Gradle build finished in 4 min 0 sec  
10:04:03 Session 'app': running  
10:10:11 Gradle build finished in 3 min 29 sec  
10:10:12 Session 'app': running  
10:20:24 Gradle build finished in 3 min 42 sec  
10:28:18 Gradle build finished in 3 min 40 sec  
10:28:19 Session 'app': running  
10:31:14 Gradle build finished in 2 min 56 sec   
10:31:14 Session 'app': running  
10:38:37 Gradle build finished in 3 min 30 sec  
10:42:17 Gradle build finished in 3 min 40 sec  
10:45:18 Gradle build finished in 3 min 1 sec  
10:48:49 Gradle build finished in 3 min 30 sec  
10:53:05 Gradle build finished in 3 min 22 sec  
10:57:10 Gradle build finished in 3 min 19 sec  
10:57:11 Session 'app': running  

1
你使用什么来运行你的应用程序,是你的安卓手机还是任何模拟器? - Ram Mansawala
运行在设备上 - AndroidDev
60
当Android Studio刚推出时,许多StackOverflow上的人认为这只是一个“beta版本”,并对此提出的抱怨不屑一顾。然而,现在已经过去了几年,它仍然很慢,即使在拥有8个内核、16GB内存和SSD硬盘的情况下也是如此。相比之下,同样安装在这台机器上的旧版Eclipse非常快速。 - Andrew S
3
阅读此文章:http://pissedoff-techie.blogspot.in/2016/01/why-android-studio-sucks-over-eclipse.html本文讨论了Android Studio相较于Eclipse的劣势,主要包括启动速度慢、卡顿、内存消耗高等问题。作者建议开发者在选择集成开发环境时应该考虑到这些问题,并且鼓励谷歌公司继续改进Android Studio。 - Utsav Gupta
1
一些内容还取决于需要构建的依赖项。 - zgc7009
显示剩余4条评论
24个回答

500

答案

2022年更新:谷歌移除了“离线工作”选项;

他们添加了“为依赖项下载外部注释”选项,但是当然取消勾选该选项将无法提供相同的速度改进。

在Android Studio中进行以下操作: 文件 -> 设置 -> 构建、执行、部署 -> 构建工具 -> Gradle

(如果是Mac) Android Studio -> 首选项... -> 构建、执行、部署 -> 构建工具 -> Gradle

在“全局Gradle设置”下勾选“离线工作”。

注意:在较新版本的Android Studio中,View->工具窗口->Gradle->在线/离线切换按钮

它将减少90%的Gradle构建时间。

check this to reduce build time

如果您只是在Gradle中添加了一个新依赖项,则必须取消勾选离线工作,否则Gradle将无法解析依赖项。完成解析后,您可以勾选 离线工作 以加快构建速度。


14
表现很棒。从12分钟缩短到5秒钟。 - Ramesh
23
这个配置不会阻止我们在 build.gradle 中添加新的库,以便获取它们吗? - Dany Y
52
当您添加新的库时,您需要使其在线一次,Gradle构建将通知您以使项目可运行。@DanyY - Biswajit Karmakar
20
这是否意味着问题一直是网络速度而不是处理器速度? - user5395084
24
只有我这样吗,还是在Android Studio 3.6.2中已经没有离线工作选项了? - Fugogugo
显示剩余7条评论

160

如果您正在使用Google Play服务,请确保您的Gradle构建脚本中没有使用以下内容:

compile 'com.google.android.gms:play-services:8.3.0'

只使用您的应用程序真正需要的 Google API。如果您只使用 Google 地图,则应使用以下内容:

只使用你的应用实际需要的谷歌API。如果你仅仅需要使用谷歌地图,你可以使用以下代码:

```html
```
com.google.android.gms:play-services-maps:8.3.0

当我这样做时,我的编译时间从超过2分钟缩短至约25秒。有关可选择性地进行编译的Google API列表,请参见:

https://developers.google.com/android/guides/setup


16
你应该得到100个以上的点赞。其他来源建议添加 "org.gradle.parallel=true" 和与命令行相关的内容...但没有一个能够简单明了地解释实际发生了什么。使用你的建议,我的构建时间从1分5秒缩短到3.427秒。太棒了!! - Sauron
非常感谢,这也是我的主要问题。现在一切都运作良好。 - alnaji
1
非常好用。使用此链接查找您的Play服务库名称:https://developers.google.com/android/guides/setup#add_google_play_services_to_your_project - PC.
你应该得到一个勾号...你解决了我的问题。问题出在Google Play服务上...谢谢 :) - Karue Benson Karue
请问我正在使用哪个 Gradle 文件中的 classpath 'com.google.gms:google-services:4.3.10'?该文件位于模块app中。 - MML
显示剩余2条评论

58

找到一种简单且最佳的构建Gradle的方法

进入您的应用程序 >> 打开gradle.properties文件并对其进行几行更改[删除#]

或者你可以复制粘贴我下面的代码片段

    # Project-wide Gradle settings.

# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.

# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html

# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx2048m -XX:MaxPermSize=512m
 org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
 org.gradle.parallel=true

之前它对我起作用,需要大约2-3分钟,现在只需5-6秒钟

在上述情况下,我的Mac电脑有8GB的RAM,因此我为Gradle分配了4GB的RAM


这将我的构建时间从30多分钟减少到24分钟...还有什么方法可以进一步缩短吗...? - Programming Pirate
@ProgrammingPirate,你找到方法了吗?我也遇到了同样的问题,但这并没有帮助——我的电脑(Windows)有32 GB的内存,性能很好,只是Android Studio运行缓慢。 - Chagai Friedlander

47

找到原因了!!如果 Android Studio 设置了代理服务器并且无法访问服务器,则构建需要很长时间,可能是在尝试访问代理服务器并等待超时。当我删除代理服务器设置后,它就能正常工作。

删除代理: 文件 > 设置 > 外观与行为 > 系统设置 > HTTP 代理


4
如何移除代理服务器? - Thiago
2
在Windows上,依次选择 文件 > 设置 > 外观和行为 > 系统设置 > HTTP代理。 - AndroidDev
2
我的问题也出在代理上,但是我需要在gradle属性中添加HTTPS代理。HTTP代理是不够的:systemProp.http.proxyHost=xxx.xxx.xxx.xxx systemProp.http.proxyPort=8080systemProp.https.proxyHost=xxx.xxx.xxx.xxx systemProp.https.proxyPort=8080 - user3098756
51
AS是一个完全的笑话和胡说八道。我已经厌倦了这种无意义的东西。 - The_Martian
9
我同意!!!我正在为将一个大项目从Eclipse迁移到AS而遭受不可思议的痛苦,现在即使错误已经清除,使用AS构建仍然永无止境!!!我讨厌AS。@The_Martian - Josh
显示剩余8条评论

32

在 Android Studio 中,3.6 及以上版本,有一个新的位置可以切换 Gradle 的离线模式,以启用或禁用 Gradle 的离线模式。

要启用或禁用 Gradle 的离线模式,请从菜单中选择 View > Tool Windows > Gradle。在 Gradle 窗口的顶部栏中,单击 Toggle Offline Mode(靠近设置图标)。

enter image description here

图标有点令人困惑,无论如何,当切换按钮高亮时{{离线模式已启用}}。


2
非常感谢,我真的自己想不出来。 - Victor Sokoliuk
1
这个答案有效!!!++置顶...构建时间从37分钟缩短到3分钟。速度提高了10倍...该死的网络检查。(在2022年10月31日安装了And_Studio) - bh_earth0
它运行了!!非常感谢在2022.2.1 Canary 2的Android Studio预览版。我还在setting.gradle中添加了org.gradle.parallel=true,并打开了文件/节能模式。构建时间从15分钟缩短到了1分钟。 - Tina Lu

26

按照以下步骤操作可使构建速度提高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

5
你可以直接从位于 Android Studio 项目中的 gradle.properties 文件中进行设置。 - Biswajit Karmakar
3
好的,我会尽力为您翻译。以下是需要翻译的内容:"Yes also enable this option org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8"请将其翻译成中文。 - user779370
2
设置 MaxPermSize=1024m - Biswajit Karmakar
为什么这些属性没有预定义?有什么缺点吗? - oli
此选项仅适用于解耦合的项目。更多细节请访问http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects - javad

17

启用Java 8特性导致构建速度极慢

Gradle

 jackOptions {
        enabled true
  }

  compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

删除以上行后,它可以在几秒钟内构建。

存在问题“使用Jack编译花费很长时间”

项目经理回答:

我们知道目前使用Jack构建所需的时间是个问题。我们在2.4 Gradle插件中进行了改进,这应该会对增量构建有显着的提升。

截至目前,我能找到的最新Gradle版本是2.3.0-beta4


4
我同意。要在Android Studio中启用Java 8,您需要使用“Jack”。这样做会使我的构建时间从1-2分钟飙升到16分钟……简直无法使用。像往常一样,谷歌的工作仍然很出色。 - Karol Żygłowicz

16

7

@AndroidDev 的解决方案对我有用。 我已经在 Gradle 中包含了整个库。

compile 'com.google.android.gms:play-services:8.4.0'

更改解决了问题。从4分钟变为1分钟。

compile 'com.google.android.gms:play-services-ads:8.4.0'
compile 'com.google.android.gms:play-services-analytics:8.4.0'

Thnx


6

检查您的互联网连接。如果互联网速度非常慢,则gradle构建也需要很长时间来构建。我通过更改我的wifi互联网连接为另一个速度良好的连接来检查。现在构建时间正常。在您尝试其他解决方案之前,请尝试此方法。有些人会做出错误的决定,重新安装或更改设置。希望这能有所帮助。谢谢和问候。


确保在防火墙上允许Android Studio。在全新安装时等待gradle近15分钟,突然出现防火墙窗口弹出要求允许它。不过本可以更快完成。 - Mohd.Zafranudin
是的,这种情况经常发生,但一旦Gradle同步过程完成,请切换到离线模式,除非您添加了新的依赖项并且互联网速度非常慢。 - Asad Mahmood

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