Apple gave a small mention in yesterday’s keynote to something that may make a big difference to those iPhone and iPad owners who find themselves running short of storage space: App Thinning. The idea is that your iOS 9 device only downloads the code it actually needs, making apps significantly smaller than they are today.
What Apple listed as one feature is actually three separate mechanisms, each playing its own part in reducing app size, and ArsTechnica has provided an interesting look at how it all works …
The primary mechanism – App Slicing – is the one that does most of the work. Because apps need to run on a variety of devices, from the 3.5-inch iPhone 4 to the 5.5-inch iPhone 6 (or 10-inch iPad, for universal apps), they contain separate assets for each of those devices – most of which your device doesn’t need.
Say you have an iPhone 5C, which uses a 32-bit CPU and a GPU that doesn’t support the Metal API. Download a modern universal game, and that binary includes 64-bit code, iPad and “3x” iPhone 6 Plus assets, and Metal API code that it doesn’t need. It only needs the 32-bit code, “2x” iPhone-sized assets, and the OpenGL graphics code.
With App Slices, developers tag assets by device, and when you download the app from iTunes, it will only download the assets your device needs. Apple has made this process pretty simple for developers, so it’s likely that many will support it.
On-Demand Resources (ODR) is the second way to reduce app sizes. ArsTechnica gives the example of multi-level games, where you typically only need the level you are playing plus the next few levels up. ODR means you can download the game with the first few levels included. As your play progresses, the app downloads extra levels and purges the levels already completed.
Finally, Bitcode. Instead of uploading pre-compiled binaries, developers upload what Apple calls an “intermediate representation” of the app. The App Store then automatically compiles the app just before downloading. This allows it to automatically implement part of App Slicing even if the developer hasn’t bothered to tag their code, downloading only the 32- or 64-bit code as required.
But Bitcode also means that if Apple improves the compiler to make code more efficient, those improvements are automatically incorporated when you download the app.
There will be some trade-offs. For example, if you’re passing the time on a long flight by playing a multi-level game, it could be a bit frustrating to run out of levels when you’re still four hours away from landing. But overall, it should be something that will benefit most of us most of the time – especially those with 16GB devices.
Check out more detail over at ArsTechnica.