Android Studio Gradle构建时间太长


225

我的Android Studio项目过去生成速度更快,但现在需要很长时间才能生成。有什么想法会导致延误吗?我已经尝试过https://stackoverflow.com/a/27171878/391401,但没有效果。我没有运行任何防病毒软件,可能会中断构建。我的应用程序大小也不大(大约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
您使用什么,您的Android手机或任何模拟器来运行您的应用程序?
Ram Mansawala 2015年

在设备上运行
Harish

3
为何Google从eclipse切换到Android Studio...。Android Studio很烂
kapil

38
当Android Studio刚推出时,StackOverflow上的许多人都对此表示不满,因为它只是“测试版”。但是,距离它“仅是beta”已经有好几年了,它仍然很缓慢,它使用8核,16GB内存和SSD磁盘。在这台机器上设置的旧Eclipse很快就可以完成。
Andrew S

Answers:


453

在Android Studio中,转到文件->设置->构建,执行,部署->构建工具-> Gradle

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

检查“全局Gradle设置”下的“离线工作”

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

检查以减少构建时间

如果只是在gradle中添加了新的依赖项,则必须取消选中脱机工作,否则gradle将无法解析依赖项。完成解析后,您可以检查脱机工作以加快构建速度


11
很棒。从12分钟到5秒
拉梅什(Ramesh)2016年

18
当我们将新库添加到build.gradle时,此配置不会停止获取新库吗?
Dany Y

48
当您添加一个新库时,您只需要使其在线一次,这将由gradle build通知,以使项目可运行@DanyY
Biswajit Karmakar,

15
这是否意味着问题一直都是互联网速度而不是处理器速度?

1
哇!从超过15分钟到1分钟:O
红衣主教-恢复莫妮卡

150

如果您使用的是Google Play服务,请确保未在Gradle构建脚本中使用此服务:

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

仅使用您的应用真正使用的Google API。如果您只使用Google地图,则可以使用以下方法:

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

当我这样做时,我的编译时间从2分钟以上缩短到25秒左右。有关可以有选择地进行编译的Google API的列表,请参见:

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


12
您应获得100多个投票。其他所有来源都建议添加org.gradle.parallel=true和与命令行相关的信息...但是没有一个提供了对实际情况的简单直接理解。根据您的建议,我的构建时间从1分钟5秒缩短到3.427秒。太棒了!!
索伦

非常感谢,这也是我的主要问题。现在一切正常。
alnaji '16

1
效果很好。使用此链接找到您的播放服务库名称:developers.google.com/android/guides/...
PC。

你该当的...你解决了我的问题。问题出在Google Play服务上。。。谢谢:)
Karue Benson Karue's

这不仅有助于解决构建时间过长的问题,而且我现在还可以在调试时不使用Proguard的情况下直接部署到Android设备(以前我遇到有关65K方法限制的错误)。谢谢!
magritte

52

找到一种简单而最佳的方法来构建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内存,因此我为gradle分配了4GB


这将我的构建时间从30分钟以上减少到了24分钟...有什么方法可以减少更多时间...?
编程海盗

34

找到原因!!如果Android Studio具有代理服务器设置,但无法访问服务器,则构建时间会很长,可能是它试图访问代理服务器并等待超时。当我删除代理服务器时,设置其工作正常。

删除代理: File > Settings > Appearance & Behavior > System settings > HTTP Proxy


3
如何删除代理服务器?
Joolah 2015年

2
在Windows上
Harish

2
我的问题也是在代理中,但那是必须在gradle属性中添加HTTPS代理。HTTP代理是不够的:systemProp.http.proxyHost = xxx.xxx.xxx.xxx
systemProp.http.proxyPort

26
AS是一个完整的笑话和BS。我只是对这种胡说八道感到厌倦。
The_Martian '16

9
我同意!!!从Eclipse迁移一个大项目使我痛苦不堪,现在已经清除了错误,使用AS进行构建从未完成!!!我讨厌AS @The_Martian
乔什(Josh)

20

遵循以下步骤将使其速度提高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

4
您可以直接从位于Studio项目下的gradle.properties中进行设置。
Biswajit Karmakar

