Big ANE causes java.lang.OutOfMemoryError when packaging Air application


hi,

 

i'm working on air mobile game uses ane on ios , android. i'm in process of creating new ane , face problem on android side.

 

my ane requires external framework (burstly, http://burstly.com). if link android project burstly's .jar file, errors in "adb logcat", like:

 

i/dalvikvm(16074): not find method com.burstly.lib.burstlysdk.init, referenced method com.freshplanet.burstly.functions.initburstlyfunction.call

 

in order include burstly's files in own .jar, unzip burstly's .jar file , repackage them compiled code in unique .jar (following advice on http://stackoverflow.com/questions/7732742/air-3-native-extensions-for-android-can-i-how-t o-include-3rd-party-libraries).

 

problem: burstly's sdk includes thousands of files. doesn't create trouble when packaging ane, when try package air application, following error:

 

dx tool failed:

unexpected top-level error:

java.lang.outofmemoryerror: java heap space

          at com.android.dx.util.intlist.<init>(intlist.java:87)

          at com.android.dx.rop.code.ropmethod.calcpredecessors(ropmethod.java:174)

          at com.android.dx.rop.code.ropmethod.labeltopredecessors(ropmethod.java:95)

          at com.android.dx.ssa.back.identicalblockcombiner.process(identicalblockcombiner.java:74)

          at com.android.dx.ssa.back.ssatorop.convert(ssatorop.java:132)

          at com.android.dx.ssa.back.ssatorop.converttoropmethod(ssatorop.java:76)

          at com.android.dx.ssa.optimizer.optimize(optimizer.java:103)

          at com.android.dx.ssa.optimizer.optimize(optimizer.java:74)

          at com.android.dx.dex.cf.cftranslator.processmethods(cftranslator.java:269)

          at com.android.dx.dex.cf.cftranslator.translate0(cftranslator.java:131)

          at com.android.dx.dex.cf.cftranslator.translate(cftranslator.java:85)

          at com.android.dx.command.dexer.main.processclass(main.java:299)

          at com.android.dx.command.dexer.main.processfilebytes(main.java:278)

          at com.android.dx.command.dexer.main.access$100(main.java:56)

          at com.android.dx.command.dexer.main$1.processfilebytes(main.java:229)

          at com.android.dx.cf.direct.classpathopener.processarchive(classpathopener.java:244)

          at com.android.dx.cf.direct.classpathopener.processone(classpathopener.java:130)

          at com.android.dx.cf.direct.classpathopener.process(classpathopener.java:108)

          at com.android.dx.command.dexer.main.processone(main.java:247)

          at com.android.dx.command.dexer.main.processallfiles(main.java:183)

          at com.android.dx.command.dexer.main.run(main.java:139)

          at com.android.dx.command.dexer.main.main(main.java:120)

          at com.android.dx.command.main.main(main.java:89)

 

i read solution eliminate error give java parameters "-xms...m -xmx...m", "..." being high-enough number. note i'm working on machine 8gb of ram. tried package app in command line able pass these parameters:

 

/usr/bin/java -xms512m -xmx4096m -jar "/applications/adobe flash builder 4.6/sdks/4.6.0air31/lib/adt.jar" -package -target apk -storetype pkcs12 -keystore [...].p12 main.apk main-app.xml main.swf -extdir "/users/alex/documents/adobe flash builder 4.6/.metadata/.plugins/com.adobe.flexbuilder.project.ui/anefiles/front-end-mobile/com.ado be.flexide.multiplatform.ios.platform"

 

but when run "ps -ef | grep java", can see adt runs java program (dx) without transmitting -xms -xmx parameters:

 

/usr/bin/java -jar /applications/adobe flash builder 4.6/sdks/4.6.0air31/lib/android/bin/dx.jar --dex --output=/private/var/folders/t9/3kw74cx14nv2xg9tgmx9m1jc0000gp/t/b5757d93-1e93-439c-8f6d -c93e4933f6f1/outputdex.dex [... bunch of jars]

 

any idea solve issue?

 

 

thanks

alex

i solved issue setting _java_options environment variable. (note: there 2 underscores)

 

i added following line .bash_profile:

export _java_options="-xms1024m -xmx4096m -xx:maxpermsize=512m"

 

 

now everytime java program launched command line, see following message:

picked _java_options: -xms1024m -xmx4096m -xx:maxpermsize=512m

 

 

and application packaging runs fine now.

 

i still have issue though: trick solved problem packaging app command line, _java_options not picked when packaging flash builder, still crashes there.

 

note adobe flash builder 4.6.ini contains following options:

-xms512m

-xmx1676m

-xx:maxpermsize=512m

-xx:permsize=64m

 

 

1676m highest number can put before flash builder refuses launch. i'm not sure if these parameters passed vm runs de dx.jar program, or if it's actionscript compiler. anyway app packaging still crashes in flash builder.

 

if knows way force flash builder pickup _java_options set in command line, let me know :-)

 

thanks

alex



More discussions in AIR Development


adobe

Comments

Popular posts from this blog

How to change text Component easybook reloaded *newbee* - Joomla! Forum - community, help and support

After Effect warning: A problem occurred when processing OpenGL commands

Preconditions Failed. - Joomla! Forum - community, help and support