Splitting iOS app's IPA-file by device type to reduce download/install size

1.7k views Asked by At

iOS apps that support a decent number of devices need to be compiled for at least two different platforms: armv7 and arm64. From the build process, it looks like the generated IPA file basically contains two complete versions of the app, one compiled for each platform. I was hoping that the App Store would be smart enough to repackage these two versions into two separate downloads so that only the actually required version is shipped to and installed on a specific device during download. But looking at iTunes Connect, this doesn't seem to be the case. In fact, things get even worse than that:

  • The IPA-file that I uploaded for my app is 16.8MB on my computer.
  • Under "Build Details" in iTunes Connect, the "Compressed File Size" matches these 16.8MB
  • Under "App Store File Sizes" though, the "Download Size" is listed as 36.8MB!!!
  • And, worse yet, the "Install Size" is listed at 48.6MB!

That's crazy! Ok, I can understand why the "Install Size" is bigger than the "Compressed File Size", but why the huge "Download Size"??? Wouldn't it be much better to do the decompression on the device after download? But I digress...

iTunes Connect seems to support uploading multiple versions of the app for different devices. At least the "App Store File Sizes" list consists of a table that can show multiple such versions by device:

enter image description here

Is it somehow possible to build and upload multiple device/platform-specific versions of an app to reduce the "Download Size" and "Install Size" for each instead of having a single "Universal" one?

Bonus question: If it is possible, how do I do this in RoboVM? :)

As a side-note: The same exact app on Android, including identical graphics and audio-assets and a virtually identical code-base, is a mere 6.0MB! But this might be necessary bloat introduced by RoboVM. I still need to look into how to reduce that...

2

There are 2 answers

2
Julian F. Weinert On

@RP is correct. When you upload a Bitcode build, Apple uses an App Thinning technique called Slicing to create exactly what you are talking about.

See the App Distribution Guide for more details.

0
R P On

You can achieve that using App Thinning techniques introduced as part of iOS 9. There are 3 main aspects to App Thinning:

  1. App Slicing
  2. On Demand Resources
  3. Bitcode

For your case, you can explore App slicing and Bitcode.