Can we make an iOS app backward compatible - ios

Can we make an iOS app backward compatible with older iOS versions?
As we can do in android apps using API Levels?

While building an iOS app, the architectures (armv7, armv7s, armv64) you choose dictate what all platforms you will be supporting. The "Deployment target" version that you select in xcode is the minimum OS version that you can support. An iOS app is a universal binary, which means that it can contain code supporting both 32-bit and 64-bit architectures. Building with 64 bit support (iOS 8 SDK) is not the same as dropping support for earlier 32-bit OS versions.

Related

How do I set a previous base SDK in Xcode 10?

In earlier versions of Xcode I could set the base SDK to the current iOS version and the deployment target to an earlier version as shown in the below slide from the iOS 7 TechTalk, session Architecting Modern Apps, Part 2:
This Stack Overflow question elaborates nicely on the Base SDK vs Deployment target.
What's the meaning of Base SDK, iOS deployment target, Target, and Project in xcode
However, now when I look at the base SDK config field in Xcode I just see "iOS" (which is an alias of "iphoneos").
According to https://developer.apple.com/ios/submit/
Starting March 2019, all iOS apps submitted to the App Store will need
to be built with the iOS 12.1 SDK or later, and support the all-screen
design of iPhone XS Max or the 12.9-inch iPad Pro (3rd generation).
This worries me because it seems that I can no longer target older versions of iOS.
I've done a lot of research by I cannot seem to work out definitively whether there still a way to use the 12.1 SDK but target older versions of iOS. Is there a way to do this?
The base SDK is just "iOS". The exact version will depend on your version of Xcode (12.1 if you are using Xcode 10.1). The base SDK does not determine which versions of iOS are supported by your app.
You set the minimum version your app is compatible with by specifying the "iOS deployment target", either for your project as a whole:
or in the settings for a specific target in your project
The oldest version of iOS that you can target with Xcode 10 is iOS 8 (which is pretty old).
BTW, you can see or select the Base SDK you are using, in the Xcode Preferences/Locations:

Minimum target iOS version/device platform for iPhone-App to get uploaded at AppStore

what is the allowed minimum target iOS version and device platform for a new iPhone App to get uploaded on AppStore
Apple support iOS 4.3 see Setting Deployment Info. But support 64-Bit Binary minimum deployment target of iOS 5.1.1
Apple has officially announced apps need to be compiled with Xcode5 starting February 1, 2014:
So you must have Xcode5 for submission app in to app store. And in to xCode5 we can not define device platform like(iPhone4,iPhone4s,iPhone5,iPhone5s.. etc.) we can set deployment Target so you can setting minimum deployment target is 6.0 if you want to less then 6.0 and if you are not find that Option like Bellow image you can directly type in to Deployment Target filed.
Building with Xcode 5 is currently required for iOS App Store submission. Xcode 5 does not include an armv6 compiler, thus does not support building for the original iPhone (2G) or the iPhone 3G, which only run armv6 code, or for iOS versions below 4.3, which also require armv6 code. So the 3GS and iOS 4.3 and newer are the supported lower limits.
Note that using Xcode 5 to build arm64 binaries for the newest devices has a Deployment Target lower limit of iOS 5.1.1. Anything lower won't create a functional build.
However, there are reports that one can additionally build the app with old Xcode 4.3 or earlier, which does include an armv6 compiler, and then use lipo to combine the results with an Xcode 5 build archive to support both newer and older devices down to iOS 4.0. Manual plist editing before codesigning may also be required after using lipo. Apple might currently be approving a small number of such lipo builds, however it is unknown whether they will continue to do so.
Starting from June 1st, 2015, APP updates needs to be 64bit and built with ios8 SDK.
Please check the answer:
I think Minimum target iOS version which apple should support be 4.3.
Check this if you want to add more targets: XCode 5 deployment target limited only to iOS 7

arm64 armv7 armv7s Architectures settings

