Android Studio Gradle构建时间太长

Android Studio gradle takes too long to build

我的Android Studio项目过去生成速度更快,但现在需要很长时间才能生成。 有什么想法会导致延误吗?
我已经尝试过https://stackoverflow.com/a/27171878/391401,但没有效果。 我没有正在运行的任何反病毒软件都可能中断构建。 我的应用程序大小也不大(大约5MB),它过去几秒钟就可以构建,但是不确定什么发生了变化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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


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

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

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

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

check this to reduce build time

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


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

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

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

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

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

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


找到一种简单而最佳的方法来构建gradle

转到您的应用>>打开gradle.properties,并从中更改几行[删除#]

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    # 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


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

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


遵循以下步骤将使其速度提高10倍,并将构建时间减少90%

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

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

将此行添加到文件中:

1
2
3
org.gradle.daemon=true

org.gradle.parallel=true


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

gradle这个

1
2
3
4
5
6
7
8
 jackOptions {
        enabled true
  }

  compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

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

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

项目经理的答案

We're aware that build times are an issue with Jack right now. We have improvements in the 2.4 Gradle plugin that should be a significant improvement for incremental builds.

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


推荐读物:
如何在Gradle版本上每周节省5小时!

根据这篇出色的文章,您应该尝试优化以下内容:

  • Gradle守护程序
  • 并行项目执行
  • 按需配置项目
  • 模块很贵...

@AndroidDev解决方案为我工作。
我已经将整个库包含在gradle中。

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

改变以解决问题。从4分钟到1分钟。

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

日Thnx


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


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

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

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


  • 转到文件->设置-> Gradle->将其设置为离线模式并检查

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

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

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

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


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

    步骤1:在Module应用程序中,在BuildScript中添加依赖项

    1
    2
    3
    4
    5
    buildscript {
     dependencies {
             classpath 'com.android.tools.build:gradle:2.0.0-alpha9'
    }
    }

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

    1
    2
    3
    4
    5
      dexOptions {
        incremental = true;
        preDexLibraries = false
        javaMaxHeapSize"4g"
    }

    步骤3:添加产品

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        productFlavors {
        dev {
            minSdkVersion 23
            applicationId ="com.Reading.home"
        }
        prod {
            minSdkVersion 15
            applicationId ="com.Reading.home" // you don't need it, but can be useful

        }
    }

    这将减少您的构建时间。


    在我的情况下,Gradle同步之所以这么长是因为amazonaws上存在一个依赖项。这是一个可传递的依赖关系,可以禁用


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

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

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

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

    希望这可以帮助。


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


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

  • 更改了我的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

  • 这并不能完全解决我的问题。因此,我还按照其他人以前的建议做了-使我的构建过程脱机:
  • File -> Settings/Preferences -> Build, Execution, Deployment -> Gradle

    Global Gradle Settings (at the bottom)

    Mark the checkbox named: Offline Work.

  • 这大大减少了时间,但是却不稳定。有时需要更长的时间。因此,我对即时运行进行了一些更改:
  • File -> Settings/Preferences -> Build, Execution, Deployment -> Instant Run

    Checked : Enable Instant Run to hot swap code...

    Checked: restart activity on code changes ...

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

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

  • Connect phone for debugging then click RUN

    After it starts, unplug the phone - the build should continue faster and raise an error at the end indicating this : Session 'app': Error Installing APKs

    Reconnect back the phone and click on RUN again...

    另外

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

    编辑

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


    您可以尝试这篇文章中的提示,为什么要永久构建Android Studio-第2部分。提示之一建议"启用离线模式"。


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

    1
    2
    3
    4
    5
    6
    7
    buildTypes {
            release {
                minifyEnabled true
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }//debug{
             //   minifyEnabled true
             //   proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}


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


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