android, 使用ant打包时,dex步骤出outofmemory错误。
错误堆栈如下:
dex:
[echo] Converting compiled files and external libraries into
release/classes.dex...
[apply] UNEXPECTED TOP-LEVEL ERROR:
[apply] java.lang.OutOfMemoryError: Java heap space
[apply] at java.util.Arrays.copyOf(Unknown Source)
[apply] at java.util.Arrays.copyOf(Unknown Source)
[apply] at java.util.ArrayList.ensureCapacity(Unknown Source)
[apply] at java.util.ArrayList.add(Unknown Source)
[apply] at com.android.dx.ssa.SCCP.addUsersToWorklist(SCCP.java:
106)
[apply] at com.android.dx.ssa.SCCP.simulatePhi(SCCP.java:188)
[apply] at com.android.dx.ssa.SCCP.simulateBlock(SCCP.java:199)
[apply] at com.android.dx.ssa.SCCP.run(SCCP.java:402)
[apply] at com.android.dx.ssa.SCCP.process(SCCP.java:84)
[apply] at com.android.dx.ssa.Optimizer.runSsaFormSteps
(Optimizer.java:161)
[apply] at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:
101)
[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.processOne
(ClassPathOpener.java:134)
[apply] at
com.android.dx.cf.direct.ClassPathOpener.processDirectory
(ClassPathOpener.java:190)
[apply] at com.android.dx.cf.direct.ClassPathOpener.processOne
(ClassPathOpener.java:122)
[apply] at
com.android.dx.cf.direct.ClassPathOpener.processDirectory
(ClassPathOpener.java:190)
[apply] at com.android.dx.cf.direct.ClassPathOpener.processOne
(ClassPathOpener.java:122)
[apply] at
com.android.dx.cf.direct.ClassPathOpener.processDirectory
(ClassPathOpener.java:190)
[apply] at com.android.dx.cf.direct.ClassPathOpener.processOne
(ClassPathOpener.java:122)
[apply] at
com.android.dx.cf.direct.ClassPathOpener.processDirectory
(ClassPathOpener.java:190)
[apply] at com.android.dx.cf.direct.ClassPathOpener.processOne
(ClassPathOpener.java:122)
[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)
BUILD FAILED
F:xxxx\build.xml:30: The following error occurred while executing this
line:
F:\xxxx\android_build.xml:185: apply returned: 3
小弟使用ant打包的时候出现的错误。用eclipse可以正常打包。
编译后的.class文件总大小约为1m,占用空间1.7m,最大文件约87k(试过裁剪到60多k,也是过不去)
使用一半代码(即用桩模块)的时候代码量约一半大小的时候能正常打包。
有没哪位大大能帮忙解决这个问题?
p.s:使用ant打包的过程中,插入了许多自定义的操作,但即使完全使用系统生成的build.xml打包,也会报这个错误。
[解决办法]
高人情景,帮忙顶一下
[解决办法]
可以修改platforms\android-1.6\tools中的dx.bat文件,把REM set javaOpts=-Xmx256M前面的注释去了,并加大Xmx的值
或者dx文件中的#javaOpts=-Xmx256M