安卓Gradle构建时间指数级增长

5

我的Gradle构建时间通常在12秒左右,但经过约10-20次构建后,它会突然开始呈指数增长:30秒、50秒、2分钟、5分钟等,最终导致内存溢出。

正常构建:

:app:compileDev21DebugJavaWithJavac 4.783s
:app:transformClassesWithRealmTransformerForDev21Debug  3.011s
:app:transformClassesWithDexForDev21Debug   2.133s
:app:compileRetrolambdaDev21Debug   1.325s
:app:packageDev21Debug  0.997s
:app:processDev21DebugResources 0.703s

在进行了10到20次这样的操作后,它开始增加:

:app:transformClassesWithDexForDev21Debug   39.172s
:app:compileDev21DebugJavaWithJavac 34.221s
:app:packageDev21Debug  9.922s
:app:transformClassesWithRealmTransformerForDev21Debug  8.353s
:app:compileRetrolambdaDev21Debug   3.120s
:app:fabricGenerateResourcesDev21Debug  1.376s

您可以看到,每个任务的时间都在增加。
我使用的是Android Studio 2.2.2版本,但自从3个版本前以来就一直遇到这个问题。Gradle版本号为2.14.1。可能与我们的项目有关。我使用Mac电脑,与我合作的同事在Windows电脑上也遇到了相同的问题。如果我关闭AS,杀掉Java进程,然后再重新启动AS,这个问题会暂时解决。
目前我还没有使用Jack编译器。
需要明确的是:我的构建时间并不是普遍缓慢的,13秒是可以接受的。这不是所有“构建时间慢”的问题的重复。只有在进行10-20次构建后,每次构建所需的时间呈指数级增长。
更新:将Gradle构建设置为“离线”并没有帮助。使用“gradle-3.1-all.zip”(在grade-wrapper.properties中的distributionUrl)也没有帮助。
是否有人遇到过这个问题并知道解决方法?

1
@MuratK. 你在哪里看到的? - Blackbelt
1
@cricket_007 你可以通过启用jackOptions并将compileOptions设置为Java 1.8来进行测试。编译时间会急剧增加。 - Murat Karagöz
1
我修改了我的问题:我目前还没有使用Jack编译器。这不是重复的问题:构建时间通常都很好,但在进行10-20次构建后会增加。我将尝试使用gradlew。 - Frank
1
@cricket_007请认真阅读问题,这不是重复的。你链接的那篇文章已经过时了,与gradle的普遍缓慢特别是在那些日子里有关。这是关于一个通常快速构建,在工作几个小时后变得更慢的问题。 - Richard Le Mesurier
1
1 - 你在使用Android Studio中的Gradle Wrapper吗? 2 - 这个问题是在执行10-20次gradle(w) assemble后出现的吗?还是只在AS中出现?(请编辑问题并附上答案) - petey
显示剩余6条评论
2个回答

1
我经历了(而且某种程度上仍在面临)同样的问题。有一些解决方法可以尝试。
1- 使Gradle构建离线。
2- 在机器上安装Gradle,并在Android Studio中勾选离线工作,使用本地安装代替连接代理并花费更多时间建立Studio缓存的包装器。
我遵循了thisthis文章,这帮助了我,虽然不是非常显著,但足以让我连续开发了近6、7个小时的8GB内存系统,然后我不得不和。

将Gradle构建设置为“离线”没有帮助。使用“gradle-3.1-all.zip”(在grade-wrapper.properties中的distributionUrl)也没有帮助。现在我会尝试第二个方法。 - Frank

-1

自从我移除了 Fabric(CrashLytics)并将其替换为 FireBase Crashes,问题就已经解决了。Fabric 很可能是原因,但我不能100%确定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接