Criteria:
iPad only app. Only support iPad 2 or later.
Want to take advantage of 64 bit code for the latest iPads.
Min iOS 6.
Xcode 5.02 with iOS 7 SDK (current release)
Should I set both Architectures and Valid architectures to arm64 armv7
armv7s?
Xcode 5.0.1 can build your app with both 32-bit and 64-bit binaries included. This combined binary requires a minimum deployment target of iOS 5.1.1 or later. The 64-bit binary runs only on 64-bit devices running iOS 7.0.3 and later. If you have an existing app, you should first update your app for iOS 7 and then port it to run on 64-bit processors. By updating it first for iOS 7, you can remove deprecated code paths and use modern practices. If you’re creating a new app, target iOS 7 and compile 32-bit and 64-bit versions of your app.
The architecture for 64-bit apps on iOS is almost identical to the architecture for OS X apps, making it easy to create a common code base that runs in both operating systems. Converting a Cocoa Touch app to 64-bit follows a similar transition process as the one for Cocoa apps on OS X. Pointers and some common C types change from 32 bits to 64 bits. Code that relies on the NSInteger and CGFloat types needs to be carefully examined.
Start by building the app for the 64-bit runtime, fixing any warnings that occur as well as searching your code for specific 64-bit issues. For example:
Make sure all function calls have a proper prototype.
Avoid truncating 64-bit values by accidentally assigning them to a 32-bit data type.
Ensure that calculations are performed correctly in the 64-bit version of your app.
Create data structures whose layouts are identical in the 32-bit and 64-bit versions of your app (such as when you write a data file to iCloud).
Reference: apple doc
Yes. You can set both architectures for your above criteria. But problem is, you should handle code for both cases(32-bit & 64-bit).
Note:
Additional Notes for you.
You can support from Minimum IOS 5.1
You can use Xcode 5.0.1 with IOS 7 base SDK

Is it possible to create an app iOS 4 - iOS 7 compatible with Xcode 5.0.2 on Mavericks?

I need to develop an app who support iOS 4 - iOS 7, is it possible to do it on XCode 5.0.2 on Mavericks?
The lowest deployment target xcode provide me is iOS 6.
In Project > Target > Build Settings > Architectures:
change the Architectures from Standard Architectures (including 64-bit) to Standard Architectures ,or if you want to support older devices, type armv6 armv7 armv7s in Others
Then, you can change the deployment target to lower versions (just type 4.0 or 4.3 in the Deployment Target box)
But why do you want to target iOS 4 still?
Yes, supporting iOS4 is possible, the problem is supporting ARMv6 (iPhone 3G and iPod Touch 2G).
To support ARMv6, you need iOS SDK 5.x with is available in Xcode 4.4.
But you also need to support the widescreen iPhone resolution, so you need to use two different Xcode versions for it
Try this , You will get the deployement Target till from lowerEnd . Its mainly due to the >XCode 5.0 choses by default architecture as including 64-bit this only supports >IOS 6.0
iPhone 5S is powered by A7 64bit processor. From apple docs
Xcode can build your app with both 32-bit and 64-bit binaries
included. This combined binary requires a minimum deployment target of
iOS 7 or later.
Note: A future version of Xcode will let you create a single app that
supports the 32-bit runtime on iOS 6 and later, and that supports the
64-bit runtime on iOS 7.

Support iOS 3.2 (or 4.0) with XCode 4.5

I uploaded an application to AppStore with minimum support of iOS 3.2. Then I downloaded XCode 4.5 with iOS 6.0 SDK and I want to release an update for my 3.2 supported app. But as you know, 4.3 can be selected as minimum version in XCode 4.5. But since my project is older, I can select 3.2. I wonder if I build and upload my app with 3.2 selected as seen in the picture, will it support 3.2?
No, you can't build and submit an iOS 3.2 compatible app using Xcode 4.5.
Xcode 4.5 cannot build an armv6 binary executable slice, which is required for all Deployment targets below iOS 4.3 (except in the very unusual case where you initially submitted an iOS 3.x armv7-only app).
Xcode 4.5 not support ios 4.3 and less
Summmar tab and edit as text the desired Deployment target field ( XCode 4.5 )
Here's a quote from Wikipedia:
In June 2010 at the World Wide Developers Conference, Apple announced version 4 of Xcode during the Developer Tools State of the Union address. Version 4 of the developer tools consolidates the Xcode editing tools and Interface Builder into a single application, among other enhancements.[13][14] Apple released the final code for Xcode 4.0 on March 9, 2011. The software was made available for free to all registered members of the $99 per year Mac Developer program and the $99 per year iOS Developer program. It was also sold for $4.99 to non-members on the Mac App Store (no longer available). Xcode 4.0 drops support for many older systems, including all PowerPC development as well as SDKs for Mac OS X 10.4 and 10.5, and all iOS SDKs older than 4.3. The deployment target can still be set to produce binaries for those older platforms, but for the Mac OS platforms one is then limited to creating x86 and x86_64 binaries.
It says there that starting from Xcode 4.0, Apple removed support for iOS 4.3. The SDK is no longer available. But one can still provide binaries for older platforms.

Resources