【问题标题】:Azure DevOps Gradle "Java heap space" errorAzure DevOps Gradle“Java 堆空间”错误
【发布时间】:2021-09-04 23:27:12
【问题描述】:

我正在为 ReactNative Android 应用程序使用用于 CI/CD 的 Azure DevOps 管道。

它已经运行了一段时间,但在我的最新版本中,Gradle 构建遇到以下错误:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:signProductionReleaseBundle'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.FinalizeBundleTask$BundleToolRunnable
   > Java heap space

我的azure-pipelines.yml 文件的相关部分如下所示:

pool:
  vmImage: "macos-latest" # I am using this image because I am also doing iOS builds (not sure if it's relevant to the problem)

jobs:
  - job: DeployAndroid
    steps:
      - task: Gradle@2
        inputs:
          gradleWrapperFile: "MyApp/android/gradlew"
          cwd: "MyApp/android"
          tasks: "bundleProductionRelease"
          publishJUnitResults: false
          javaHomeOption: "JDKVersion"
          sonarQubeRunAnalysis: false

Java heap space 不是一个描述性很强的错误,但假设它是一个内存问题似乎是合理的。我试图通过添加 gradleOptions argument 来增加最大 JVM 内存:

- task: Gradle@2
  inputs:
    gradleOptions: "-Xmx3072m"

默认值为-Xmx1024m,所以我认为将内存增加三倍(-Xmx3072m)可能会起作用。不幸的是,我仍然遇到同样的错误。

是否有人对如何修复此错误有任何其他想法?

【问题讨论】:

    标签: android azure gradle azure-devops azure-pipelines


    【解决方案1】:

    我发现有几个问题需要解决才能让它发挥作用。

    由于某种原因,azure-pipelines.yml 中的 gradleOptions 参数没有增加内存,即使文档显示它专门用于 -Xmx 标志。 (我想我的设置只是覆盖它)

    相反,我在我的gradle.properties 文件中添加了以下行:

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

    我发现 MacOS Azure 镜像有以下specs

    Mac pros with a 3 core CPU, 14 GB of RAM, and 14 GB of SSD disk space
    

    所以,我将 Xmx 标志(最大 JVM 堆内存大小)设置为相对较高的 10GB (10240m)。

    我其实不知道XX:MaxPermSize 是做什么的,但它也与内存有关。其他标志只与调试有关。


    这最终只是我问题的一半,但另一半与我最初的问题并不特别相关。

    我最初把所有的责任都归咎于 Azure,但我意识到我只在本地运行了调试包,而生产包在我的本地机器上也因同样的错误而失败。

    我的另一个问题是 React Native 所特有的。虽然它导致了同样的错误,所以我想两者都有某种关联。

    问题是我已升级到更新版本的 React Native,但错过了对 android/app/build.gradle 所做的一些更改。

    我怀疑我碰巧丢失的细节对任何人都非常有帮助,但如果你遇到这个错误,我建议你检查React Native Upgrade Helper,看看你的build.gradle 中是否缺少任何东西文件。

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-21
      • 2012-06-05
      相关资源
      最近更新 更多