With Xcode 4.5 reportedly dropping support for armv6 binaries (iPhone Classic and iPhone 3G) and therefore deployment targets below iOS 4.3, actually continuing to use these devices gets increasingly harder.
Apple has half-baked measures in place that could alleviate this issue, but it appears to be broken.
Let’s say I’m using my iPhone Classic on iOS 3, and GreatApp 1.0 supports this hardware.
The developer decides to support iOS 6 and iPhone 5 using Xcode 4.5 and therefore has to drop armv6 support with GreatApp 2.0.
The device will not install the update because it’s incompatible. But iTunes on Mac/PC will download the update and replace the 1.0 .ipa on disk.
Now the device needs a restore from a backup. iTunes lost the 1.0 ipa. And the device is unable to get the older version from the App Store, because only the latest version is listed.
In iTunes Connect, there is an option to “indicate a legal issue with this version“. According to the wording on the page, this should make this version unavailable to redownload. This would also imply there was some way to access those old versions. But there is none.
Even when accessing the old purchase directly (viewSoftwareRedownload URL), the store seems to present only the latest version to the user, even if it’s incompatible.
With an ever-increasing number of older devices floating around, Apple should make sure customers have a way of restoring those devices to a somewhat usable state even when apps get their unevitable updates and drop explicit support for old devices.
The App Store should enable old devices to actually download the last compatible version of an app through the iTunes in the Cloud / iCloud mechanism, a.k.a. App Store / Updates / Purchased.
Developers should have a clear way of indicating which old versions should stay available. The “legal issue” indication is there already, but worded confusingly and apparently quite useless.