During the WWDC 2015 keynote, Apple’s Craig Federighi mentioned that this fall iOS 9 would require only 1.3 GB of space, a fraction of the 4.6 GB needed for iOS 8. But there is other important technology that owners of entry-level iOS device (8 GB iPhone, 16 GB iPad) owners will love: App Thinning. The technology didn’t get too much of the spotlight yesterday, but Ars Technica’s Andrew Cunningham has jumped on the XCode documentation to dig for further information.
App Thinning has just one aim: to make apps smaller. The recently published documentation describes the three components of App Thinning: App Slicing, On-Demand Resources (ODRs), and Bitcode.
App Slicing is the simplest of all and doesn’t require too much work from the developer. To understand what it means, you need to understand what the “code package” we call an app contains: It includes “tons” of code and assets so it can support both 32-bit and 64-bit devices. When you download an app, you download code you don’t need.
App Slicing is for select downloads: It will allow your device to download just the “chunks” it needs. To achieve that, developers need to upload the complete version of the app, but tag it for individual platforms.
The ODR parts of apps are downloaded when they are needed and disappear when you are done with them. Assets that can be marked as ODRs are images, media files, data files, and others. Here is an example of how it should work:
For example, in a game with multiple levels, Apple suggests that your app only really needs to have the data for the level you’re on and the levels immediately following it, not necessarily levels you’ve already beaten. For an app with a tutorial, it might download the assets for that tutorial the first time you use it but delete them from your device after it’s clear that you’re not going to need the tutorial again. An app with in-app purchases could decline to download those assets until you actually make the purchases.
Apple calls the third component “Bitcode”. This is enabled by default, but optional for iOS apps. For watchOS apps, it is required. The documentation Apple published contains the following description of Bitcode:
Bitcode is an intermediate representation of a compiled program. Apps you upload to iTunes Connect that contain bitcode will be compiled and linked on the App Store. Including bitcode will allow Apple to re-optimize your app binary in the future without the need to submit a new version of your app to the store.
There is no word on how much lag the above technologies will cause, if at all, but we’ll find out this fall, I think.