Search code examples
iosipadretina-displayuniversal-binary

Do universal binaries contain all the heavy ipad graphics in the App Bundle on the iPhone? What to do about it?


Since the iPad 3 has a retina display, I start to worry about the amount of "image spam" in universal binaries on iPhone and iPod touch devices. Obviously they don't need those resources.

I never really checked, but maybe someone knows this: When an iPhone downloads a universal binary, does the App Store automatically ship a version where all the heavy iPad graphics have been stripped out? Or is the iPhone or iPod touch flooded with content that's only needed on the iPad?

Are there any ways to make a universal binary "intelligent" such that iPads only receive iPad resources while iPhones only receive iPhone resources?

In my case I have a 10 MB universal app. Upgrading this to retina iPad would mean iPod touch users will suffer from doubled file size.


Solution

  • No, nothing is stripped from the app bundle when you install on different devices. Remember, the whole thing is codesigned, so nothing can be stripped or the signature would be invalid. The standard advice here is to just live with the fact that your customer is only going to actually be using half of the resources in your app bundle (or a quarter if you don't share resources between iphone and ipad). If this is a dealbreaker for you, you could consider downloading the necessary resources from a server under your control on first launch, but remember that this makes things very complicated for you, and is actually a pretty poor user experience. You almost certainly want to just live with the increased size.