All about App Thinning
The store and operating system optimize the installation of iOS, tvOS, and watchOS apps by tailoring app delivery to the capabilities of the user’s particular device, with minimal footprint
App Thinning is the combination of slicing, bitcode, and on-demand resources
Slicing is the process of creating and delivering variants of the app bundle for different target devices. A variant contains only the executable architecture and resources that are needed for the target device. When the user installs an app, a variant for the user’s device is downloaded and installed.
Xcode 7
No setting
iOS 9
Sliced apps are supported on devices running 9.0 and later; otherwise, the store delivers universal apps to customers.
watchOS 2
tvOS
Xcode builds a variant of the app for the selected device type, improving the debug build time and allowing you to test variants locally.
Works for App Store only
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.
Xcode 7
Build Settings -> Enable Bitcode (ENABLE_BITCODE)
iOS 9, Default, Optional
watchOS 2, Required
tvOS, Required
No effect
Works for App Store only Should disable Bitcode If Bitcode is enabled, your binary will contain both object code and Bitcode
On-demand resources are resources—such as images and sounds—that you can tag with keywords and request in groups, by tag
Xcode 7
Build Settings -> Enable On Demand Resources (ENABLE_ON_DEMAND_RESOURCES) Use by tagging resources
You identify on-demand resources during development by assigning them one or more tags.
iOS 9 Deployment target must be iOS 9
watchOS 2
tvOS
Embed in the app bundle
You can host on-demand resources for your app on any compliant web server. Apps distributed through the App Store can host on-demand resources only during development and testing. Enterprise apps using in-house distribution can host during development and distribution.