Gradle(Android Studio)构建极长

Dan*_*ail 56 gradle android-studio

现在我们正处于构建时间为2分30秒的情况下进行非常简单的更改.这(与ANT相比)速度惊人,并且正在削弱整个团队的生产力.我正在使用Android Studio并使用"使用本地gradle分发".我试图给予更多的记忆力:

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

更多的记忆.并且它仍然不时给记忆带来错误.

线程"pool-1-thread-1"中的异常java.lang.OutOfMemoryError:超出GC开销限制

惊人.我正在使用并行选项和守护进程:

org.gradle.parallel =真

org.gradle.daemon =真

它并没有真正帮助.

我把上述参数放在〜/ .gradle/gradle.properties中(我甚至怀疑Android工作室是否忽略了这一点,所以我测试了 - 它并没有忽略它).

仍然从终端我在Android Studio中获得1:30构建时间与2:30,所以不确定那里有什么问题.与Ant相比,1:30仍然是疯狂的.如果您知道Android Studio正在做什么(或忽略或重写为gradle配置),我将不胜感激.

所以只需要CMD + B(简单编译)就可以在变化后超快,比如7秒.但是当涉及到运行应用程序时,它会启动任务dexXxxDebug,这只是在杀死我们.我试过试试

dexOptions {
    preDexLibraries = false
}
Run Code Online (Sandbox Code Playgroud)

没有帮助.

我知道gradle可能还没有为生产环境做好准备,但我开始后悔我们决定尽早采取行动.我们有很多模块,这可能是问题的一部分,但这不是Ant的问题.

任何帮助表示赞赏,Dan

有关执行时间的更多信息:

描述持续时间

Total Build Time    1m36.57s
Startup 0.544s
Settings and BuildSrc   0.026s
Loading Projects    0.027s
Configuring Projects    0.889s
Task Execution  1m36.70s
Run Code Online (Sandbox Code Playgroud)

时间吃的人:app:dexDebug 1m16.46s

Sco*_*rta 134

我不太确定为什么Android Studio比命令行慢,但你可以通过启用增量dexing来加速你的构建.在模块的构建文件中,将此选项添加到android块中:

dexOptions {
    incremental true
}
Run Code Online (Sandbox Code Playgroud)

在该dexOptions块中,您还可以指定dex进程的堆大小,例如:

dexOptions {
    incremental true
    javaMaxHeapSize "4g"
}
Run Code Online (Sandbox Code Playgroud)

这些选项来自adt-dev邮件列表(https://groups.google.com/forum/#!topic/adt-dev/r4p-sBLl7DQ)上的一个主题,该主题具有更多上下文.

  • javaMaxHeapSize在编译代码时帮助了我很多(将编译时间从1分钟缩短到19秒)但之前没有尝试过增量选项 - 稍后会尝试. (2认同)

vik*_*koo 12

我们的团队面临同样的问题.我们的项目超出了dex的方法限制(> 65k).因此,在库项目中,我们将以下选项放在build.gradle中:

dexOptions {
    jumboMode = true
    preDexLibraries = false
}
Run Code Online (Sandbox Code Playgroud)

在我们的项目build.gradle中:

 dexOptions {
    jumboMode = true
//  incremental true
}
Run Code Online (Sandbox Code Playgroud)

以前我们有增量真实.在评论之后它需要大约20秒运行,相比之下2分30秒.我不知道这可能会解决你的问题.但它可以帮助别人.:)