我正在尝试编译依赖于OrmLite的Android应用程序,无论我做什么,我仍然会收到OutOfMemory错误。
我认为Maven没有传递任何关于堆大小的参数的原因是我只能在其输出中看到以下内容:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java -jar /Users/mikhail.borozdin/android-sdk-macosx/platform-tools/lib/dx.jar - -dex --output = / Users / mikhail.borozdin / Documents / workspace / AndroidOrmLiteTest / target / classes.dex
我是如何尝试将参数传递给JVM的?
这些都没有奏效。
答案 0 :(得分:4)
如果您正在构建的项目使用android-maven-plugin,则需要在maven pom.xml文件中设置dex mojo configuration,例如:
<dex>
<jvmArguments>
<jvmArgument>-Xms256m</jvmArgument>
<jvmArgument>-Xmx512m</jvmArgument>
</jvmArguments>
</dex>
以下是完整pom.xml文件的示例:
https://github.com/rtyley/agit/blob/a014c970/pom.xml#L116-121
请注意,dex配置的特定xml在android-maven-plugin版本3.0.0(其中包含 lot 其他重要改进)的准备阶段进行了一些改进 - 我建议确保您使用的是此版本,并且配置肯定是使用<dex>
节点。
在v3.0.0之后的版本中的android-maven-plugin will use a 1GB heap by default(在撰写本文时尚未发布)。