Android Studio gradle需要很长时间才能构建

时间:2015-04-01 12:55:44

标签: android android-studio build gradle build.gradle

我的 Android Studio 项目用于构建速度更快,但现在需要很长时间才能构建。可能导致延误的任何想法? 我试过https://stackoverflow.com/a/27171878/391401但没效果。我没有运行可能会中断构建的Anti病毒。我的应用程序也没有那么大(大约 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  

24 个答案:

答案 0 :(得分:412)

在Android Studio中转到 档案 - >设置 - >构建,执行,部署 - >构建工具 - >摇篮

(如果在Mac上) Android Studio - >偏好... - >构建,执行,部署 - >构建工具 - >摇篮

检查“离线工作”'根据' Global Gradle设置'

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

check this to reduce build time

如果您刚刚在Gradle中添加了新的依赖项,则必须取消选中脱机工作,否则gradle将无法解析依赖项。完成解析后,您可以查看离线工作以获得更快的构建

答案 1 :(得分:144)

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

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

仅使用您的应用实际使用的那些Google API。如果你使用的只是谷歌地图,你可以使用:

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

当我这样做时,我的编译时间从2分钟到大约25秒。有关您可以有选择地编译的Google API的列表,请参阅:

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

答案 2 :(得分:43)

找到一种简单且最好的方法来构建gradle

转到您的应用>>打开你的gradle.properties并从中更改几行[remove ]

否则您也可以复制粘贴我的以下代码段

    # 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

答案 3 :(得分:33)

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

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

答案 4 :(得分:17)

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

gradle这个

 jackOptions {
        enabled true
  }

  compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

删除上面的行后,它会在几秒钟内构建。

问题Compiling with Jack takes very long time

项目经理的答案

  

我们现在知道建立时间是杰克的问题。我们对2.4 Gradle插件进行了改进,这应该是增量构建的重大改进。

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

答案 5 :(得分:16)

遵循这些步骤将使其快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

答案 6 :(得分:15)

推荐阅读: How I save 5h/week on Gradle builds

根据这篇优秀的帖子,你应该尝试优化以下内容:

  • Gradle Daemon
  • 并行项目执行
  • 按需配置项目
  • 模块很贵......

答案 7 :(得分:7)

@AndroidDev解决方案为我工作。 我把整个lib都包含在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

答案 8 :(得分:3)

检查您的互联网连接。如果互联网速度很慢,那么gradle build也需要很长时间才能构建。我检查通过改变我的无线互联网连接与另一个良好的速度连接。现在建立时间很正常。请在转到其他解决方案之前尝试此操作。有人会错误地决定重新安装或更改设置。我希望它会有所帮助。谢谢和问候。

答案 9 :(得分:2)

1)我在我的gradle文件中添加了一些新的库依赖项之后,我的构建时间严重增加,结果发现我之后需要使用multidex。当我正确设置multidex时,我的构建时间上升到2-3分钟。因此,如果您希望更快的构建时间,请避免使用multidex,并尽可能减少库依赖项的数量。

2)您也可以尝试启用&#34;离线工作&#34;在android studio中,就像这里建议的那样,这是有道理的。每次进行构建时都不会重新获取库。使用&#34;离线工作&#34;可能会减慢连接速度或代理/ VPN使用速度。禁用可能会导致构建时间变慢。

3)google服务 - 如此处所述,不要使用整个捆绑包,只使用它所需的部分。

答案 10 :(得分:1)

我做的第二件事是卸载我的防病毒软件 (AVG Antivirus) {听起来很疯狂,但是,我不得不}。 它将 gradle 构建时间减少了 40%

我做的第一件事是启用离线模式 (1.通常点击编辑器右侧的Gradle 2.点击连接按钮切换) 它减少了高达 20%

的 gradle 构建时间

所以通过做这两件事,我的Gradle 构建时间减少了60%

答案 11 :(得分:1)

  1. 转到文件 - &gt;设置 - &gt; Gradle - &gt;将其设置为离线模式并检查

答案 12 :(得分:1)

在Android studio 2.0的测试版中,他们推出了一项名为Instant Run的功能。它通过一个重要因素减少了构建时间。核心概念是,Android Studio仅推动对已经运行的应用程序所做的微小更改。

它将我们在代码中所做的更改分为三个部分:热插拔,热插拔和冷交换,基于更改对构建的负载量。之后,它只是交换已经运行的应用程序中的代码,我们可以看到更改运行几秒钟。有关详细信息,请参阅doc

Here您可以下载Android Studio 2.0预览。

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

答案 13 :(得分:1)

我长时间遇到同样的问题,但我通过调整gradle中的设置解决了这个问题。

步骤1:在模块应用程序中添加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

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

    }
}

这会减少你的构建时间。

答案 14 :(得分:0)

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

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

特别是Windows搜索服务,是最耗费的。 禁用它:cmd(管理员)&gt; net.exe停止“Windows搜索”

我按照此链接中的说明解决了真正4 Tips to Fix 100% Disk Usage & Improve Windows Performance

的问题

希望这有帮助。

答案 15 :(得分:0)

我在kotlin遇到了同样的问题。更新过时的kotlin运行时为我解决了它

答案 16 :(得分: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时出错

     

重新连接手机,然后再次单击RUN ...

替代

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

编辑

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

答案 17 :(得分: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'}

答案 18 :(得分:0)

您可以尝试本文中的提示Why your Android Studio takes forever to build - Part 2,其中之一建议“启用离线模式”。

答案 19 :(得分:0)

在我的情况下,由于amazonaws上存在一个依赖项,Gradle同步太长了。这是可以被禁用的 transitive 依赖项

答案 20 :(得分: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
 }

答案 21 :(得分:0)

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

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

enter image description here

图标上有些混乱,反之,当突出显示切换按钮时,就会启用离线模式。:)

答案 22 :(得分:-3)

我的电脑上有类似的问题。 Windows Defender阻止了Gradle Building的某些部分。 我已经禁用它,之后工作正常。

答案 23 :(得分:-40)

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