【问题标题】:jvmargs=-xmx2048m dex in process for cordovajvmargs=-xmx2048m dex 正在处理cordova
【发布时间】:2026-01-03 01:20:04
【问题描述】:

cordova build 告诉我以下内容

要在进程中运行 dex,Gradle 守护进程需要更大的堆。它 目前大约有 910 MB。为了更快的构建,增加 Gradle 守护程序的最大堆大小超过 2048 MB。去做 这个在项目中设置org.gradle.jvmargs=-Xmx2048M gradle.properties。有关更多信息,请参阅 https://docs.gradle.org/current/userguide/build_environment.html

如何在 cordova 中将 jvmargs 设置为 -xmx2084M?是否可以通过 config.xml 或者我必须使用钩子?

干杯并感谢

【问题讨论】:

    标签: android cordova android-gradle-plugin


    【解决方案1】:

    尝试在启动 gradle 守护进程之前设置此环境变量

    export GRADLE_OPTS=-Xmx2g
    

    编辑

    等等..你为什么不能按照消息说的做?

    在项目 gradle.properties 中设置 org.gradle.jvmargs=-Xmx2048M

    【讨论】:

      【解决方案2】:


      您需要在您的platforms/android 文件夹中放置一个名为build-extras.gradle 的文件。 Cordova 将自动读取文件并为您加载配置。
      您可以手动或通过挂钩执行此操作。第一个选项的问题是,如果你删除你的平台文件夹,也会被删除。

      文件内容指定最大堆大小:

      android {
        dexOptions {
          javaMaxHeapSize "2048m"
        }
      }
      

      如果你想用钩子选项,内容应该是这样的:

      #!/usr/bin/env node
      'use strict';
      var fs = require('fs');
      var rootdir = process.argv[2];
      if(fs.existsSync(rootdir + '/platforms/android')){
        console.log('Add build-extras.gradle');
        fs.createReadStream(rootdir + '/build-extras.gradle').pipe(fs.createWriteStream(rootdir + '/platforms/android/build-extras.gradle'));
      }
      

      您需要将文件放在hooks/after_prepare/ 文件夹中。这会自动运行你的钩子。

      【讨论】: