离子android构建 - 没有足够的内存来启动jvm

时间:2015-05-20 09:53:29

标签: android ionic hybrid-mobile-app

当尝试使用ionic和gradle创建一个android apk文件时,我收到错误

FAILURE: Build failed with an exception.

* What went wrong:
Unable to start the daemon process.
This problem might be caused by incorrect configuration of the daemon.
For example, an unrecognized jvm option is used.
Please refer to the user guide chapter on the daemon at http://gradle.org/docs/2
.2.1/userguide/gradle_daemon.html
Please read the following process output to find out more:
-----------------------
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

D:\test\platforms\android\cordova\node_modules\q\q.js:126
                    throw e;
                          ^
Error code 1 for command: cmd with args: /s /c "D:\test\platforms\android\gradle
w cdvBuildDebug -b D:\test\platforms\android\build.gradle -Dorg.gradle.daemon=tr
ue"
ERROR building one of the platforms: Error: D:\test\platforms\android\cordova\bu
ild.bat: Command failed with exit code 1
You may not have the required environment or OS to build this project
Error: D:\test\platforms\android\cordova\build.bat: Command failed with exit cod
e 1
    at ChildProcess.whenDone (C:\Users\9923\AppData\Roaming\npm\node_modules\cor
dova\node_modules\cordova-lib\src\cordova\superspawn.js:131:23)
    at ChildProcess.emit (events.js:110:17)
    at maybeClose (child_process.js:1015:16)
    at Process.ChildProcess._handle.onexit (child_process.js:1087:5)

我正在尝试在Windows 7桌面上执行此操作。 我的Java内存设置如下。

D:\test>java -XX:+PrintFlagsFinal -version | findstr /i "HeapSize PermSize Threa
dStackSize"
     intx CompilerThreadStackSize                   = 0               {pd produc
t}
    uintx ErgoHeapSizeLimit                         = 0               {product}
    uintx HeapSizePerGCThread                       = 87241520        {product}
    uintx InitialHeapSize                          := 67108864        {product}
    uintx LargePageHeapSizeThreshold                = 134217728       {product}
    uintx MaxHeapSize                              := 1044381696      {product}
     intx ThreadStackSize                           = 0               {pd produc
t}
     intx VMThreadStackSize                         = 0               {pd produc
t}
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)

我尝试在多个地方设置-Xms-Xmx,但系统无法启动它。我该如何解决这个问题?

我改变了

  

在“我的电脑”中添加了JAVA_OPTS>属性> Environment Variables
  在android SDK中的dx.bat中添加了JAVA_OPTS   在应用程序文件夹中的build.bat中添加了JAVA_OPTS   在gradle.properties

中更改了JAVA_OPTS

请帮忙

6 个答案:

答案 0 :(得分:19)

Barlrog30的解决方案对我不起作用,但启发了我。

这对我有用:

将环境可兑换GRADLE_OPTS设置为-Dorg.gradle.jvmargs=-Xmx512m

的值

我正在使用:

Windows 7 64bit + Jdk 32bit + cordova 5.3.1

答案 1 :(得分:4)

发现此问题是特定于环境的。发布答案只是为了帮助那些可能有这个不幸的问题的人。

  

通过在64位上安装32位JDK解决了这个问题   Windows 7。

安装前

  1. 转到“应用程序管理器”
  2. 删除所有JRE和JDK安装
  3. 删除与旧Java安装相关的所有环境变量
  4. 更新/删除Path变量中的所有Java相关条目。 (不要删除路径变量)
  5. 重新启动系统
  6. 安装下载的JDK
  7. 转到环境变量并添加所需的密钥
  8. 更新Path变量以包含JDK bin文件夹
  9. 我不知道为什么会这样,但问题已经解决了。

答案 2 :(得分:1)

我遇到了同样的问题。我读了你的答案并思考,"这似乎太过分了。"所以,我一直在挖掘。

我找到了这个答案:https://stackoverflow.com/a/9813900/3771976

它说要设置一个环境变量: GRADLE_OPTS=-Xmx512m

我不得不将内存限制进一步增加到1024,但它解决了这个问题。

Oracle Documentation for JVM Option

答案 3 :(得分:0)

尝试卸载英特尔®硬件加速执行管理器,然后重试。

答案 4 :(得分:0)

在我的情况下,我只需将Java Runtime Environment(JRE)和Java Development Kit(JDK)的所有环境变量都放到64位版本中。

为此,我去了oracle's website,只是下载了64位JRE和JDK。

在安装过程中,我检查过它已在C:\Program Files\Java不在 C:\Program Files (x86)\Java中安装得很好,

然后我设置了environnment变量:

 - JAVA_HOME: C:\Program Files\Java\jdk1.8.0_121
 - Path: "C:\Program Files\Java\jre1.8.0_121\bin" and "C:\Program Files\Java\jdk1.8.0_121\bin"

希望它有所帮助!

答案 5 :(得分:0)

将参数-Xmx2048m更改为1024或512 at line:args.push(' - Dorg.gradle.jvmargs = -Xmx1024m');在您的项目文件中

platforms\android\cordova\lib\builders\GradleBuilder.js

这对我有用!!