Android构建工具26.0.2内存不足(lint)

Android构建工具26.0.2内存不足(lint),android,jenkins,jvm,Android,Jenkins,Jvm,嗨,我们有一个有30种产品口味的项目,我试着和詹金斯一起开发。 由于我们(针对Android Studio3)更新为: -梯度3.0.0 -构建工具26.0.2 我们在Lint中遇到内存不足异常: :app:lintUnexpected failure during lint analysis of null (this is a bug in lint or one of the libraries it depends on) `OutOfMemoryError:ByteStr

嗨,我们有一个有30种产品口味的项目,我试着和詹金斯一起开发。 由于我们(针对Android Studio3)更新为: -梯度3.0.0 -构建工具26.0.2

我们在Lint中遇到内存不足异常:

   :app:lintUnexpected failure during lint analysis of null (this is a bug in lint or one of the libraries it depends on)
    `OutOfMemoryError:ByteStreams.toByteArray(ByteStreams.java:176)
Files.readFile(Files.java:182)←Files$FileByteSource.read(Files.java:153)
Files.toByteArray(Files.java:252)←LintClient.readBytes(LintClient.kt:249)
ClassEntry.addEntries(ClassEntry.java:216)
ClassEntry.fromClassPath(ClassEntry.java:120)
LintClient.createSuperClassMap(LintClient.kt:997)`

    You can set environment variable `LINT_PRINT_STACKTRACE=true` to dump a full stacktrace to stdout. java.lang.OutOfMemoryError: Java heap space  at 
    com.google.common.io.ByteStreams.toByteArray(ByteStreams.java:176)  at 
    com.google.common.io.Files.readFile(Files.java:182)     at 
    com.google.common.io.Files$FileByteSource.read(Files.java:153)  at 
    com.google.common.io.Files.toByteArray(Files.java:252)  at 
    com.android.tools.lint.client.api.LintClient.readBytes(LintClient.kt:249)
我增加了Gradle内存(Gradle.properties org.Gradle.jvmargs=-Xmx3098M),但没有成功

所有productFlavors都有相同的java代码。结果apk具有不同的映像、包名称、语言和配置

构建将运行25个productFlavors,直到内存耗尽。 使用ps命令,我可以看到Gradle守护进程客户端进程的JVM选项,如: java-Djava.awt.headless=true-Xmx64M com.google.devtools.build.android.desugar.desugar 我不知道如何设置这个子进程的JVM选项(Android工具)

可能是gradle守护进程中的内存泄漏。 我观察到在我的productFlavors的前20个版本中,头大约是2G,然后增加到3G,gradle deamon jvm一直在做GC

有什么想法或建议吗


关于

我和你的处境一样。在升级android gradle(到3.0.0)和构建工具(到26.0.2)之后,我在Jenkins的从ubuntu机器上构建gradle时遇到了内存不足的错误(但在使用DexBuilderForrelease进行任务转换时)。同时,我将gradle的版本从3.5升级到4.3.0。由于我的代码没有更改,我认为有一个问题可能会导致这些更新中的一个内存泄漏

以下是解决方案:

export _JAVA_OPTIONS="-Xms2048m -XX:-UseGCOverheadLimit -XX:+UseConcMarkSweepGC" 
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m"
(参考:&)

编辑

经过两次构建后,即使我将内存增加到14gb:),似乎也出现了相同的错误,但我通过在gradle.properties文件中添加一行代码来解决了问题:

org.gradle.jvmargs=-Xmx4096m

我还增加了JavaVM内存,可以再次构建我的应用程序。我的观察结果是,每种产品口味的加载类都有所增加。我还在google@Gugelhupf上发表了一篇文章是的,你说得对。即使您增加了JVM的内存(我看到了:),在两次构建之后也可以看到相同的错误。但是如果您将这个块(org.gradle.jvmargs=-Xmx4096m)添加到gradle.properties中,一切都会像更新之前一样工作。您还可以删除JAVA选项、JACK服务器、VM参数等属性。