Title: App thinning in iOS 9: Explained Post by: HCK on September 23, 2015, 09:00:19 am App thinning in iOS 9: Explained
<div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even" property="content:encoded"><p><a href='http://www.imore.com/app-thinning-ios-9-explained' title="App thinning in iOS 9: Explained"><img src='http://www.imore.com/sites/imore.com/files/styles/large/public/field/image/2013/09/princess_bride_iphone_capacities.jpg?itok=uwgOsL2H' />[/url]</p> <p class="intro">As devices have multiplied app sizes have increased. Here's how Apple plans to thin them back down.</p> <p>Over the last year, Apple has introduced new services like iCloud Photo Library (http://www.imore.com/icloud-photo-library) and iCloud Music Library (http://www.imore.com/icloud-music-library) that keep recent and frequently accessed data on the device but offload older and infrequently accessed data to Apple's servers. That nearline strategy helps ensure more space is available for updates to begin with. With iOS 9, Apple is taking space-savings to a whole new level with App thinning, which includes asset slicing, on-demand resources, and bitcode. <!--break--></p> <ul><li>Check out our comprehensive iOS 9 review for more (http://www.imore.com/ios-9-review)</li> </ul><h2>How asset slicing works</h2> <p>Asset slicing recognizes that apps have been getting bigger over the years. They've added support for all sorts of device traits, including iPhone and iPad idioms, @2x and @3x resources, 32-bit and 64-bit chipsets, OpenGL ES and Metal in high and low quality, 1 GB and 2GB of memory, different audio sampling rates, and more. All of that overhead slows downloads and takes up storage. Since no single device needs all those resources, though, asset slicing aims to pare them back down.</p> <p><a href='http://www.imore.com/app-thinning-ios-9-explained' title="App thinning in iOS 9: Explained"><img src='http://www.imore.com/sites/imore.com/files/styles/large_wm_blw/public/field/image/2015/09/ios-9-review-app-thinning-diagram1.jpg?itok=8BHIdtrm' />[/url]</p> <p>Developers still upload the full universal app to the App Store but then the App Store takes it and delivers only a variant app tailored specifically for the device that's downloading it.</p> <p>Standard resources are automatically sliced but, for custom data, developers are encouraged to add asset catalogs, including the new named data and sprite atlases options, and declare which data is needed for which device traits. The better organized and catalogued the assets are, the better the slicing will be.</p> <p>So, if you have an iPhone 5s, for example, and you tap to download an app, the App Store will give you the iPhone 5s variant. That means you won't get the interface elements for an iPad, the @3x graphics resources for the iPhone 6 Plus, the 32-bit code for iPhone 5 or earlier, or the shader code for an iPhone 4s or iPad 2 graphics processor. You'll only get what your iPhone 5s needs, and you'll get it in a smaller package that takes less time to download.</p> <p>Apple claims storage savings in the range of 20-40%, even for social networking and video streaming apps.</p> <h2>How on-demand resources work</h2> <p>On-demand resources (ODR) takes things a step further by only downloading content you might need when you first start using an app. That can included game levels, video tutorials and other media, document templates, instrument packs, and more.</p> <p>For example, when you download a new game, the App Store could only include the first five levels and keep the rest ready and waiting on Apple's servers. As you complete level three, the App Store could download level six and remove level one. Then download level seven and remove level two, and so on.</p> <p>In other words, as new content comes in, old content goes out. So, an app or game may vary slightly in size over time as you use it, but you never have to store all of it at once.</p> <p><a href='http://www.imore.com/app-thinning-ios-9-explained' title="App thinning in iOS 9: Explained"><img src='http://www.imore.com/sites/imore.com/files/styles/large_wm_blw/public/field/image/2015/09/ios-9-review-app-thinning-diagram2.jpg?itok=hWrn_NfQ' />[/url]</p> <p>Using asset slicing and ODR makes it easier for apps and games to stay beneath the current 100 MB cellular networking download limit. A game that was previously 150 MB for its full universal binary, for example, may be only 90 or 100 MB for any individual device variant and resource payload, and so be able to be downloaded anywhere, at any time.</p> <p>What's more, very large apps like triple-A games won't have to worry as much about Apple's Wi-Fi download limit of 4 GB either. That's because, even if the complete universal binary package is 4 GB, as long as no individual device slice variant and resource payload exceeds 4 GB, it'll be under the limit.</p> <p>Depending on the type of app, space savings can exceed 50%, which across all apps on a device can result in a significant return on storage space. It will most benefit legacy 8 GB devices and current 16 GB devices, which compromise storage for entry-level price points.</p> <p>It's even better on the new Apple TV, where Apple never wants a customer to see an out of storage space error or have to worry about manually managing space.</p> <ul><li>How on-demand resources work on the new Apple TV (http://www.imore.com/how-new-apple-tv-uses-demand-resources-host-great-apps-and-games)</li> </ul><h2>How bitcode works</h2> <p>Shifting from the present to the future, the App Store will also be delivering apps in bitcode, a forward-looking LLVM intermediary representation of the binary. That will let Apple optimize and re-optimize an app binary for the specific device architecture that's downloading it without requiring the developer to manually update and resubmit the app.</p> <p>It's not a way to abstract out processor platforms so Apple can switch architectures on the fly at some point. It's a way to make sure customers get the benefits of the latest architectures, instructions, and optimizations as soon as they're available.</p> <p>Although mandatory for watchOS apps, bitcode is still optional for iOS, though Apple believes it's important enough to opt projects in by default.</p> <p>Lastly, for developers who no longer want to support older devices, Apple will now let them release apps that are 64-bit only. That way they only have to concern themselves with iPhone 5s, iPad Air, iPad mini 2, iPod touch 6, and later devices.</p> <h2>What you need to do</h2> <p>The nice thing about app thinning is that it's absolutely transparent on the customer's end. As long as developers are building for iOS 9, and making sure they tag their assets and resources as best as they can, the App Store will handle everything. All you need to do is download the updates when they're ready and the newer, thinner apps will be yours.</p> <p>For 16 GB device owners, every megabyte will matter. But even for 64 GB or 128 GB device owners, being able to fill storage with real, useful apps and content and not a bunch of stuff we don't need is a huge win.</p> <div class="devicebox"> <h3>iOS 9 (http://www.imore.com/ios-9)</h3> <p><img src="(http://www.imore.com/sites/imore.com/files/field/image/2015/07/ios-9-custom-thumb.jpg)" /> (http://www.imore.com/ios-9)</p> <ul><li>iOS 9 Review (http://www.imore.com/ios-9-review)</li> <li>iOS 9 FAQ (http://www.imore.com/ios-9-faq)</li> <li>iOS 9 Help (http://www.imore.com/ios-9-help)</li> <li>iOS 9 News (http://www.imore.com/ios-9)</li> <li>iOS 9 Discussion (http://forums.imore.com/ios-9/)</li> </ul></div> <div> <style> <!--/*--><![CDATA[/* ><!--*/ <!--/*--><![CDATA[/* ><!--*/ <!--/*--><![CDATA[/* ><!--*/ .devicebox { background-color: #5CB8DB; border: 1px solid #E2E9EB; float: right; display: block; margin: 0 0px 10px 10px; max-width: 350px; overflow: hidden; width: 50%; } .devicebox h3 { background: #8D98BD; font-family: "camptonmedium",sans-serif; font-size: 20px; margin-bottom: 0; margin-top: 0; padding: 0; text-align: center; } .devicebox h3 a { display: block; line-height: 30px; padding: 0 10px; } .devicebox h3 a:hover { background: #7e88aa; text-decoration: none; } .devicebox .video { margin: auto; } .devicebox p, .entry-content .devicebox p > img, .devicebox img { margin: 0px; max-width: 100%; padding: 0px; } div .devicebox *, div .devicebox li, div .devicebox a:active, div .devicebox a:hover, div .devicebox a:link, div .devicebox a:visited { color: #fff; } .devicebox a:hover { text-decoration: underline; } .devicebox p, .devicebox ul li, .devicebox ol li { font-size: 16px; padding: initial; } .devicebox ul { margin: 0; padding: 0.5em 1em 1em 30px; } .devicebox ul li { display: list-item; line-height: 24px; list-style: disc outside none; } .devicebox ul li:before { display: none; } .devicebox p ~ p { padding: 0px 15px 15px; line-height: 1.25; } .devicebox p:first-of-type + p { padding: 15px; } div *:last-of-type + .devicebox, div *:last-of-type + div ~ .devicebox { float: none; margin: 0 auto 30px; max-width: 700px; min-height: 225px; position: relative; width: 100%; } div *:last-of-type + .devicebox .video, div *:last-of-type + div ~ .devicebox .video { bottom: 0px; left: 50%; position: absolute; right: 0px; top: 30px; } div *:last-of-type + .devicebox .video_iframe, div *:last-of-type + div ~ .devicebox .video_iframe { height: 100%; padding: 0px; } div *:last-of-type + .devicebox h3 + p, div *:last-of-type + div ~ .devicebox h3 + p { bottom: 0; left: 50%; overflow: hidden; position: absolute; right: 0; top: 30px; width: 50% } div *:last-of-type + .devicebox h3 + p img, div *:last-of-type + div ~ .devicebox h3 + p img { height: 100%; width: auto; } div *:last-of-type + .devicebox ul, div *:last-of-type + div ~ .devicebox ul, div *:last-of-type + .devicebox p, div *:last-of-type + div ~ .devicebox p { width: 43%; } @media all and (max-width: 500px) { .devicebox { float: none; margin: 0 0 30px; max-width: 100%; width: 100%; } div *:last-of-type + .devicebox .video, div *:last-of-type + div ~ .devicebox .video { left: 0; position: relative; top: 0; } div *:last-of-type + .devicebox .video_iframe, div *:last-of-type + div ~ .devicebox .video_iframe { padding-bottom: 56.25%; } div *:last-of-type + .devicebox h3 + p, div *:last-of-type + div ~ .devicebox h3 + p { left: 0; position: relative; top: 0; width: 100%; } div *:last-of-type + .devicebox ul, div *:last-of-type + div ~ .devicebox ul { width: auto; } } /*--><!]]]]]]><![CDATA[><![CDATA[>*/ /*--><!]]]]><![CDATA[>*/ /*--><!]]>*/ </style></div> </div></div></div><br clear='all'/> <a href="http://rc.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/rc/1/rc.htm" rel="nofollow"><img src="http://rc.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/rc/1/rc.img" border="0"/>[/url] <a href="http://rc.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/rc/2/rc.htm" rel="nofollow"><img src="http://rc.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/rc/2/rc.img" border="0"/>[/url] <a href="http://rc.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/rc/3/rc.htm" rel="nofollow"><img src="http://rc.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/rc/3/rc.img" border="0"/>[/url] <img src="http://da.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/a2.img" border="0"/> (http://da.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/a2.htm)<img width="1" height="1" src="http://pi.feedsportal.com/r/238386267069/u/49/f/616881/c/33998/s/4a13ef72/sc/28/a2t.img" border="0"/><img width='1' height='1' src='(http://tipb.com.feedsportal.com/c/33998/f/616881/s/4a13ef72/sc/28/mf.gif)' border='0'/><img src="http://feeds.feedburner.com/~r/TheIphoneBlog/~4/fUxyKRCd73w" height="1" width="1" alt=""/> Source: App thinning in iOS 9: Explained (http://feedproxy.google.com/~r/TheIphoneBlog/~3/fUxyKRCd73w/story01.htm) |