jvmargs=-xmx2048m dex 正在处理cordova

Posted

技术标签:

【中文标题】jvmargs=-xmx2048m dex 正在处理cordova【英文标题】:jvmargs=-xmx2048m dex in process for cordova 【发布时间】:2016-12-15 16:20:29 【问题描述】:

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 或者我必须使用钩子?

干杯并感谢

【问题讨论】:

【参考方案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/ 文件夹中。这会自动运行你的钩子。

【讨论】:

谢谢!这看起来不错,issues.apache.org/jira/browse/CB-10096 有一个问题应该得到解决,但对我来说它不起作用,该更改是否已经发布?

以上是关于jvmargs=-xmx2048m dex 正在处理cordova的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins 不以 -Xrs -Xmx2048m -XX:MaxPermSize=512m 开头(windows)

使用idea社区版编译spring5源码

我得到执行异常和大堆错误

set mapred.child.java.opts=-Xmx2048M;

加速Android Studio编译速度

如何限制 DEX 内存使用