Originally Posted by jungmark
In iOS, devs are required to support the N and N-1 versions of iOS.
Hmm. I haven't done iOS development in a while, but that doesn't sound correct to me.
With a few exceptions, you should be able to target almost any iOS version you wish. Exceptions include:
- Including iPads in your deployment profile requires 4.3 or above, IIRC.
- You cannot update your current app to target fewer people than it did before.
- Nowadays you must include iPhone 5 and retina image support.
- Obviously the version must support the APIs you use.
More recent information is welcome from current developers.
Is that the same with android? Or will they develop for the LCD (2.x) or the latest version?
Whether iOS or Android, the developer decides what minimum APIs and hardware are required for their app to run.
On both, they can also check for such support during runtime, and take different paths. E.g. if you're missing a front camera, don't show buttons for it. Or if the device doesn't have the latest APIs, do a workaround with older ones.
With Android, it's easier to target really old OS versions, because even those had multitasking, notifications, widgets, etc. That's why fragmentation isn't the scary monster most people think.
Android development goes a bit further in supporting older devices: Google releases extra libraries that provide some recent OS functionality, so that even devices with older OS versions will look good. For example, the feature library supports the latest tablet UI fragments creation even on devices using Froyo.
The upshot is, a smart developer on any system always targets the minimum OS level that s/he requires, in order to maximize the number of potential users.