为什么在打包iOS的Adobe AIR应用程序时FDT显示Java堆错误(.IPA)

时间:2012-05-23 21:06:06

标签: ios eclipse air adobe fdt

我正在使用Adobe AIR创建一些Flash游戏。我尝试将其编译成.ipa文件(在iPad设备上运行)。

该项目并不大,但也不小(它使用6个swc库和许多未预编译的代码)。我尝试使用两种方法用Flash FDT 5.5打包我的游戏:

  • 快速 - 工作正常,但性能非常糟糕;
  • 标准 - 我的编译结束时出现以下错误:
  

包装失败!包装错误信息:捡起来   JAVA_TOOL_OPTIONS:-Xmx3072M线程“main”中的异常   java.lang.OutOfMemoryError:Java堆空间at   java.util.TreeMap.put(未知来源)at   adobe.abc.Algorithms $ SetMap.get(Algorithms.java:225)at   adobe.abc.Algorithms.addUses(Algorithms.java:164)at   adobe.abc.Algorithms.findUses(Algorithms.java:186)at   adobe.abc.GlobalOptimizer.cp(GlobalOptimizer.java:9381)at   adobe.abc.GlobalOptimizer.dce(GlobalOptimizer.java:9627)at   adobe.abc.GlobalOptimizer.sccp(GlobalOptimizer.java:4638)at   adobe.abc.GlobalOptimizer.optimize(GlobalOptimizer.java:3514)at at   adobe.abc.GlobalOptimizer.optimize(GlobalOptimizer.java:2215)at at   adobe.abc.LLVMEmitter.optimizesABCs(LLVMEmitter.java:527)at at   adobe.abc.LLVMEmitter.generateBitcode(LLVMEmitter.java:337)at at   com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcodeImpl(AOTCompiler.java:510)     在com.adobe.air.ipa.BitcodeGenerator.main(BitcodeGenerator.java:80)   拿起JAVA_TOOL_OPTIONS:-Xmx3072M编译失败了   执行:ADT拿起JAVA_TOOL_OPTIONS:-Xmx3072M拿起   JAVA_TOOL_OPTIONS:-Xmx3072M

我知道这是Eclipse devlopment的常见问题。我试图以标准方式解决这个问题 - >增加java堆大小。正如你所看到的那样,我已经设定了足够的3072M。

当我尝试编译较小的项目时,它工作正常。我不知道现在要做什么:(。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

经过深入调查,我找到了解决方案。这不是由于任何环境配置,但正如@Alan所说,Adobe的打包器遇到了问题。正如我想的那样,它是在“优化”阶段遇到问题。

这是一个非常有用的论坛主题:http://forums.adobe.com/message/4445973#4445973

我的项目是使用NAPE物理引擎。正如我在那里发现的那样:http://deltaluca.me.uk/forum/index.php/m/2148/0ce4c49cc2c79979154c56737d2978a4/人遇到了编译时的问题。在我的情况下,编译时间是无限的;),以java的内存不足异常结束。解决方案是使用最新的NAPE构建,作者稍微优化了一下。这种“小优化”使我的项目有效。

总结一下:如果您遇到类似问题,请检查您的代码。尝试找到一些巨大的功能/方法,Adobe的打包器很难实现最佳化。

答案 1 :(得分:0)

-Xmx3072M不是有效的Eclipse参数。将“eclipse.ini”设置和其他Java设置恢复为默认设置,它应该可以正常工作。您可能将其设置得太高,以至于JVM的其他部分内存不足。

从堆栈跟踪可以看出,它不是Eclipse或FDT问题。 Adobe的打包器遇到了问题。如果默认设置仍然不起作用,那么请参阅为Java提供更多内存。如果这不起作用,请慢慢增加Eclipse的内存以查看它是否有效。