3
是的,还启用此选项。org.gradle.jvmargs = -Xmx2048m -XX:MaxPermSize = 512m -XX:+ HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8
user779370

2
设置MaxPermSize = 1024m
Biswajit Karmakar

为什么这些属性不是预定义的?有没有缺点?
奥利2016年

此选项仅应与解耦的项目一起使用。更多详细信息,请访问gradle.org/docs/current/userguide/...
贾瓦德

17

启用Java 8功能会导致致命的缓慢构建

摇动

 jackOptions {
        enabled true
  }

  compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

删除以上几行后,它会在几秒钟内生成。

有一个问题,用杰克编译需要很长时间

项目经理的答案

我们知道,构建时间现在是Jack的问题。我们对2.4 Gradle插件进行了改进,这对于增量构建而言应该是一项重大改进。

到目前为止,我可以找到的最新Gradle版本是2.3.0-beta4


4
是的我同意。要在android studio中启用Java 8,您需要使用Jack,通过这样做,我的构建时间会从1-2分钟的构建飞到月球的16分钟……这是什么……。目前无法使用。与往常一样,出色的作品Google
KarolŻygłowicz17年


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'

n


4

检查您的Internet连接。如果互联网速度很慢,gradle构建也将花费很长时间。我通过更改我的wifi互联网连接来检查另一个良好的速度连接。现在构建时间很正常。在尝试其他解决方案之前,请尝试此操作。有人会错误地决定重新安装或更改设置。希望对您有所帮助。感谢致敬。


确保在防火墙上允许使用Android Studio。当防火墙窗口突然弹出要求我允许它时,等待了将近15分钟的新安装gradle。不过
应该早些

2

1)在我的gradle文件中添加了一些新的库依赖项之后,我的构建时间大大增加了,结果证明我此后需要使用multidex。当我正确设置multidex时,我的构建时间将增加2-3分钟。因此,如果要缩短构建时间,请避免使用Multidex,并尽可能减少库依赖项的数量。

2)同样,您也可以尝试在android studio中启用“离线工作”,如此处建议的那样。这不会在每次构建时都重新获取库。禁用“脱机工作”的慢速连接或代理/ vpn使用可能会导致构建时间变慢。

3)Google服务-如此处所述,请勿使用整个捆绑软件,仅使用其中需要的部分。


1

在Android Studio 2.0的测试版中,他们推出了一项名为Instant Run的功能。它大大减少了构建时间。核心概念是,Android Studio仅将所做的微小更改推送到已运行的应用程序中。

根据更改将对构建产生的负载,它将在代码中所做的更改分为三个部分:热交换,热交换和冷交换。之后,它只是在已经运行的应用程序中交换代码,我们可以看到更改在运行几秒钟。请参阅他们的文档以获取更多信息。

在这里您可以下载Android Studio 2.0预览版。

PS:此功能存在一些问题。他们已经在文档中列出了它。安装前先检查一下。



1

我长期面对相同的问题,但是我通过调整gradle中的设置解决了这个问题。

步骤1:在Module app中,在BuildScript中添加依赖项

buildscript {
 dependencies {
         classpath 'com.android.tools.build:gradle:2.0.0-alpha9'
}
}

步骤2:添加dexOption并提供以下heapSize

  dexOptions {
    incremental = true;
    preDexLibraries = false
    javaMaxHeapSize "4g"
}

步骤3:添加产品

    productFlavors {
    dev {
        minSdkVersion 23
        applicationId = "com.Reading.home"
    }
    prod {
        minSdkVersion 15
        applicationId = "com.Reading.home" // you don't need it, but can be useful

    }
}

这将减少您的构建时间。


0

如果您使用的是Windows 8 ...

DroidArc和AndroidDev解决方案在有用的地方,但不是很实用。我的问题与Windows 8操作系统及其100%磁盘使用率有关。

特别是Windows搜索服务是最消耗资源的。使用以下命令禁用它:cmd(Admin)> net.exe停止“ Windows搜索”

我按照此链接中的说明进行操作,它解决了真正的4个技巧,可解决100%磁盘使用率和提高Windows性能的问题

