Copy link to clipboard
Copied
The new SDK seems to have added an extra 3.5MB on ipa (release) depending on the app.
On the basic app that does nothing it adds 3.5MB, on one of our apps it added 7MB.
Anybody else got a size increase?
Copy link to clipboard
Copied
Hi Joseph,
The new compiler compile universal binaries for IOS that mean that you have a 32bit and a 64bit binaries in the ipa package, so the size increase is normal.
Copy link to clipboard
Copied
When i moved from SDK 15 where application size was about 70MB, to SDK 16 where size is around 120MB i cannot publish app because of Apples size limit around 80MB. I assume that i get both 32bit and 64bit code in the IPA, and this the reason of double IPA size, am i correct???
Do Apple plan to extends the limits, after adding new architecture? If not, how can i compile my project for only arm64 architecture?
I cannot fint any options to build IPA on windows for only arm64. Can someone provide any help?
Do i have to build on Mac, and set some extra fancy super-cool features that will make my app contain only 64bit code? I cant find any solid information about that on the internets...
Copy link to clipboard
Copied
There is no apple size limit (well I think it is 2GB) so I am not sure where you saw such limit on ipa
Copy link to clipboard
Copied
I get
ERROR ITMS-90122: "Invalid Executable Size. The size of your app's executable file is 102776832 bytes which exceeds the maxium size of 80MB.
Can anyone provide some help on my other questions? Why do i get double size? Can i compile only for arm64 architecture?
Copy link to clipboard
Copied
It seems that you are embedding all the resources in the main executable?
It is usually a bad practice (even the 70MB is a bit large).
Copy link to clipboard
Copied
Hi,
With the current SDK it is not possible to compile only for arm64 architecture. You can log an enhancement bug in bugbase.adobe.com.
Thanks,
Adobe Air Team
Copy link to clipboard
Copied
*.swf file has only 5MB before packaging to IPA, most of the resources are loaded in runtime. There are some embeded skins, but for sure not 70MB...
I can not understand how it grows to 70, i dont even think how it grows to 102...
I wrote to Apple developer support to increase executable size limit, but is there really no way to do something about executable size in IPA? No compiler params or something?
Can i check if armv6 is also included? Can i disable armv6 architecture?
Copy link to clipboard
Copied
ArmV6 is no longer included, so you can't remove it, it isn't there.
Sounds like you are using a lot of sprite sheets in a Starling game. Using Embed will put all of those into the application, they won't remain external. You could look at tinypng.com, using that, or buying their Photoshop plugin, could dramatically reduce the size of your file.
Copy link to clipboard
Copied
Did you manage to solve this? I have the same issue. Executable is about 93 mb, and get the Error that Executable needs to be under 80 Mb
Copy link to clipboard
Copied
‌Anyone with this issue:
Rename IPA to ZIP and open it. Find your binary file inside and check it size firstly and report it here
Copy link to clipboard
Copied
I have the same problem. My Unix Executable is over 500 MB and there is no way I can get it down to something like 80 MB. I've attached a screenshot of the contents of the .ipa file. Is there some workaround where a small executable can serve as the main file which simply links to the big executable?? Love to hear any suggestions/angles/options. Thanks
Copy link to clipboard
Copied
Do you use [Embed] tag in your AS3 code?
Copy link to clipboard
Copied
Hi, yes I do. I think the problem comes from the large number of AS3 classes that all get compiled into the 1 executable. As text, the AS3 classes aren't more than 1 MB or so. Its the compiling that's making them huge. Is there a workaround?
Copy link to clipboard
Copied
When you use "embed" you are embedding the assets in the executable.
The compiled classes are not that large, usually you would have images, audio, fonts and videos. Instead of using embed load these dynamically (and unload when not used).
This will keep the size of your executable small.
Copy link to clipboard
Copied
The media assets are loaded during runtime. You can see from my screenshot, all assets are in the folders Library, Img and Modules. They have a combined size of around 260MB. The 500+ MB executable comes from compiling about 1,700 separate AS3 classes. As .as files, they are around 20MB (see below). The extra size is coming when they are compiled for iOS.
Copy link to clipboard
Copied
I have not seen something like this before.
I think it might be a bug with the compiler, but Adobe would need access to your project files in order to investigate it further.
Copy link to clipboard
Copied
You can privately contact me via therabbitflash skype chat and show your files so may be I can advice something
Copy link to clipboard
Copied
Are you loading any swf files into the main.swf? In that case, publish for Flashplayer xx for all the "load in" swf, instead of AIR SDK
Copy link to clipboard
Copied
I think I see what he thinks is going on. If I'm right the 1,679 swfs all had code in them, and he ran the command line to make the AS3 get stripped out, and be included in the main code. If that does add a little bit of overhead for each swf, 1,679 sets of overhead could add up.
Would it be possible to have the swfs as library movieclips instead? That would only add 20 MB to the main swf, making it still only be 21 MB, and hopefully all classes that are duplicates would get shared when it's compiled.
BTW, the documentation I can find says the executable needs to be no more than 60 MB, not 80 MB, and the wording is confusing. It reads as if they mean the .app file, which clearly is over 60 MB for a lot of apps. It would be a relief if they mean the Unix executable file. Those are as little as 10 MB for my apps.
Copy link to clipboard
Copied
I think I see what he thinks is going on. If I'm right the 1,679 swfs all had code in them, and he ran the command line to make the AS3 get stripped out, and be included in the main code. If that does add a little bit of overhead for each swf, 1,679 sets of overhead could add up.
Yes, you are correct. I have 1700 flash files that are linked to 1700 separate .as AS3 files. As far as I know, all AS3 must be compiled into a single executable.
Would it be possible to have the swfs as library movieclips instead? That would only add 20 MB to the main swf, making it still only be 21 MB, and hopefully all classes that are duplicates would get shared when it's compiled.
As far as I know, the AS3 compiled in these swfs would not be allowed to run as they are loaded in iOS. Also, no classes are duplicates.
I see 2 solutions:
• Somehow creating a stub executable to link to the main monster. But I don't know if that is possible within the iOS app structure (i.e. signing/certificate issues)
• Some workaround that allows the AS3 to be executed at runtime. i.e. loading from text.
I'd appreciate any input or suggestions.
Copy link to clipboard
Copied
At the moment you must be using a loader to bring the swf in at runtime, I was suggesting that instead of an external swf you have an internal movieclip. When you want a particular swf you would say:
var aswf:MovieClip = new NameOfSwf() as MovieClip;
addChild(aswf);
The base class of the movieclip in the library would be the existing document class of that particular swf. It would all get compiled in one go when you publish.
Copy link to clipboard
Copied
‌I managed to find out why. I had 36 swf files, and some of them were compiled with Air SDK, so every time you use that for a swf, executable increase about 18 mb.
Copy link to clipboard
Copied
You booth doing something wrong. My binary always not more than 18 mb because I use external data loading without any resource embedding inside.
Copy link to clipboard
Copied
I think the problem is in the large number of classes. I made very simple test:
1. compiled application with single *.mxml file with two buttons insde - 1 spark and 1 mx button (flex 4.6.0)
CODE EXAMPLE:
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:mx="library://ns.adobe.com/flex/mx" xmlns:s="library://ns.adobe.com/flex/spark" layout="absolute" >
<mx:Button />
<s:Button />
</mx:Application>
2. decompiled swf which had 285KB - no embeded assets inside, just spark and mx components.
3. packaged with latest official AIR sdk 16 ... and it comes out that the executable size is 22MB! WTF?
So, lots of my as3 classes + many as3 libraries, NO EMBED used in code and the result is 107MB executable.
What do you suggest now?