I recently upgraded to Xcode 4.5.1 to compile an app under development for the new iPad. That worked fine, but when I went back to run it on my old iPad under iOS 5.1 it wouldn't compile. I traced this back to the "Base SDK" setting in my project. Unfortunately, for some reason it's stuck on iOS 6.0, and iOS 5.0 SDK is not in the list:
The puzzling thing is that a the iOS 5.0 and 5.1 SDKs are available if I start a whole new project, but are just not an option in the list for this particular project. The other puzzling thing is that it also still runs on the iOS 5.0 simulator.
How to fix this without rebuilding the project from scratch?
Actually, under Xcode 4.5.x, the only allowed Base SDK is 6.0. You need to set your project's (and target's) Deployment Target to iOS 4.3 or later depending on what you wish to support in your app.
The Bask SDK defines what APIs you can use. The Deployment Target defines how far back you wish to support.
Related
As i need my application to run on both iOS 6 and iOS 7, i have set my "iOS deployment target" under "Project" as well as "Targets" to iOS 6.0. However, after doing this, when i create an ipa file and install it on my iPad (that runs on iOS 7), i see everything converted to the look of iOS 6 - the searchbar, the keyboard etc etc.. Why is this happening??
I thought that on iOS 7, all my UIComponents will look as intended in iOS 7 and same thing will happen in case of iOS 6, when i run it on a device that is running on iOS 6! why is everything messing up???
Likely it depends on the Base SDK that you selected.
If you are using Xcode 5: select your project on the left panel, then click tab Build Settings, check that your Base SDK is "Latest iOS (iOS 7)".
You should always use the latest sdk as Base SDK, it represents the SDK used to build your app against.
If you want to support old iOS, you should just change the Deployment Target
Check it for both your target and project, since target overrides project settings
The problem was: I still had iOS 6.1 sdk on my system even when i upgraded to xcode 5. deleting the older version of sdk and cleaning and building my target solved my problem..
I have a trouble with XCode 5.
Yesterday everything was fine. Today, when I try to run my app on iPhone 5 or iPad Mini I get the following error:
iOS deployment target '7.0' for architecture 'armv7s' and variant 'normal' is greater than the maximum value '6.1.99' for the iOS 6.1 SDK.
Base SDK and Deployment Target are both iOS 7 (Latest version). I have iOS7 on both devices. When I try to launch the app on simulators with iOS7 everything is fine.
I've tried to clean the project, to restart XCode and MAC, looked in project.pbxproj - still can't understand what's up.
So, any help would be very great!
Base SDK:
Deployment target:
So, I've solved the problem by deleting iOS 6.1 SDK from XCode completely - I've installed it manually a couple of weeks before. After that the app built with no problems.
You have configured your project to run on iOS 7 but you are building against iOS 6.1 SDK.
You should build against the latest SDK but set the deployment for the lowest version that you would like to support (You have done the opposite here).
In your project build settings make sure you have selected ios 7 as base sdk.
I've installed Xcode 4.6 beta (which includes iOS 6.1 beta SDK) but do not wish to install iOS 6.1 on my (development) iPhone quite yet. What I'd rather do is continue developing with iOS 6.0.2 (or use the iPhone simulator instead).
Hence I've tried to download and install iOS 6.0.2 into XCode 4.6: indeed in its Organizer window both iOS 6.1 (by default) and iOS 6.0.2 (by this action) now do show up. However when I try to change the base SDK for my project (under its Build Settings) Xcode still seems unaware of the second choice: The only iOS-related choices available are iOS 6.1 and Latest iOS (i.e. again iOS 6.1).
How do I add (the installed) iOS 6.0.2 SDK to that list so I can select it as base SDK for my project?
P.S. My current understanding that this is different from that other (frequent) question.
P.S.S. Presumably nothing of this is specific to Xcode 4.6 as opposed earlier versions. Therefore I feel authorized to mention it even outside the confidentiality agreement, for its existence as such is clearly publicly known.
Try to set target to lower version !
Does anyone know how to configure XCode so that the Destination drop down under Manage Schemes
encapsulats all previous simulators iOS 3.x and iOS 4.x? Currently the Destination drop down only
lists iOS 4.3 and iOS 5.0 devices. The only way, I am able to currently access previous simulators is by running
previous versions of XCode. I would like to run all simulators from XCode 4.2 without the need to revert.
I've already tried to change the deployment target. This does not work.
Thanks so much
For 4.3 set iOS Deployment Target to 4.3 (or earlier). Get the simulator from Xcode, Preferences, Downloads, Components.
According to #rckoenes: You can't reactivate the iOS 3.x Simulator, you will need to install an older version of Xcode (one with the iOS 3.x SDK) along side Xcode 4.x (with the iOS 4.x SDK), see answer here.
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.)