iOS game is twice the size as my total resource size on the app store?

Hi guys! I am trying to optimize my build size to be under the 100 MB limit for over-the-air download. I thought I was close but after uploading my build to itunes connect, seems like I was way off.

EDIT : also worthy of note that this is a test flight build. I noticed in the sticky post that test flight build will be bigger. Is it possible that it will be closer to 100MB with a real (non test-flight) build?

From the unity build log for iOS :
Textures 96.4 mb 78.4%
Meshes 2.3 mb 1.9%
Animations 4.0 mb 3.3%
Sounds 7.4 mb 6.0%
Shaders 938.0 kb 0.7%
Other Assets 3.3 mb 2.7%
Levels 1.2 mb 1.0%
Scripts 2.0 mb 1.6%
Included DLLs 5.2 mb 4.3%
File headers 213.3 kb 0.2%
Complete size 123.0 mb 100.0%

Here are some stats on itunes connect :
Compressed File Size 215 MB
Includes Symbols Yes → does this impact file size significantly?
Supported Architectures armv7, arm64

Trying to figure up how 123mb of resources can nearly double? I figured it would shrink since IPA’s are compressed?

Do you guys think it’s a “must” to be under the 100MB limit these days? I wouldn’t want to lose downloads because of that…

‘Compressed File Size’ includes all the debug symbol files and architectures which are not included in the app when downloading from the App Store (on iOS 9+ devices). For example I checked one of the demo apps we have in the store, while ‘Compressed File Size’ is 147mb and the size in TestFlight is 128.8mb the size in the AppStore is only 44mb.

Also the build log output doesn’t really provide a very good estimate on the final app size as we there is really any way to know how big the actual binary will be at that point. We found that this formula is pretty accurate at predicting the final download size ‘zipped app(without binary) +__TEXT + 0.2* __DATA’. You can get partition sizes by unzipping the .ipa file after archiving it in Xcode and running ‘size’ on it (ignore the ‘other’ partition as it’s mostly symbol files).

Alex - I’d love to know what you find out. I have the exact same issue. Barely changed my app, just added some localizations for two additional languages. Unity console build log shows 99Meg build. Old Universal binary was 137M now goes to 400+ Meg. I’m thinking of submitting for review and manually releasing if the sizes change after review, but what a nightmare this is. I’ve literally changed almost nothing, except upgrading Unity to 5.5… Hmmmm. Unity???

The binary size is not a very good estimate of the final download size (just enabling bitcode increases it by more than 200mb, maybe it was disabled on your old project?).

Could you try inspecting your binary with ‘size’? Pretty much everything not in Text or Data partitions can be ignored cause it should be stripped by the App Store.

So I just uploaded the exact same build to itunes twice, one with bitcode/symbols, and another without :

  • The version with bitcode/symbols has a compressed file size of 165 MB and shows a warning “The variant for one or more device types exceeds the 100 MB download size limit”, which I’m trying to avoid to have more downloads (over-the-air download limit is 100MB)
  • The version without bitcode/symbols has a compressed file size of 80.9 MB (yay!).

It’s sort of confusing because they make it seem like uploading bitcode is fine because it will get stripped out in the final client size download (which it may very well be, I haven’t tried yet) but then they show a big warning to indicate the build is over 100MB.

The itunes connect estimation of the final size is wrong.

This is my .ipa’s story :

  • Unity3D’s editor.log tells me iphone’s .ipa should be 48.5Mo
  • Keeping Bitcode on in Xcode, I upload to itunes connect. And Itunes connect estimates it to 109Mo (with the same warning as you)
  • The review passes (after 3 long days), and the real, final ipa size, displayed on the app store, is 70Mo.

So it’s still not perfect, but still less huge than itunes connect was expecting it.