希望这可以帮助。



0

我遇到这样的问题,尤其是在通过手机积极调试时;有时花了27分钟。我做了以下事情,并注意每一项下的解释-可能对您有用:

  1. 更改了我的gradle.properties文件(如果您具有Android选项或项目文件夹中的项目文件视图,则在Gradle脚本下)。我添加了此内容是因为我的计算机有一些可用内存-您可以在最后根据计算机规格和android studio最低要求(Xmx8000m -XX:MaxPermSize = 5000m)分配不同的值:

org.gradle.daemon = true

org.gradle.configureondemand = true

org.gradle.parallel = true

android.enableBuildCache = true

org.gradle.caching = true

org.gradle.jvmargs = -Xmx8000m -XX:MaxPermSize = 5000m -XX:+ HeapDumpOnOutOfMemoryError -Dfile.encoding = UTF-8

  1. 这并不能完全解决我的问题。因此,我还按照其他人之前的建议做了-使我的构建过程脱机:

文件->设置/首选项->构建,执行,部署-> Gradle

全局Gradle设置(在底部)

选中名为“离线工作”的复选框。

  1. 这大大减少了时间,但是却不稳定。有时需要更长的时间。因此,我对即时运行进行了一些更改:

文件->设置/首选项->构建,执行,部署->即时运行

选中:启用即时运行以热插拔代码...

选中:重新启动代码更改活动...

  1. 上面的操作也很不稳定,因此我试图找出问题是否可能是直接在我的手机和计算机上运行的进程/内存。在这里,我释放了电话和存储中的少量内存空间(利用率为98%-降至70%),还释放了任务管理器(Windows),从而将Android Studio和Java.exe的优先级都提高了。谨慎地执行此步骤;取决于计算机的内存。

  2. 经过所有这些工作之后,我在手机上积极调试时的构建时间有时会减少到1〜2分钟,但有时会增加。我决定做一个骇人听闻的破解程序,因为它使我感到惊讶,因为它在给我22-27分钟的12个项目中只有12秒!

连接手机进行调试,然后单击“运行”

启动后,拔下电话的电源-构建过程应继续进行,并在结束时提示错误:会话'app':安装APK时出错

重新连接手机,然后再次单击“运行” ...

交替地

如果我要调试的脚本/函数/方法完全是JAVA,而不是JAVA-android,例如,使用JSONArrays / JSONObjects测试API,则可以在Netbeans上测试我的Java函数/方法,它可以编译单个文件并更快地显示输出,然后执行对Android Studio文件进行必要的更改。这也为我节省了很多时间。

编辑

我尝试在本地存储中创建一个新的android项目,并将所有文件从上一个项目复制到新的文件中-java,res,manifest,gradle应用程序和gradle项目(具有最新的gradle类路径依赖项)。现在,我可以在不到15秒的时间内建立手机。


0

在build.gradle中,如果您具有用于调试的minifyEnabled,请将其删除。我在项目中安装了它,花了大约2-3分钟。查看构建进度后,我发现这是罪魁祸首,因此删除下面的注释行,解决了我的问题。

buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }//debug{
         //   minifyEnabled true
         //   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}


0

我遇到了同样的问题,即使gradle版本运行了8个小时,我也很担心。但是后来我像这样在build.gradle文件中更改了编译sdk版本和最低sdk版本。

较旧:

android {
compileSdkVersion 25
buildToolsVersion "29.0.2"

defaultConfig {
    applicationId "com.uwebtechnology.salahadmin"
    minSdkVersion 9
    targetSdkVersion 25
}

新增(更新):

android 
{
  compileSdkVersion 28
   buildToolsVersion "25.0.2"

 defaultConfig {
    applicationId "com.uwebtechnology.salahadmin"
    minSdkVersion 15
    targetSdkVersion 28
 }

-2

我的计算机上有类似的问题。Windows Defender阻止了Gradle Building的某些部分。我已将其禁用,此后运行良好。


-43

尝试重新启动计算机并再次运行Android Studio。在尝试使用Android目标代码库构建Cordova / Phonegap项目时为我工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.