Check Build SDK Version - ios

With the new App Requirements and Guidelines from Apple, one of them is that Apps for iPhone or iPad must be built with the iOS 13 SDK or later.
My company has several apps on iTunes, and I was wondering if there is some way to see what SDK version a build was built with, either in iTunes or in the Organiser in Xcode.
Otherwise I guess the only option is to rebuild and upload apps that we haven't build for a while, but I'm not sure.

The requirement to use the iOS 13 SDK only applies to new submissions. Apps already on the App Store don't need to be updated.
If you submit a new version containing enhancements or bug fixes, then you need to use the iOS 13 SDK.
You do not need to submit an otherwise unchanged app simply to use the iOS 13 SDK.

Related

Using latest version of Xcode 8, support and test on for iOS 5.1.1

I have been searching for an answer for this for a while now and I can't seem to get a straight answer anywhere. I'm new to iOS development and am looking to get started porting my android app over to make my first iOS app. I'm not a big apple user, so I'm just running xcode in a VM and trying to build and test on my old ipod touch 3rd generation running iOS 5.1.1. I understand how out of date this is, but I want to develop and test on this device for 2 reasons:
I dont want to buy a $750 new apple product just to test my very simple app
When I publish my app, I want to reach the most users possible
So my question is this:
In xcode 8, is it possible to develop applications with a deployment target of iOS 5.1.1?
If so, will it build for all versions of iOS?
When I attach my ipod to xcode, it says device is not supported, can I fix this by installing some 5.1.1 developer package or sdk to allow support? Or would I have to build, then manually install and test each iteration?
If all of these are possible, and I build an app targeted to 5.1.1, can I publish it to the app store? If I open the app store on my 5.1.1 ipod, there are still apps in the store with recent update dates, so people must still be releasing updates to apps on iOS 5.1.1 right? Or am I missing something and an app that runs on iOS 5.1.1 is entirely banned by Apple.
A lot of questions, but If possible I really want to do this. Even getting a fully known, confirmed answer for ANY of these questions would be greatly appreciated.
Thanks
I dont want to buy a $750 new apple product just to test my very
simple app
Xcode has a simulator, you don't need a device to test your app.
When I publish my app, I want to reach the most users possible
As of July 31th 2017, https://developer.apple.com/support/app-store/
86% of devices are using iOS 10.
11% of devices are using iOS 9.
3% of devices are using earlier. (probably iOS 8)
It makes sense that you have this concern coming from Android, but iOS is quite different. Devices are designed to be uniform and apple encourages (almost forces) people to update them. (You won't stop receiving a notification to update your device)
It would actually be bad to focus on developing for that specific device you have, specially because a lot of the APIs will be deprecated, plus the screen ratio of that specific device is not so common.
In xcode 8, is it possible to develop applications with a deployment
target of iOS 5.1.1?
No*
If so, will it build for all versions of iOS?
Kind of, it will run but it won't probably be what you expect until you FIX it for that specific iOS version. (many things break between iOS updates so developers are sometimes forced to branch code)
When I attach my ipod to xcode, it says device is not supported, can I
fix this by installing some 5.1.1 developer package or sdk to allow
support? Or would I have to build, then manually install and test each
iteration?
Maybe, but probably not. You can actually copy files from older xcodes to enable testing in newer ones. You can search about how to do this by googling for "Using iOS 7 in Xcode 8". However I doubt going as far back as iOS 5 will be possible. The Xcode needed for running on iOS 5 is not even supported macOS Sierra (The newest OS)
If all of these are possible, and I build an app targeted to 5.1.1,
can I publish it to the app store? If I open the app store on my 5.1.1
ipod, there are still apps in the store with recent update dates, so
people must still be releasing updates to apps on iOS 5.1.1 right? Or
am I missing something and an app that runs on iOS 5.1.1 is entirely
banned by Apple.
Theoretically yes, iOS Apps can still "support" old iOS version, the reason why developers drop support for older os is because it gets increasingly hard to debug them as well as they just don't have support for new features and APIs that come with newer iOS.
My suggestion if you are really obsessed with building for iOS 5.1.1 is to ensure it's a 64 bit app:
https://developer.apple.com/library/content/documentation/General/Conceptual/CocoaTouch64BitGuide/ConvertingYourAppto64-Bit/ConvertingYourAppto64-Bit.html
And Download an old version of Xcode: (Maybe Xcode 7 or 6?)
https://developer.apple.com/download/more/
But I think you still have to Build with xcode 8 since you need to build against their latest SDK. The old Xcode is just to develop for it and facilitate debugging.

How come my non-ATS supporting app is working on iOS9?

I'm running the beta version of iOS 9 on my phone.
I downloaded my app from the App Store and it works.
When I install it from Xcode it doesn't work (since it is not supporting ATS).
How can that be?
When introducing features in new iOS versions Apple often checks for the link time or SDK version of the app.
Applying new rules only to apps that are linked to iOS SDK 9 for example, they can enforce the rule on new builds, where the developer should be aware of the rule. Old apps are left alone and keep working as before.
The version from the App Store is likely linked against an earlier SDK version. Apple determines behavior for some things like UI and, AFAIK, ATS, by looking at the linked SDK version.
Apple notices that App Store version is linked against an SDK version that doesn't know about ATS and enables legacy support. But your version compiled in Xcode is linked against a SDK version that does know about ATS and Apple therefor enforces the rules.

Will I be able to submit iOS PhoneGap Build apps after February 1?

From February 1, apple is changing the rules for submitting apps to the app store. All apps will have to be build using iOS 7 SDK and will have to be compiled with xcode.
I am afraid that this might mean that all my projects built with Adobe Phonegap Build will be useless (ones that use Phonegap build plugins that are not locally available).
I am aware of THIS question.
However that question only talks about PhoneGap (cordova), and not PhoneGap Build specifically.
With Phonegap (cordova) I can build apps locally and an xcode project gets generated, so that will not prevent people from submitting apps as in the end you will still build it with xcode.
However, with Adobe PhoneGap build, the app binary is compiled on adobe's servers and not on my installation of xcode, and that service does not generate an xcode project.
So my question is, will these PhoneGap Build generated apps be accepted by apple or not? I am afraid that I am right by thinking that they will not be accepted, but just want to make sure, so if you know more about this please let me know.
I'm pretty sure that the statement from Apple only means that apps built with Xcode version < 5 and not optimised for iOS7 are not accepted any longer - not that you cannot submit apps built with different frameworks (if they are compliant to their new UI guidelines, of course).
I would not worry about this. Apple basically said they will no longer allow apps that are built using the iOS 6 SDK / Xcode 4. I don't expect other changes in their policies and didn't hear a big outcry on Twitter either :)

