I seem to be not understanding the effects of a specific deployment target in XCode (4.5) correctly. Specifically, I got an app in the app store that was previously set for deployment target 5.0, meaning on the app store page it says "requires iOS 5.0". So when I now set the deployment target to 6.0 in my next update, does that mean it'll require iOS 6 and otherwise won't start? I'm not using new iOS 6 features in my update.
I guess that means I should stay at 5.0 for my deployment target, but then what is the point of changing your deployment target (provided the one you had used previously is not totally obsolete)?
There are two primary settings used for your targeting your builds:
Base SDK & Deployment Target.
The Base SDK = What are the latest features I want available in this app?
The Deployment Target = What is the earliest OS I want to be able to run this app?
So, if you have both of these set to iOS 6, the user must have iOS 6 to install or run the app.
If you have a Deployment Target of iOS 5.0 and a Base SDK of 6.0 that means it'll install and run in iOS 5.0, but you need to be careful to branch your code and not use any iOS 6.0 features if the user is running on an iOS 5.0 device.
So when I now set the deployment target to 6.0 in my next update, does that mean it'll require iOS 6 and otherwise won't start?
Yes, if your deployment target is iOS 6, then users will need iOS 6 or above to run it. Simple as.
Your deployment target is your baseline for supported devices, it's the minimum version you support. This doesn't mean you can't use iOS 6 specific features, but it does mean you need to take into account iOS 5 users at runtime (See iOS SDK Compatibility Guide)
What developers typically do is update their base SDK. This means they're able to take advantage of the latest abilities of the SDK, to make a better user experience for users on that iOS version. Having a base SDK of iOS 6 does not mean the app won't work for iOS 5 users.
Related
I have about a 200+ iPads (1st generation), that my company uses. They work fine (like new).
The latest version of Xcode only lets you set a deployment target of 8.0.
I can download an older version of Xcode that lets me set a deployment target of 5.0 (for 1st generation iPad).
If I set the deployment target to 5.0, and submit via an older version of Xcode, will I have a problem submitting to the app store ? Is there any restriction on how low one can set the deployment target when submitting ?
The current App Distribution Guide says "For example, the lowest available setting for iPad apps is iOS 4.3." ( Setting the Deployment Target ) but my Xcode 7.1.1 doesn't seem to allow any deployment target for an iPhone project to be lower than iOS 6.0. So YMMV I guess. Basically the minimum is whatever the minimum supported Xcode version (Is Xcode 5 still allowed or does the store now require Xcode 6? I don't know) allows in the popup for the project deployment target.
One other factor - if you use Swift that limits you to iOS 7.0 and later.
Please check guideline below:
https://developer.apple.com/library/content/documentation/IDEs/Conceptual/AppDistributionGuide/ConfiguringYourApp/ConfiguringYourApp.html#//apple_ref/doc/uid/TP40012582-CH28-SW21
this is a very simple question I'm assuming. Can someone tell me what deployment target means. If I choose IOS 10, does that mean only users with iOS 10 can download the app. Is it bad to choose a lower deployment target? ALSO, continuing on deployment target, is it not recommended to run on a lower deployment target.
Lets say you have set minimum deployment target to iOS 9.
This means your application is compatible for iOS 9 and above devices.
The application won't run on below 9.0 devices but can run on any iOS version greater than iOS 9.0.
The deployment target determines your app's ability to run on older iOS versions.
App with deployment target set to 10 will work on iOS version 10+ (10, 11, 12, 13 ...) but won't work on 9.x.
When a new version of iOS is released, some people do not bother to update their devices to the latest iOS version and thus they can't download your app from the App Store.
Example
If you choose higher deployment target (e.g 12.1), your app won't be able to download for the people who even have latest devices but have older iOS version (iPhone X with 11.0). In Contrast If you choose lowest possible deployment target (e.g 6.0), you try to make your app maximum backward compatible (so even if someone hasn't updated their iOS in ages will be able to download your app).
CAUTION
Many (almost all) newer frameworks and features won't be able to run properly (Behave as expected) on lower iOS versions which increases the chances of app crashes.
What Affects Deployment Target
Following are few factors that demands higher deployment target.
1) Using latest iOS SDK (alone)
2) Using latest iOS SDK specific features (Constraints, newer XIB files etc).
3) Using fast adapting external libraries / Frameworks (e.g Facebook SDK, Firebase etc).
4) Higher Swift Version (5.0) requires higher deployment target vs writing your app in legacy Objective C) !Needs citation.
SOLUTION
We have been using Deploymate for maximum backward support. It mainly assists us about warning the following:
1) Newer APIs that won't work on lower iOS versions
2) Using deprecated methods that won't work on newer iOS versions.
This is when you start fixing your code to make it available for lower iOS versions for maximum compatibility.
Note: Xcode also informs about several pitfalls. Deploymate is neither associates with us or pay us in any form. You can look for other alternates.
iOS Deployment Target(IPHONEOS_DEPLOYMENT_TARGET)
Deployment Target is a minimum version of iOS which is supported by your target.
It means that:
as a developer you support this version and you are able to support all next compatibility
as a user you should have at least this version of iOS
To change it in Xcode 11.5
Build Settings -> iOS Deployment Target
//.pbxproj
IPHONEOS_DEPLOYMENT_TARGET
If you are new to Xcode, I suggest accepting the default, and thinking of it as a constraint on your project.
As newer of Xcode versions come along, support for older target values will be removed. Companies that have extensive customer bases have to deal with this problem in their own way.
In most projects I have worked on, the iOS version matters because it dictates which devices can run your application.
For example, iOS 10 essentially left behind all iPod-style connectors.
I released an iOS 8 version of my app today and wanted to limit it only to users running iOS 8 (because it uses some new Core Motion APIs that only work with iOS 8). It seems like iOS7 users are still able to download my app, even though the deployment target is iOS8 and the App Store says "Compatibility: Requires iOS 7.0 or later". Can I force app to run in iOS8 only? Does the Deployment Target option in Xcode still control which version of the OS is required on the App Store?
The answer is, you have to set the Deployment Target in three different places, in the project, in the app target, and (in my case) in the extension. If you don't set it in all three locations the app won't show as iOS 8 only.
Deployment target on all your TARGETS is the correct option. It's important to understand the different between "Deployment target" and "Base SDK". Both regard a iOS SDK version, but they have different meanings. To learn what read here.
Hello I am beginner with these things and would appreciate nice explanations
that would dismiss my doubts.
If I target my app for iOS 5 -- does it mean users who have iOS 6 and iOS 7 can
also use it? Anything I should watch out for?
There are two primary settings used for your targeting your builds:
Base SDK & Deployment Target.
The Base SDK = What are the latest features I want available in this app?
The Deployment Target = What is the earliest OS I want to be able to run this app?
So, if you have both of these set to iOS 6, the user must have iOS 6 to install or run the app.
If you have a Deployment Target of iOS 5.0 and a Base SDK of 6.0 that means it'll install and run in iOS 5.0, but you need to be careful to branch your code and not use any iOS 6.0 features if the user is running on an iOS 5.0 device.
Yes, the target is the minimum version version that the app can run on. That doesn't mean that the app will work properly on newer versions and you really need to test to be sure. If you're creating a new app think carefully about which older versions to support.
If you target your Application for a lower iOS version, anyone with the version number you target AND HIGHER and access the application. Anyone LOWER than the one you target will not be able to download and use the application.
Everything will work fine, however there are certain features that are only available in iOS6 and iOS7 such as UICollectionView is only available in iOS6 and above. Fortunately you can test the different OS's in the simulator, it will make you life easier and you will be able to see if your application breaks running a different OS.
I'm hesitant about Deployment target in xCode.
my question : can my application run on iOS 3, 4, 5, 6 if I select on Deployment target 4.3 ?
I can't test my application on an iPhone because I don't have it but I think the application can only run on IOS 4.3 or later
sorry for my bad english
If you use iOS 4.3 as deployment target, that will be the minimum version supported by your app. So, no, it won't run in iOS 3.0 for instance.
Also, you'll need to detect features not present in the iOS actually running the app and program them conditionally.
I'd suggest supporting iOS 5 or better. And definitely forgetting about iOS 3.
That is correct. The Deployment Target is the earliest version of iOS that your application will support.
Note, however, that if you use an API call from your current SDK (4.3) that is not present in the 3.0 SDK, your application will crash on devices running iOS 3.0.
So even though you can set the Deployment Target to 3.0, that will not guarantee that your app will work on an iOS 3 device.
See the Apple Developer documentation for more details.