我正在尝试使用命令行Ant 编译一个非常大的多项目Android项目.我最初使用Ant 1.8.3,但后来升级到1.8.4(结果是徒劳).虽然我安装了Eclipse(Indigo,今天更新),但是这个项目的性质阻止了在Eclipse中使用Ant.
代码似乎生成正常,但当它到达操作的"dex"阶段时,它会得到两个错误之一,具体取决于我ANT_OPTS:"GC Overhead Limit Exceeded"或"Java Heap Space".
我用Google搜索并检查了Stack.发现各个环节后(参见这里,这里,该协议栈的问题,而这个问题堆栈,以及),我修改了蚂蚁的选择.(许多链接涵盖了在执行Java代码时发生的情况;我的问题实际上是在Ant进程中创建Android APK以进行上载).
我的ANT_OPTS环境变量目前是:
-Xms4g -Xmx4g -Xmn256m -XX:PermSize=256m -XX:MaxPermSize=1024m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:ParallelGCThreads=8
Run Code Online (Sandbox Code Playgroud)
我尝试完全关闭GC Overhead Limit -XX:-UseGCOverheadLimit
,但所有这一切都是给我一个Java Heap Space错误而不是GC Overhead Limit错误.我曾经问过我的同事,但他们也没有想法.
哦,还有一个"细节":我可以使用Eclipse来编译和加载项目,这看起来似乎"很好"; 然而,这个"元项目"所需的大量项目表明我试图让Ant脚本工作.
系统信息:
我还能做些什么吗?另一个要搜索的关键字?别的地方看?
对这个问题的部分回答。感谢当前的受访者,他们帮助我找到了这个问题。
显然,Java VM 选择有两个(可能是三个?)不同的地方需要更改,具体取决于错误发生的位置。在这种情况下,它们ANT_OPTS不会传递给 Dex。
我能够通过编辑 DX 批处理文件来解决该错误,更改:
set defaultXmx=-Xmx1024M
Run Code Online (Sandbox Code Playgroud)
到
set defaultXmx=-Xmx4096M
Run Code Online (Sandbox Code Playgroud)
然而显而易见的是:我永远不需要更改 dx 批处理文件。有人知道更改 Ant 传递给 Dex 的 Java 选项的“正确”方法吗?
| 归档时间: |
|
| 查看次数: |
5673 次 |
| 最近记录: |