I want to know whether iPhone Simulator version (i.e. iPhone 5.0 Simulator, iPhone 6.0 Simulator, etc) and Base SDK are related to each other or not?
So, if I develop an App with Base SDK 6.0 and if I test it on iPhone 5 Simulator - does it mean that I am testing it on device with iOS 5.0?
Please let me know.
Base SDK
The Base SDK is the version of SDK that will be used when compiling your application – the compiler will use the headers and libraries of this specific SDK.
iPhone OS Deployment Target
To specify which OS version is the minimum that your application will support, you set the deployment target. Your application will then run on this minimum OS as well as all later versions.*
For more info check this:-
Link
The base SDK is an indicator of what APIs your compiler will allow you to use. Deployment Target determins the minimum OS version this app will be allowed to run on. If they differ you need to make sure in code that you only use functions/classes/methods/symbols that already existed on the older OS. or else the app will crash with exceptions like "unrecognized selector"
Your question is imprecise: there is no "iPhone 5 Simulator". There is a Simulator app that can behave like a 4" iPhone 5 on a variety of OS version levels. The Simulator set to iOS 5.x will behave like a device with this OS version would.
Nope. With a base SDK of 6.0 means that you are using a simulator with iOS6.0 like for example if you were to deploy an application with base SDK 6.0 on your mobile device with iOS 5.1 and below, you will not be able to run it
Related
I am trying to distribute an iPhone App to the App Store for the first time. Currently, I am following this guide: Submitting iPhone Apps To The Apple App Store – A Step by Step Guide. Currently, I am on the step where I have to set the Base SDK field value. See, the screenshot.
As you can see, iOS 5.1 is the only choice available there. Now, if I set it as Latest iOS(iOS 5.1) - the default value - will the distributed app will be able to run on older OS's, for example iOS 3 or iOS 4? If not, then what will I do to make it run on older OS. Or, is there anything I misunderstood about BaseSDK?
No worry it will function in the older os you need to keep the deployment target minimum SDK which you can find in the picture if you updated the xcode with simulators of IOS 4 and 5 you can get these options
Update
Basically it means that you're going to be able to use all the API that is public in 5.1 SDK. This has nothing to do with "Which phone your app can run on".
iOS deployment target on the other hand, is asking you which devices can this app run. This is quite a dangerous question, since you can then say from iOS 3.0 to 5.1 for example. This means that your app can be installed in any iPhones running iOS 3.0 to 5.1, no matter what the phone is. That means the original iPhone and iPhone 3G can run your app if they have at least iOS 3.0 installed. You should test your app carefully if you decide to do this. Apple does not provide any way to test on older OS. You'd have to devise that strategy yourself.
I can change my deployment target from 3.0 to 4.3 and test that my application is compatible with all these versions but how can I test if my application is compatible with all versions including iOS 5.0? Any idea regarding the same? Also note that I have iPhone 3GS with iOS 4.0.2 and need to test in iOS 5.0. Hope to get a good help. Thanks.
Eventually, you'll need to get a device that has iOS 5 installed. Without that, you can only test this in the iOS 5 simulator.
Also note that changing the deployment target is not enough to test if your app is compatible with that OS version. Basically, this just means that you promise that it'll run from this version upwards, but it doesn't enforce that you don't use any APIs that might not be available there.
I you wanna do it properly, you will have to get every device there is, with every version you want to support ... that is, imho, overkill. I just test my Apps on the 4.3 and 5.0 Simulator in XCode and on my 5.0 iPhone 4. And have not had any problems with that 'til now.
BTW you should update your 3GS to 5.0.1.
To test in the simulator with iOS5, you can set the OS version with the Version submenu of the simulator's Hardware menu.
Is it possible to test my app in the iPhone Simulator w/ the 3.0 SDK. The only options that I currently have available are 3.2 (iPad) & 4.0 (iphone). I know I could buy a iPod Touch w/ 3.0 off eBay or something but I'd really like to avoid spending money if it's possible to get this working in the simulator.
http://developer.apple.com/iphone/library/documentation/xcode/conceptual/iphone_development/125-Using_iPhone_Simulator/iphone_simulator_application.html
Important: iOS 4.0 uses the same Objective-C runtime as Mac OS X v10.6. iOS 3.2 and earlier use the Mac OS X v10.5 Objective-C runtime. Because of this change, binaries generated with an iPhone SDK distribution earlier than 4.0 do not run in the simulator that’s part of the iPhone SDK 4.0 and later distributions. After moving from iPhone SDK 3.2 and earlier distributions to a 4.0 or later distribution, you must rebuild your iPhone Simulator binaries to run them in the simulator. If you use licensed static libraries in your application, you must obtain versions of them generated with an iPhone SDK 4.0 or later distribution. For more information about the Objective-C runtime, see Objective-C Runtime Reference.
One other option is to maintain an older copy of the SDK/Xcode on another Mac, and run the old SDK and Simulator there for regression testing. But testing on a older device is the only way to test that an app can actually perform reasonably on such older devices. Neither a new device nor the Simulator can do that.
I have been developing an iPhone app and now I am trying to build the binary.
I have noticed the base SDK is set to iPhone 4.0. Does this mean only iPhone 4.0 users can run the app?
I can change it to the lowest iPhone device 3.2, but how can I change the target so that I can test on the simulator in OS 3.2?
The Base SDK should be set to the latest iOS version you want to support. To also support older phones, set the “Deployment Target” build setting to the lowest iPhone OS version you want to support. Currently, I don’t believe you can set it to anything less than 3.0 and still get approved by Apple.
That's OS version, not hardware. You can adjust the deployment target and the base SDK to set up handling the differences between 3.x and 4.x APIs. A tutorial on how to do it is here:
http://iosdevelopertips.com/xcode/base-sdk-and-iphone-os-deployment-target-developing-apps-with-the-4-x-sdk-deploying-to-3-x-devices.html
When I try to upload the binary to iTunesConnect it says: "An application targeting the iPhone device family may not require a iPhone OS Deployment Target of 3.2, which is an iPad-only OS".
I am using iPhone SDK 4.0 but have the settings of the distribution target set to use iPhone Plattform 3.2
Any suggestions?
Yes. Stop attempting to upload apps created by a beta SDK, which is expressly forbidden.
When you have installed the correct release of the SDK, set the iPhone distribution target to one that is available on the iPhone - like 3.1.3. If you need 3.2 support for iPad, then you also need to set the base SDK to 3.2.