Lowest permitted base SDK for App Store submissions

I'd like to know if Apple states the lowest permissible base SDK for submission to the iOS App Store. There was a statement somewhere around 2010 that said you need to use at least SDK 4, but i cannot find this any longer.
Now, before you jump me, I always build against the latest base SDK. The reason i ask this question is because i want facts to counter some customer requests.
Apple seems to have never explicitly required any Base SDK above iOS 3.0 as far, as far I can find, today, either in their app submission guidelines or any official developer email. Thus, there likely is no such link as you require. However there are many indirect hints.
As of 2013-May-01, Apple indirectly requires a Base SDK of 6.0 for submitting iPhone apps by requiring 4" display support and no longer approving any apps where 4" support was added using any Base SDK lower than 6.0 (that latter stated in their enrolled developer forums, login required). This requirement may or may not apply to iPad-only apps, where Apple might still allow submission using a Base SDK of 5.1.
There is a statement (in their enrolled developer forums, login required) from an Apple employee that currently a Base SDK of 7.0 or higher is not required for app submission, but with no date given as to when this may or may not change.
Note that if a developer uses an SDK lower than 7.0 to build an app, they still need to test the app on a iOS 7.x device or risk rejection by Apple if the app fails to run properly on such a device.
The Deployment Target of an app can get set to a much lower OS version. But an iOS Base SDK of 6.0 lacks armv6 support, and thus doesn't allow XCode to build an app with a Deployment Target lower than 4.3 where armv6 support is required.
You should always use the latest SDK as Base SDK whenever possible. If you set the deployment target to a lower SDK, your app will run on device with previous SDK version.
Starting from XCode 4.5 (and also in XCode 5) iOS 4.3 is the lowest available SDK for deployment target. You have no way to submit new App on the App Store running on SDK lower than 4.3.
To answer the initial question, Apple seem to still accept application compiled with SDK 6.0 ( at least a few weeks ago).
Apple has recently announced that as of March 27, 2019, you will have to have a base SDK of 12.1:
Upcoming App Store Submission Requirements
March 20, 2019
iOS 12 is now running on more than 80% of devices worldwide. Make sure your app delivers a great user experience by seamlessly integrating with the latest advances in iOS. Starting March 27, 2019, all new apps and app updates for iPhone or iPad, including universal apps, must be built with the iOS 12.1 SDK or later and support iPhone XS Max or the 12.9-inch iPad Pro (3rd generation). Screenshots for these devices will also be required. All new apps and app updates for Apple Watch will need to be built with the watchOS 5.1 SDK or later and support Apple Watch Series 4.
Understanding Changes in Memory Accounting
iOS 12 and tvOS 12 require apps to use memory far more efficiently than before. If you have difficulty reducing your app’s memory requirements, contact us to request an entitlement for your app to use iOS 11-style memory accounting.

Will Apple reject our app if I support iOS 3.x?

I'm aware that if I build our app on Xcode 4.5, We won't be able to submit our app to the App Store not to mention we won't even be able to run the thing on the device with iOS3.x.
Not what I want to clarify is that, if we decided to still support iOS3.x do we just use Xcode 4.3 or any Xcode lower than 4.5 and voila I can submit it to the app store and Apple won't give a care and approve the app if it supports iOS3.x or not since it was built using a lower version of Xcode?
As long as you provided an iPhone 5 screenshot, you should be able to submit app that backward supports iOS 3.x .
But why do you want to support iOS 3.x ? Not many devices are using this iOS version .

Resources