繁体   English   中英

Android Studio gradle 构建时间过长

[英]Android Studio gradle takes too long to build

我的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  

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

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

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

注意:在较新版本的 Android studio 中, View->Tool Windows->Gradle->Toggle button of online/offline

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

检查这个以减少构建时间

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

如果您使用的是 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

找到了一种简单且最好的方式来构建 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

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

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

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

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

等级

 jackOptions {
        enabled true
  }

  compileOptions {
    targetCompatibility 1.8
    sourceCompatibility 1.8
}

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

有问题与 Jack 编译需要很长时间

项目经理的回答

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

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

推荐阅读: 我如何在 Gradle 构建上每周节省 5 小时

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

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

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

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

在此处输入图片说明

图标有点混乱,无论如何,当突出显示切换按钮时启用离线模式。 :)

@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'

谢谢

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

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

2)您也可以尝试在android studio中启用“离线工作”,就像这里建议的那样,这是有道理的。 这不会在您每次构建时重新获取库。 也许在禁用“离线工作”的情况下缓慢连接或使用代理/VPN 可能会导致构建时间变慢。

3)谷歌服务 - 正如这里提到的,不要使用整个包,只使用它需要的部分。

我很长一段时间都面临同样的问题,但我通过调整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

    }
}

这应该会减少您的构建时间。

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

它将我们在代码中所做的更改分为三部分:热插拔、热插拔和冷插拔,基于更改会对构建施加多少负载。 之后,它只需交换已经运行的应用程序中的代码,我们就可以看到运行几秒钟的更改。 有关更多信息,请参阅他们的文档

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

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

检查 Windows 操作系统中的磁盘使用情况...

问题可能与此有关,就我而言,我的 Windows 8 操作系统消耗了 100% 的磁盘使用率。

尤其是 Windows 搜索服务,可能是最耗电的。 禁用它:

cmd(管理员)

net.exe stop "Windows search"

检查此链接修复 100% 磁盘使用率和提高 Windows 性能的 4 个技巧

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

我遇到过这样的问题,尤其是在通过手机主动调试时; 有时需要27分钟。 我做了以下几件事,并记下每件事下面的解释——一个可能对你有用:

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

org.gradle.daemon=true

org.gradle.configureondemand=true

org.gradle.parallel=真

android.enableBuildCache=true

org.gradle.caching=true

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

  1. 就我而言,这并没有完全解决我的问题。 因此,我也按照其他人之前的建议做了 - 让我的构建过程离线:

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

全局 Gradle 设置(底部)

标记名为:离线工作的复选框。

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

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

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

检查:重新启动代码更改活动...

  1. 上面的移动也不稳定,因此我试图找出问题是否可能是直接在我的手机和计算机上运行的进程/内存。 在这里,我释放了手机和存储(利用率为 98% - 降至 70%)以及任务管理器 (Windows) 中的一些内存空间,将 Android Studio 和 Java.exe 的优先级提高到高。 谨慎迈出这一步; 取决于你电脑的内存。

  2. 毕竟,我在手机上积极调试时的构建时间有时会下降到 1 到 2 分钟,但有时会飙升。 我决定做一个让我感到惊讶的 hack,它在同一个项目中将它降到了最好的几秒,而这个项目给了我 22 - 27 分钟是 12 秒!:

连接手机调试然后点击运行

启动后,拔下电话 - 构建应该继续更快,并在最后引发错误,表明:会话“应用程序”:安装 APK 时出错

重新连接手机并再次单击运行...

或者

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

编辑

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

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

我做的第一件事是启用离线模式(1. 通常在编辑器的右侧单击 Gradle 2. 单击连接按钮进行切换)它减少了20%的 gradle 构建时间

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

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

在您的 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'}

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

我遇到了同样的问题,甚至 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
 }

就我而言,经过几天的研究和尝试一切,我不得不降级 Kotlin 版本。 我使用的是最新的 1.6,20 (04 / 2022)。 我尝试了 1.6,0 版本,它是一样的。 我不得不从从未构建(我等了 26 小时但仍在运行)降级到 1.5.32 到几秒....

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM