We have a couple test iPhones in the office. The one I use for development hasn't been updated in the last couple months, the one used by our QA team has been recently updated, however. I'm also still using Xcode version 6.3, and my compilations run fine in the simulator or the dev iPhone.
However, now that the QA iPhone has been updated, my Xcode refuses to build for it, claiming that the verison of iOS on it (8.4) is not supported. This is a common occurrence and I've just been dealing with it. While I'm waiting for my Xcode to finish updating (which is taking its sweet time), I'm realizing that this limitation is arbitrary (or at least it seems that way). I've already compiled my app for the QA phone earlier this month, that version obviously wasn't built for 8.4, yet it runs fine on it. Likewise, other apps on the phone don't need to be redownloaded after each update, nor does the app store require recompilation for each iOS update. Clearly the newer version of iOS can support the app built by older version of Xcode, then why does Xcode refuse to deploy to a device that has been updated? Is there a checkbox I'm missing somewhere in build settings that says "deploy even if you don't recognize the iOS version"?
I can build and debug on an iOS 9 iPhone with Xcode 6.4
Also you need to understand (but I'm not an expert either) that when there's an OS update, to really support debugging Xcode needs to be familiar with that OS' debugging symbols (which may change at every software update). This is why, when you plug in an older version of iOS (or any version it is encountering for the first time) Xcode will take a few seconds to load and process the device's symbols. That's my understanding of it.
Related
I am wondering how to handle running two versions of xcode on a mac, or if it is even possible.
I currently have a number of production apps that I service with the release xcode7. I must have this available for uploading app versions to the app store.
I also have a ipod touch device I have the ios9.1 beta running, and want to test and write code for the new os.
However, xcode7 says I can't test ios 9.1 beta, that I have to install xcode beta. Also, I've read that you can't push apps to the app store with the beta. So how can you maintain current apps, as well as, build new functionality?
Maybe I have missed something? some setting that allows me to toggle between these xcodes? or will the mac allow me to have two different versions of XCode installed? I assumed it would just override the other.
I don't want to buy another mac, or to partition the one I have, or keep downloading and installing different versions on all the devices, if I don't have to.
Any information would be helpful, how does everyone else handle this?
You simply need to rename them in /Applications; for example:
Xcode 6.4: /Applications/Xcode6.app
Xcode 7.0: /Applications/Xcode7.app
Xcode 7.1 beta: /Application/Xcode-beta.app (the default anyway).
They will co-exist perfectly happily, however if you do command line builds, you'll want to use xcode-select to select the version you want to use when using xcodebuild or clang, etc.
The betas generally come with the name Xcode-beta.app (this is true for the iOS 9.1 beta), so you can just download it and copy it to the /Applications folder as usual.
In the rare cases where that's not true, you can just rename Xcode.
You can install both versions. They will happily co-exist in your /Applications folder. One will be called Xcode, the other will be called Xcode-Beta
I had Xcode v6.0 - v6.1 . I'm not sure which one. What I can remember is, it does not support iOS 8.2
The problem is that my team and I release a game app for beta testing ( test flight pre-release , on iTunes connect ) . Every user that got iOS 8.2 crashes at the very beginning when they open up this game app.
After, I upgrade my Xcode to v6.2 which support iOS 8.2. It solve the problem. But still my team and I are not 100% sure if this will solve the problem long term.
My game app framework:
- Cocos2d-x v2.2.6
My question is that:
1.) Is Xcode version the reason it crashes at the first place?
2.) If so, do I need to update my app and my Xcode every time Apple releases new version of iOS?
Thankyou. :)
You need to investigate exactly what is happening, for example by connecting a device running 8.2 to a development machine and debugging. It is most likely that you have some bug in your code that can strike at any time due to random differences of the environment; for example uninitialised memory will have random values that can be different depending on the OS and will sometimes crash and sometimes not. It is quite possible to have a bug that has nothing to do with OS or Xcode version at all that behaves like this. And that bug can reappear at any time.
Correctly written code will work on all future OS versions without problems. With emphasis on "correctly written".
I had trouble with installing -deployed adhoc- development app before upgrading to iOS 7.1 and XCode 5.1
XCode 5.0 wasn't recognizing iPhones with iOS 7.1.
We upgraded and everything seems fine until we deployed as adhoc distribution.
I followed solution at Enterprise app deployment doesnt work on ios 7.1 and it greatly worked for installing the app in iphones with ios 7.1
But, now iphones with ios 7.0x can't install the app.
Results that some of our boss' bosses hadn't upgraded and don't want to, and desires backwards compatibility.
The app starts downloading but stops in the middle, the icon is completely grayed out and the app doesn't open.
Looking for alternatives, we are trying to acquire another macbook with previous system but it had been very hard to obtain our current resources.
We started implementing in the html page a script for recognizing the device, using user-agent variable, we plan to use this script to choose different plist files for iOS version 7.1 or previous. We expect it works as soon as we obtain the ipa in the newer macbook, as soon as we get it...
I wish for an easier solution that allows compatibility with newer versions and let us avoid project 'branch'ification.
Thanks a lot!
I have a legacy application distributed Ad-Hoc that runs on older iPod Touches (running iOS 3.1.3) with a custom connection to rather expensive 3rd party hardware. Unfortunately my annual renewal of the provisioning profile (which also involved rebuilding with the most recent version of XCode that will compile armv6 (4.5) and the corresponding SDK) seems to have broken the app.
I know that you can set the target platform earlier (and I've done that). But my problem seems to be specifically related to the SDK. The hardware these devices interface with is several hundred miles from me so testing is very difficult.
My first set of problems were related to deprecation of the TouchID APIs, but I've worked around that problem. Unforatunately, I still have crashes and they are proving very elusive to debug.
The simplest solution for me would be to just rebuild against the older SDK (4.x). Is this possible? To make matters worse my Mac is running 10.8.4--so there's a limit to how far back I can get XCode working on it.
I was able to get this to work by renaming my current version of XCode to something else, downloading and installing XCode 4.4 something from the developer site. Then I downloaded an earlier version yet and used the techniques described in this post:
Adding Older iOS SDKs to Xcode 4.1 in Lion
To extract the older SDKs. I was then able to copy these SDKs into XCode 4.4 (as described in the post). Now I was able to build using older versions of the SDK.
My apologies if this question has been asked before. I can see there are a lot of questions that appear similar, however it seems they are mainly asking to do the reverse of what I am asking here.
I took a break from developing for a few months, because I had sold my macBook, and in the meantime upgraded my iPhone 4 to IOS 5.1 (over wifi)
Before selling the macbook, I made a carbon copy of my drive and made sure it could be booted and used to maintain things (on a borrowed mac).
Anyway I am now back on line with a second hand macbook classic, which came with a fresh Lion install, and whilst the workstation backup drive I made boots up fine, I discovered to my dismay that Xcode 4.2 no longer lets me build to my iPhone, so I had to go ahead and install XCode 4.3.3 Under Lion. 6GB of update downloads and installs later, all is well, however I am now left with a puzzling question.
If I make a new app, it appears to be an IOS 5.1 app, and the only simulator available is IOS 5.1 iPhone and IOS 5.1 iPad. and of course my iPhone device.
so... if I go ahead and submit this app to the app store, (ensuring I don't use any 5.1 specific features), does this mean users with versions of IOS lower than 5.x can still download and deploy the app? I can't test it as there are no simulators, and I only have access to 5.1 installed devices. I tried downloading additional simulators, but the default new project seems to preclude them from the menu system.
What is the best way to make one (1) app that everybody (including 5.x users) can download?
I would have stayed with Xcode 4.2 but this would mean having to trash my iPhone to do device testing.
Alternatively is there some way of going back to my original workstation (4.2) and configure it to allow me to do device testing on my 5.1 device?
In Xcode, select the project file in the project navigator, and then the target. In the first section of the "Summary" tab you have "iOS Application Target". There you can choose earlier iOS versions.
That's all.
In xcode go to preferences command + "," navigate to downloads. choose components tab, and you will find the ios simulators, download the one you wish from there