3

I need an iOS app to be compatible with previous iOS versions, at least from 4.0, and also with prior devices (iPhone 4S, 4, 3GS... and likely all iPad devices). I found some posts dealing with the iOS versions backwards compatibility that already have some years (for example, How to build against older iOS versions with the latest Xcode downloads?), and I don´t know if this is deprecated or it still is the way to proceed, at least concerning the app building. Regarding programming issues, I guess I should check the documentation to know if the SDK features/libraries/frameworks I want to use are supported by all the iOS versions I want to be compatible... And having such information, how could I check programmatically the iOS version the device is running, in order to provide a certain feature or not?

On the other hand, regarding iOS versions and devices running them: could I find any Apple document listing which iOS versions supports each existing device? What hardware-dependent issues should I take into account while developing the app?

Thanks so much

Edit: Target architecture(s) is the only hardware consideration I've to take into account? Knowing that, for example, an iPhone 3GS is able to run, and is running, iOS 6.1.3, can I assume that the device will then support all the SDK's features, or I still need to check for the availability of such features depending on the device?

Community
  • 1
  • 1
AppsDev
  • 12,319
  • 23
  • 93
  • 186
  • 1
    The root of the problem is about building targeting armv architectures that you can no longer target in newer versions of Xcode. See http://stackoverflow.com/questions/12619124/how-to-support-both-armv6-and-armv7s-for-release-build-in-xcode-4-5. I'd VERY highly recommend getting the requirement change to iOS 4.3+ instead of iOS 4.0+ as it will save you a monumental headache. Most developers at this point only target iOS 4.3+ as Apple has made it difficult to support older iOS versions. – bengoesboom May 14 '13 at 15:51
  • Also, this document (while a little old now) has a nice matrix of support iOS versions by device https://www.dropbox.com/s/u4lp189clie04ki/iOS_Support_Matrix_AUTUMN2012-2.pdf – bengoesboom May 14 '13 at 15:56
  • currently a couple of percents of devices run under `iOS5`. what is the point to target an application to `iOS4+` instead of `iOS5`? the regular practice is you (or your client) should target the application **for the current iOS version and one version behind** only, which is the `iOS5` and `iOS6` currently as I'm writing this comment. – holex May 14 '13 at 20:57
  • That's the point, targeting iOS 4 and above was given as a requirement for the app... if it is really an inconvenience at development stage to meet such requirement, maybe it should be raised at least to iOS 4.3... – AppsDev May 15 '13 at 06:18

3 Answers3

5

with the newest xcode version that supports iOS 6.0, you cannot develope for devices with iOS < 4.3 (lowest base SDK), and also the version that supports iOS 4.0 doesn't support iOS 6.0. For older devices you have to set the Architectures to armv6 armv7 in you project-settings tab "Build Settings".

for checking the iOS Version running, just check the available posts here at stack, you will find one that fits for you ;)

All in one I would set the base SDK to 5.1 because it's the last that can be used by iPad 1 and iPod touch 3. gen. and long enought available so everyone should have the latest update.

Older devices can have only iOS 4.2.x and are not supported by current xcode (4.6.2 (4H1003)).

geo
  • 1,781
  • 1
  • 18
  • 30
  • A question about the "Base SDK" setting: afaik, it determines the latest iOS version the app can run on, so setting it to iOS 5.1 will prevent the app from running on upper iOS versions, right? I need to support from iOS 4.3 to the latest, how can I handle this? – AppsDev May 30 '13 at 11:32
  • the "base SDK" sets the lowest, not the highest iOS version. it would make no sense to inverse this, because the newer versions always support the older API (does mean, that it doesn't crash, but not that everything will runs as expected) while older versions don't know about the new API (like new methodes, so they dont respont to the selectors, and you know what this means ;) ) – geo Jun 02 '13 at 13:26
  • 1
    It seems that _base SDK_ actually sets the newest iOS version supported, while _deployment target_ sets the earliest iOS version supported ([SDK Compatibility Guide](http://developer.apple.com/library/ios/#documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html#//apple_ref/doc/uid/10000163i-CH1-SW1)) – AppsDev Jul 04 '13 at 14:52
3

iOS Support Matrix v2.4

This version is updated and includes iOS 7.

iOS Suport Matrix

Link: http://www.iossupportmatrix.com

Community
  • 1
  • 1
Richard Stelling
  • 25,607
  • 27
  • 108
  • 188
1

There is a great infographic that shows what versions of iOS are supported by which devices at http://iossupportmatrix.com.

idz
  • 12,825
  • 1
  • 29
  • 40