Get my iPhone basic app under the 20 Meg limit?

Hello and thanks for your attention.


I'm using this formula to come up with sizes: (uncompressed executable size) + (app bundle compressed but without executable) + 0,1 MB = maximum size of your App after approval.

-With assets, SFX, Font, and Textures, my app is: 10.6 + 16.5

-If I delete SFX, Font, and Textures and rebuild it’s: 10.6 + 1.4, a difference around 15mb.

Wha?!? My uncompressed assets are SFX 2.4, Font 76kb, Textures 12.9mb. Total around 15.4mb.

Could it be that something isn't compressing? Unity certainly takes a lot of time making the Xcode build. I think I'm doing it right, for example, all non-gui textures are powers of two. I don't understand why the sizes are so different and the difference so similar to the uncompressed size.

Some things you can do:

Reduce Texture Sizes

Open up photoshop, edit every texture you have to fit into the power of 2 compression requirement.


  • 512x512
  • 512x1024
  • 64x64


Sometimes the graphical anomalies are unacceptable so you'll leave off the compression, maybe on GUI textures.

Things that you don't want to get blurry at a distance or something that is never viewed from a distance (like GUI textures) don't need mip mapping. You can disable it in the import settings of the texture.

Also if you have overly large textures for your screen size (iphone) you can try reducing the size of the texture, generally 512x512 is big enough for a high res texture and 256x256 or even 128x128 is fine for general use like small model textures.

Reduce Model Sizes

Examine your scene, are you using wasted polys? Go into your modelling software and remove all the polys that are never seen by the player. Particularly on the reverse side of guns and furniture as they tend to be higher in poly count and don't rotate much.

Reduce the number of polys in general and bake lighting into textures to give the illusion of a high poly model.

Use Prefabs!

If your scene has 20 tables in it, don't import a model containing 20 tables. Import the room with just the bare essentials like walls and windows and import the furniture separately on their own. Create a table prefab and then clone the prefab as many times as you need.

This not only saves on model size but also is much more efficient in terms of draw calls and memory usage. As well as the inherent time saving features of using prefabs such as adding scripts or editing colliders. Double Bonus!

Use Texture Sheets!

By sharing one single texture for multiple objects you save loads of draw calls and texture memory as the iPhone can batch all the objects that use the same material. You can probably fit all the textures of a room into a single 512x512 texture sheet.

Reduce Sound Files

If you have lots of sound effects in your game make sure you've got them at the required quality level. Use mono-sounds where ever possible as they have one fewer channel to save unless it's a theme song and you REALLY want to keep the stereo effect.

Music files should be saved as mp3 files as they are natively supported by iPhone and make sure it's at the desired sample rate (e.g. 22khz) and quality, no point in using 5 meg music files when most people will just play their own music over your game.

Note: Unity iPhone supports MP3/M4A (ACC compressed) music files. Ogg compression is not supported on the iPhone.

Code Stripping (pro)

On the player settings in unity you have the option to remove some unused libraries. Best way to do this if you're unfamiliar with it is to pick the highest level of stripping and then try to compile it. If there are errors then pick the next highest until you find a level that lets you run the program.

Also on the final release you can remove the debug icons and compress textures etc.

I'll edit with more stuff if I think of anything

You may know this already, but it isn't clear, and anyone else interested in this question will need to know: after making a build, go to the Console window and click Open Editor Log. It shows all assets used in the build with file sizes, even code libraries. They're even sorted by uncompressed size. This is a good way to track down rogue assets (e.g. textures that don't have their max texture size set).

If you limit the size of your assets, then yes you can get under 20MB.