App installation should skip assets that can't be used on a device
| Originator: | dmunsie | ||
| Number: | rdar://11019056 | Date Originated: | 09-Mar-2012 09:43 AM |
| Status: | Open | Resolved: | |
| Product: | iPhone SDK | Product Version: | 5.1 |
| Classification: | Enhancement | Reproducible: | Always |
With the introduction of Retina display devices, such as the iPhone 4, 4S, 4th gen iPod touch and now the new iPad, universal applications have been getting bigger and bigger due to the additional assets included. But the smallest device size has remained at 8GB for the past 4 years now. When installing universal applications onto these smaller devices, it has reduced the amount of storage available to the user by a large amount. For example, with the latest updates, Apple's own apps take up a significant amount of additional space:
"AmpliFreQuency: Since the new #iPad, app update sizes went iMovie: 70MB to 404MB, Keynote: 115MB to 327MB, Numbers: 109MB to 283MB, Pages: 95MB to 269MB :("
(via https://twitter.com/amplifrequency/status/178112244889034752)
Even on larger devices, large amounts of space are being used to hold assets that will never be used on that device. My own personal iPhone with 64GB "lost" 900MB worth of space after installing the latest iWork and iLife update.
I would like to suggest a mechanism where iOS would automatically strip out resources that are not meant for the targeted device. For example, when installing a universal application on an iPhone 4S, any assets with a ~ipad in their filename would not be installed. When installing a universal application on an iPhone 3GS, any assets with ~ipad in their name or @2x would not be installed. The same goes for universal applications on the iPad -- original and iPad 2 would strip out @2x and ~iphone resources, while the new iPad would strip out only the ~iphone resources.
Along with this mechanism, Xcode should be modified to allow developers to flag certain resources as required. This would allow developers to use a resource that is marked as ~ipad or @2x on a device that normally wouldn't -- perhaps as a way to save on application size.
Additionally, to insure that application compatibility is not sacrificed, this functionality should be enabled by building the application with a newer version of the iOS SDK. Similar to how multitasking functionality was enabled by building with the iOS 4 SDK or later.
Comments
Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!