6

我正在使用 android studio v 3.1。操作系统 - Windows 10。具有 16 GB 内存的 Core i5。下面是构建分析的结果

:app:transformClassesWithDesugarForDevelopmentQuickbuild 35.137s

:app:compileDevelopmentQuickbuildJavaWithJavac 31.917s

:app:transformClassesWithDexBuilderForDevelopmentQuickbuild 28.579s

:app:compileDevelopmentQuickbuildKotlin 20.145s

:app:transformClassesWithMultidexlistForDevelopmentQuickbuild 16.873s

:app:mergeDevelopmentQuickbuildResources 16.363s

:app:transformResourcesWithMergeJavaResForDevelopmentQuickbuild 7.958s

:app:transformNativeLibsWithMergeJniLibsForDevelopmentQuickbuild 6.483s

:app:processDevelopmentQuickbuildResources 4.835s

项目 gradle.properties 具有以下配置

org.gradle.parallel=true
org.gradle.configureondemand=true
org.gradle.daemon=true
android.enableBuildCache=true
kotlin.incremental=true

仍然对于任何单行更改构建至少需要 2.3 分钟。这个问题只发生在 windows 和 ubuntu 上,相同的配置需要 15-20 秒。还可以做些什么来减少构建时间?

4

2 回答 2

1

在(Android Studio 3.1)中gradle.properties添加这两行:-

 android.enableD8.desugaring=true
 android.enableD8=true

您还可以添加多索引

 multiDexEnabled true

defaultConfig

于 2018-03-30T08:48:48.447 回答
1

我在下面写了所有常用的技巧。

同样在我的机器上,Linux 赢得了 Windows 与 Linux 的 gradle 之战。但是,增加堆大小可能会帮助您更接近 ubuntu 编译时间。

增加堆大小

从 Android Studio 2.0 开始,进程中的所有 dex 都在单个 VM 中运行,并且该 VM 也与 gradle 共享。这需要更多的内存来容纳所有的东西。

默认情况下,Windows 下的堆大小为 1GB。您必须增加堆大小。您拥有的 RAM 越多,您可以使用的内存就越多。

对于 8Gb RAM 开发者机器,我发现 3GB 堆大小是最佳选择。对于您的 16GB 机器,您可以自由地尝试更大的堆大小。

怎么做?

将下面的行添加到您的 gradle.properties:

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

并行构建

(我看到你已经这样做了,但我在这里提一下供其他人阅读。)

如果您的项目中有多个模块,请允许 gradle 并行构建您的项目。

怎么做?

将下面的行添加到您的 gradle.properties:

org.gradle.parallel=true

按需配置

(我看到你已经这样做了,但我在这里提一下供其他人阅读。)

Gradle 提供了——configure-on-demand 标志,它将告诉 gradle 只构建它真正需要的组件。

基本上,它告诉 Gradle 配置仅与请求任务相关的模块,而不是配置所有模块。

此设置通常与多个模块项目相关,但请注意您的项目也可能因使用此标志而受益的库。

例如 Google I/O 应用程序有两个组件 Android(包含与 android 应用程序相关的源代码)和 Server(包含与后端服务器相关的代码)。使用默认的 graddle 设置,它们都在编译时进行配置。

怎么做?

将下面的行添加到您的 gradle.properties:

org.gradle.configureondemand=true

...或访问 Preferences > Build, Execution, Deployment > Compiler 并检查按需配置选项。

启用 Gradle 守护程序

(我看到你已经这样做了,但我在这里提一下供其他人阅读。)

Gradle 在 Java 虚拟机 (JVM) 上运行,并使用多个需要大量初始化时间的支持库。因此,有时启动起来似乎有点慢。这个问题的解决方案是 Gradle 守护进程:一个长期存在的后台进程,它可以比其他情况更快地执行您的构建。

您将无法在第一次构建中看到时间差,但在 gradle 守护程序初始化后,后续构建中的构建时间会减少。

如果您使用 gradle 3.0 或更高版本,则默认情况下启用 gradle 守护程序。如果您在旧版本上运行,则不是。

怎么做?

将下面的行添加到您的 gradle.properties:

org.gradle.daemon=true
于 2018-03-30T09:36:02.130 回答