Hey,
I have been doing some research on this and I thought about sharing my findings here too.
- 20MB limit on final size is very important for casual games as they follow impulse buying trends.
- Trivial but worth mentioning: The final size is not the size of the app on the BUILD folder. It is the size of the compressed app.
- The compressed app to be submitted is a ZIP file, however the final one will be a IPA that they produce for the AppStore.
- You can create a ZIP version of your app by right clicking on the .app on your release for device build folder
- You can create an IPA of your app on XCode by doing "Build And Archive" then go to Organizer and select your app on the Archived Applications area. Press "Share" to save to file. You can skip the signing here by selecting "Don't Resign" on the dropmenu.
- IPA on Xcode is very similar size to ZIP to submit (zipped from build folder)
- IPA on Xcode won't produce exactly the same results as the one they create (there's will be bigger). They add iTunesArtwork and some other files that people say (http://bit.ly/qwZVC1) count up to 100k extra. However the binary compression is different and people have reported growing far more than expected (doubled in some cases - Unity3D). This is precisely where we all get lost. How much bigger?
- I can't confirm this, but I've read in some forums that Apple states 1MB as 1000 Bytes as opposed to the rest of the world convention of 1MB = 1024 Bytes.
- And finally, and according to this source: http://bit.ly/oQEgyp you can get close to know the final size of your game by doing this:
FinalSize = (uncompressed executable size) + (app bundle compressed but without executable) + 0,1 MB
See this post for more theory on this formula: http://bit.ly/pjX1g3 by @gaminghorror
I hope it helps.