android - 从 Android 生成的构建文件构建 Ant 失败 - 如何修复?

标签 android memory ant build

从 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/

相关文章:

android - Sqlite - 条件选择?

java - 为 Switch 设置 id

java - 警告 : [unchecked] unchecked call to add(E) as a member of the raw type java. util.List

linux - 使用 Ant 比较远程文件与本地文件的时间戳

java - 如何为java设置永久内存设置?

asp.net - 读取字符串中的分号时,nant 脚本中的 xmlpoke 出现问题

java - 预加载 webview 然后切换到其 Activity

android - 应用插件 : 'android' or apply plugin: 'com.android.application'

c - 在 C 中寻找调试功能

c++ - 尝试编写自定义 allocate_shared 分配器并使其成为 thread_local 时崩溃