从 Ant 构建 Android 应用程序失败并出现以下错误:
[apply]
[apply] UNEXPECTED TOP-LEVEL ERROR:
[apply] java.lang.OutOfMemoryError: Java heap space
[apply] at java.util.HashMap.<init>(HashMap.java:209)
[apply] at java.util.HashSet.<init>(HashSet.java:86)
[apply] at com.android.dx.ssa.Dominators.compress(Dominators.java:96)
[apply] at com.android.dx.ssa.Dominators.eval(Dominators.java:132)
[apply] at com.android.dx.ssa.Dominators.run(Dominators.java:213)
[apply] at com.android.dx.ssa.DomFront.run(DomFront.java:84)
[apply] at com.android.dx.ssa.SsaConverter.placePhiFunctions(SsaConverter.java:265)
[apply] at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:51)
[apply] at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:100)
[apply] at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:74)
[apply] at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:269)
[apply] at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)
[apply] at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)
[apply] at com.android.dx.command.dexer.Main.processClass(Main.java:297)
[apply] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:276)
[apply] at com.android.dx.command.dexer.Main.access$100(Main.java:56)
[apply] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:228)
[apply] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
[apply] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)
[apply] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[apply] at com.android.dx.command.dexer.Main.processOne(Main.java:245)
[apply] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)
[apply] at com.android.dx.command.dexer.Main.run(Main.java:139)
[apply] at com.android.dx.command.dexer.Main.main(Main.java:120)
[apply] at com.android.dx.command.Main.main(Main.java:87)
BUILD FAILED
我尝试通过设置 ANT_OPTS="-Xms256m -Xmx512m"为 Ant 提供更多内存。 (此构建机器具有 1Gb RAM)。
我只是需要更多内存还是可以尝试其他方法?
最佳答案
发现此链接有帮助:http://groups.google.com/group/android-beginners/browse_thread/thread/1e0a66a5ab115168
解决方案似乎是编辑 dx 或 dx.bat shell 脚本(取决于您的平台)并取消注释设置堆大小的行。
例如,
vi $ANDROID_SDK/platforms/*/tools/dx
将允许您在 Mac(也可能是 Linux)上编辑每个 dx 文件。
然后取消注释 javaOpts
行,该行显示如下内容:
# If you want DX to have more memory when executing, uncomment the following
# line and adjust the value accordingly. Use "java -X" for a list of options
# you can pass here.
#
# javaOpts="-Xmx256M"
这显然不是一个理想的解决方案,因为每次更新平台 SDK 时您的更改都会被破坏。但它确实对我有用。
关于android - 从 Android 生成的构建文件构建 Ant 失败 - 如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649641/