1. dereulenspiegel, 12.03.2010 #1
    dereulenspiegel

    dereulenspiegel Threadstarter Android-Hilfe.de Mitglied

    Hallo,

    ich versuche gerade meinen Buildprozess mit Hilfe von Hudson zu automatisieren. Dabei wird das Androidprojekt per Ant gebaut. Allerdings scheitert jeder Build mit folgender Fehlermeldung:
    Code:
    [apply] UNEXPECTED TOP-LEVEL ERROR:     [apply] java.lang.OutOfMemoryError: Java heap space     [apply] 	at java.util.ArrayList.(ArrayList.java:113)     [apply] 	at java.util.ArrayList.(ArrayList.java:120)     [apply] 	at com.android.dx.ssa.SsaBasicBlock.(SsaBasicBlock.java:94)     [apply] 	at com.android.dx.ssa.SsaBasicBlock.newFromRop(SsaBasicBlock.java:124)     [apply] 	at com.android.dx.ssa.SsaMethod.convertRopToSsaBlocks(SsaMethod.java:164)     [apply] 	at com.android.dx.ssa.SsaMethod.newFromRopMethod(SsaMethod.java:105)     [apply] 	at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:45)     [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) 
    Ich habe bereits versucht den Java Heap Space per ANT_OPTS anzuheben. Aber selbst mit über 1GB RAM gibt er sich nicht zufrieden. Ein manueller Build auf der Kommandozeile per Ant schlägt auf die selbe Weise fehl. Aber auf meinem lokalen Win7-System kann ich das Projekt ganz normal bauen. Hat jemand eine Idee woran das liegen könnte?
     
  2. SirMArtin, 12.03.2010 #2
    SirMArtin

    SirMArtin freier Samsungsupporter

    Wenn der [apply] Task einen eigenen Java-Task per fork startet, müssten ihm die -Xmx und -Xms Parameter übergeben werden.

    EDIT:

    das sieht stark nach einem eigenen Java-Task aus: at com.android.dx.command.Main.main
     
  3. garak, 14.03.2010 #3
    garak

    garak Ehrenmitglied

    Du musst im Ant-Script den Speicher hoch setzen, der für den Build-Prozess dann zur Verfügung steht. Defaultmäßig bekommt er so um die 12 MB (hab's jetzt nicht genau im Kopf). Beispiel:

    memoryInitialSize="256m"
    memoryMaximumSize="512m"

    Gruß
    Chris
     
  4. dereulenspiegel, 14.03.2010 #4
    dereulenspiegel

    dereulenspiegel Threadstarter Android-Hilfe.de Mitglied

    Hi!

    Sorry, dass ich nicht mehr geantwortet habe. Stressige Woche. Habe das Problem bereits gelöst. Und zwar dx das Problem. Das ist nur ein Bashscript in dem nochmal zusätzliche JAVA_OPTS angeben kann. Wenn man das macht, funzt alles wunderbar. Jetzt werden meine Android-Apps schön automatisch von Hudson gebaut :D