IOS 5 compatibility using Xcode 8 - ios

I have an app in appstore supporting from ios8 and later. But one of my client neeed to run it in ios 5.1.1 ipad too . Is it possible to submit apps in appstore having ios 5.x compatible versios ? How can i make it compatible with ios 5.x ?

Not his is not possible, iOS 5.1.1 supports device with ARM v6 processor. Which is no longer supported by Xcode.
You will therefor need an older copy of Xcode, with the iOS 5.1.1 SDK.
The bige problem is that you will then not be able to submit your app to the Appstore since this requires you to build with the iOS 9 SDK.
You might be able to remove the ARM v6 slice from the binary you compiled with the older version of Xcode and add that slice to you new binary, but you will run into many more issues.
The cheapest is to buy this client an new iPad.

Related

When do we need to upgrade to new version Xcode (.i.e Xcode 11)?

When do we need to upgrade XCode to newer version? Is it ok if we use older version (.i.e build IPA for iOS 13.1 with XCode 10 or even XCode 9)
(to debug with newer iPhone, iPad is one reason :D)
While you can develop/build/release your app to be compatible with iOS 13 on older Xcode, you cannot add new features that are present in XCode 11 such as dark mode, Sign in with Apple, new simulators (yes, there is a way to add iOS 13 simulators into older XCode but I wouldn't recommend doing it), new code signing, Swift UI and many more.
Also - Sign in with Apple is going to be required for a lot of apps soon so that's a huge push into the new XCode.
You will be able to work with older iOS versions, but at some point you won't be able to run an application for the latest iOS releases (for example iOS13) and also you won't be able to use SwiftUI framework for developing.
Of course you won't have access to new features of Xcode.
If you developing on older version of Xcode then you can not use dark/light mode feature on your app, also in future it's compulsory to build/upload app using latest Xcode version for latest iOS support.

How can I tell which iOS versions my XCode will deploy to?

I currently have XCode version 8.2.1.
On my iPhone, I currently have iOS 10.3.2.
My version of XCode will not deploy to anything over iOS 10.2.
On my iPhone, I am being offered an upgrade to iOS 11.0.3.
According to this wiki here, XCode version 9 will deploy to iOS 11.0: https://en.wikipedia.org/wiki/Xcode#9.x_series. But I can't tell whether this includes all the sub-versions, eg 11.0.3.
So my question is, if I get XCode version 9 and upgrade my phone to iOS 11.0.3, will I be able to deploy to my phone from XCode? How do I tell exactly which versions of iOS are supported by each version of XCode? And going forward, how can I ensure that my iPhone and iPad always have versions of iOS which I am able to deploy to from XCode?
Yes, you will be able to deploy to your phone.
While you need Xcode 9 and not 8 to program against iOS11, this question has more to do with the Base SDK and Deployment Target settings in your project.
The Base SDK is the SDK version you are compiling against. In Xcode 9, this could be iOS11, for example. The Deployment Target setting represents the lowest supported iOS version the app will run on. This might be iOS10, per your example, but it could be anything else.
To use the newest iOS11 features, you'd have to have a minimum Base SDK of iOS11. To support older platforms, you must make sure the Deployment Target is set to the oldest version you'd support. In code, you need to check the version of the platform when deciding to use a newer-than-Deployment-Target feature.
if I get XCode version 9 and upgrade my phone to iOS 11.0.3, will I be able to deploy to my phone from XCode?
Yes. Xcode 9 and iOS 11 are both the latest (as of Oct. 2017) versions available. If you want to support iOS 11, you need Xcode 9.
How do I tell exactly which versions of iOS are supported by each version of XCode?
Check the release notes. For example, the Xcode 9 Compatibility section says:
Xcode 9 includes SDKs for iOS 11, watchOS 4, macOS 10.13, and tvOS 11
And going forward, how can I ensure that my iPhone and iPad always have versions of iOS which I am able to deploy to from XCode?
Staying current with the latest iOS and Xcode versions is one way to do that. You don't even need the latest iOS version on your phone -- just any version that's later than the minimum version supported by whatever Xcode you're using. Looking at the list of available deployment targets, I can see that Xcode 9 deploys to iOS versions back to iOS 9.1.
Mostly, just be aware that updating iOS on your phone may require you to also update Xcode.

Can I downgrade iOS Deployment Target when submitting a new version?

My app is available on the Appstore and is currently compatible with iOS 6 or later.
I want to release a new version only compatible with iOS 7 or later because there's a lot of crashes on iOS 6 with this new version and I have to release ASAP.
Here's my question : when the iOS 6 crashes will be fixed, would it be possible to bring back the iOS 6 compatiblity (i.e. downgrade the IPHONEOS_DEPLOYMENT_TARGET from 7.0 to 6.0) ? Does Apple allow that ?
Thanks in advance.
Your iOS Deployment Target can be whatever you wish it to be. The main requirement that Apple has is that your app submission is compiled against the latest SDK at the time (currently Apple is accepting base SDK of iOS 7, but it will change to iOS 8 in the new year).
When you downgrade the deployment target back down to 6, the only thing you have to ensure is that you're not calling any iOS 7+ APIs when running on iOS 6 devices, otherwise you'll be creating a lot of crash reports.
edited after better understanding the original question

How to build and test Xcode iOS SDK 4.3 project in iPad 2 iOS 5?

I'm wondering if I can build and test my current project which is iOS SDK 4.3 based, to iPad 2 (iOS 5)? In Organizer - Devices it says:
The version of iOS on “my iPad” does not match any of the versions of iOS
supported for development with this installation of the iOS SDK. Please restore
the device to a version of the OS listed below, or update to the latest version
of the iOS SDK;
Can I build my project without updating to iOS SDK 5?
No, this isnt possible, you must upgrade to the lastest Xcode.
It is possible to have two versions of Xcode installed if you still want to hang onto the old one.
What is the reluctance to upgrade? Are you having compiling issues?

Test iOS app with device of iOS 5.0.1 beta version

Now, I use Xcode 4.2 supporting iOS 5.0. Apple has just released iOS 5.0.1 beta 2. I can install it on my iPhone.
I want to test with this beta version, i.e build code from Xcode.
How do I build code from Xcode 4.2 for device of iOS 5.0.1 beta?
Please help
In exactly the same way that you would do so for iOS 5.0. We can't talk about beta versions of the software, but we can talk about what happens when newer versions of iOS are released. When you connect a device with a newer version of iOS installed, the Xcode Organizer will give you a message like:
Xcode does not have debugging information for the version of iOS on the device named “Dev iPhone”. Xcode can collect debugging data from the device to enable development with this version of iOS. This process only needs to be done once per iOS version, and will take several minutes.
You simply click OK or similar, and Xcode downloads the necessary debugging data. You can then build to the device from Xcode and use all the debugging tools as usual. This process works for point releases. It is highly unlikely this would work for major updates (e.g. if iOS 6 was released) and it may or may not work for iOS 5.1, depending on the changes included. But when Apple have not released a new version of Xcode to developers, you can be sure it is because one is not required.
It is important to understand the distinction between an updated version of iOS (for the device) and the iOS SDK (for Xcode). A point release of iOS does not necessarily require any change to the iOS SDK, and therefore with Xcode's ability now to download the debugging information on demand (a feature that has been around for a while), you don't necessarily need an updated version of Xcode. Likewise, with Xcode 4.2 you still set the iOS 5.0 as your base SDK even if you are setting an earlier version (e.g. iOS 4.2) as your deployment target. You don't need the iOS SDK v4.2 to target iOS 4.2 for deployment. (Just make sure you add back "armv6" to targeted architectures in your build settings, if you still want to support the iPhone 3G and equivalent iPods, as in Xcode 4.2 this is not included by default.)

Resources