You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flex.apache.org by Christofer Dutz <ch...@c-ware.de> on 2017/02/19 14:34:39 UTC

[Flex] Building iOS

Hi,

I’m currently working on Flexmojos and the Mavenizer to finally build valid iOS packages.

Flexmojos was producing IPA files for quite some time now, but the files weren’t runnable. When comparing the not working versions Flexmojos produces with the working ones IntelliJ produces, I noticed that the Flexmojos one has a file “Payload/{ApplicationName}.app/{ApplicationName}” which is empty, while the one produced by IntelliJ isn’t.

So, I IntelliJ to run in debug mode so I could inspect the full command IntelliJ executes and couldn’t find a difference to mine. Still the output is different.

I then noticed the sizes of the swf file which is embedded in the IPA file was greatly different. It however always matched the size of the one built by the compiler. So, when IntelliJ built the SWF, this is a lot smaller than if I build this with Flexmojos.

I can package the SWF built by Flexmojos as an Android application, but not as iOS.

Now I dumped the content of both swfs with swfdum and compared the output. I noticed these differences:

-          A huge amount of the dump deals with font glyfs the Flexmojos version contains a lot more of the font “glyph” elements

-          The SWF built by Flexmojos contains one “DoABC” entry for every referenced class (I think) however the one built by IntelliJ contains only two (with the names “frame1” and “frame2”

-          Image resources seem to be encoded differently in the “DefineBitsLossless2” elements.

So, is the difference that eventually the SWF created by IntelliJ doesn’t embed any referenced classes … sort of like having all dependencies “external”?

Chris