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..
Related
I have a 2 years old app on App Store that has 6.0 deployment target. But it is not running on iOS 11. Its saying "The developer of this app needs to update it to work with iOS 11".
Now I am using xCode 9 and it gives me error in story board that "Compiling IB documents not supported for earlier than iOS 7 is no longer supported". It got fixed by setting "Builds for" option to iOS 7.
Does it means I cannot release this app for iOS 6.0? How can I make a new release that supports from iOS 6.0 to latest iOS 11?
Regards
You should bump the Base SDK to iOS11. You likely can leave the Deployment Target at iOS6.
For Storyboards, click on the Storyboard. Show the Utilities Pane (on the right), and click the first tab (File Inspector). There you can set the "Builds for" setting to higher than iOS6, or whatever you have it set to.
Also, make sure to address any warnings that Xcode tells you about regarding code or project settings, that might pertain to this issue.
The only thing you must do is add 64-bit architecture (arm64) to the list of valid architectures in target settings. You are not required to build app with Xcode 9, it's still allowed to use Xcode 6 or later.
What exactly does iOS 7 use to determine whether the application should be displayed with the traditional iOS 6 style UI (aka iOS6 compatibility mode), or the newer iOS 7 UI?
If I build our app in Xcode 5, with base SDK set to 7 I get the iOS 7 UI as expected
If I build our app in Xcode 5, with base SDK set to 6 I still get the iOS 7 UI (unexpected, happens on real device and simulator)
If I build in Xcode 4.x, I get the older UI as expected
In all cases, the deployment target is set to 5.
Since our app has fairly custom UI we're not ready to move to the new look of iOS 7 yet. However we do need to make some backend changes to support iOS 7 which we need to release now. Can we still submit apps built with Xcode 4.x and expect them to be accepted?
For the time being, you are able to. Apple will make an announcement when they stop accepting apps built with Xcode 4.x. My company is currently submitting apps with Xcode 4.6 since we do not have a new enough operating system for 5. I suspect it will be at least a few months until they stop.
Running against 6.1 Base SDK should do it.
However, as I discovered yesterday. Anything less than 7.0 Base SDK isn't supported by Xcode 5 (officially) and so it is undefined behaviour.
My app suddenly switched from iOS6 UI to iOS7 UI with no code changes.
In the end I restarted my mac and phone, deleted the app, deleted derived data and reinstalled cocoapods and it was working on iOS6 UI again.
Make sure that you set the Base SDK to iOS 6 in both the Project build settings & the target build settings - that should do the trick. Even though the target settings are supposed to override the project, I found that when just the target was set to 6 - it compiled with 7.
Regarding XCode 5, it's true that it doesn't officially ship with the iOS 6 SDK. However, you can extract it from XCode 4.6 and use it in 5.
You'll find the SDK in the XCode app under:
Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
Simply copy it from an existing installation of XCode 4.6 or from its .dmg (which can still be downloaded from Apple's website) to the corresponding folder in XCode 5, restart and you should now be able to select it as the Base SDK. Note that you'll have to do this after every update of XCode so you might find it easier to use a symbolic link rather than copying.
We've successfully submitted apps built this way to the App Store although as has been said before me, it would be a good idea to transition to iOS 7 ASAP before Apple makes it compulsory.
I am new to iOS. With iOS 7 release I am struggling to find how to target my app for previous versions but building from new iOS 7.
I do not know if at all this is possible. but iOS has changed app UI totally, but can not do all change now. So I have been told to build it on new version but target should be for old, so that no UI changes to be done.
Something like building from Xcode 5 but iOS should be 6.1. I do have both Xcode running on my Mac.
If I open both it shows: Xcode 5 - iOS 7, Xcode 4.6 - iOS 6.1. How can I use Xcode 5 to target iOS 6.1?
As far as I know you can't deploy only for iOS6.x using xcode 5, but you can deploy for iOS7 and iOS6, setting the deployment target ad Raptor said.
If you want to deploy only for iOS6 you can download the old xcode 4.6.3 from apple site and make the procedure from there.
I guess your question is How to build iOS app with iOS6.1 SDK in XCode5. Am i right?
You must install iOS6.1 SDK (iphoneos6.1 not simulator iOS6.1) to your XCode first. This question Is it possible to install iOS6 SDK on Xcode 5? could help you to install iOS6.1 SDK.
Than you could configure your project using iOS6.1 SDK to build your app like below:
If you are looking to test your app on lower iOS simulators.
go to Xcode - > Preferences - > Downloads
Over here download the desired simulator.
Once you have downloaded and installed it you can test your application on lower iOS versions.
My app has historically supported iOS 5 & up. We just recently decided to drop support for iOS 5. I removed support from the app by doing the following:
Clicking on the project's target
Searching for iOS Deployment Target in Build Settings
Setting that value to iOS 6.0
However, when I look at the list of possible simulators from the scheme dropdown, I'm still able to choose iOS 5.0 and iOS 5.1.
I'm worried this means I may have not actually set the minimum supported version of my app to 6.0. My app will crash on anything pre-iOS 6, since we've begun to use Auto Layout for some new views. Any new projects only show the latest simulators as scheme targets.
What am I missing? How do I get this dropdown to stop showing me the iOS 5.0 and 5.1 simulator options?
You are not missing anything. Setting the Deployment Target will determine the minimum version required for installation of the app.
I don't know of any way to hide an irrelevant target from the scheme dropdown.
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.