iOS beta releases, separate from current stable development? - iphone

I remember reading something once, but could not find it now while searching, if there are things I need to worry about when installing an iOS beta.
If I install the iOS 6 beta, do I need to worry about it overwriting my current Xcode 4.2 (iOS 5.1) development? Or does it install it in a separate location automatically? Or is that all I need to do, in that I need to put it in a separate location when installing instead of the default location?
If I put a device on iOS 6 beta, it cannot be downgraded back to 5.1 right?
Are those the only things I need to worry about? Thanks!

As Apple states in the Xcode 4.5 Developer Preview Release Notes[1]: Xcode 4.5 comes as a single app bundle that can simply be dragged to the Applications folder. You can start it from there and it will not install or overwrite any existing developer tools like previous Xcode versions.
Apple states that
Devices updated to iOS 6 beta can not be restored to earlier versions of iOS. Registered development devices will be able to upgrade to future beta releases and the final iOS 6 software.
But you may be able to downgrade your iOS device as long as version 5.1 is the official version served by apple by putting your device in the DFU mode. When Apple pushes iOS 6 for everyone you may be able to downgrade your device with TinyUmbrella[2]. This worked with previous versions but there is no guarantee it will work this time.
[1] http://adcdownload.apple.com//Developer_Tools/xcode_4.5_developer_preview/xcode_45dp_rn.pdf (an iOS Developer account may be needed to view this file)
[2] http://thefirmwareumbrella.blogspot.com/

I know that an iOS device running beta cannot be downgraded per the iOS Dev Center:
Devices updated to iOS 6 beta can not be restored to earlier versions of iOS. Registered development devices will be able to upgrade to future beta releases and the final iOS 6 software.
And yes, I believe you can install multiple versions of Xcode at a time, including betas. The installer should ask you where to put it.
There's nothing else you need to worry about, but if you put the beta iOS software on your device, make sure you use a device dedicated to development or back up everything.

This is creeping on NDA territory, but in general:
Beta versions of Xcode cannot be used to submit apps to the App Store.
Sometimes you can install two copies of dev tools on the same machine. In the past it hasn't always worked properly; now that all of Xcode is contained in the app bundle, maybe it will work more smoothly.
The safest thing to do is get an external hard disk, install Mac OS X on it, and then boot from it and install the beta tools on it. Then you can safely play around without messing up the release version.

Related

iPhone app submission software requirements

I wanted to understand the things involved in iPhone app submission in terms of software requirements (not the steps to submit it on Apple iTunes Connect)
When we download the IOS SDK, is XCode included in that ? If yes, what are the latest versions and approx size of them?
When we develop the app and are ready to submit (say as of today), is it necassary to have a particluar (or rather the latest) version of IOS SDK or XCode installed on our system ?
Are there any specific OS X requirements (I mean if Snow Leopard and above is fine) ?
Everything is detailed on the iOS Dev Center (you may need to log in to have the details):
When you download Xcode (or more precisely the "Developer Tools" package), it includes Xcode and a lot of other tools (Instruments, gcc, gdb, llvm, lldb, the iOS Simulator, ...) and also the latest version of the MacOS and iOS SDKs too.
The version and size are mentionned on the download page too (version of Xcode, of the iOS SDK, of the Mac SDK,... everything). Right now (oct. '11) it is Xcode 4.2, iOS 5.0 SDK and OSX 10.7 SDK. Everything come in one package (1.65Go for the latest version as of today) except the documentation, which is downloaded automatically by Xcode itself (unless disabled) in the background.
For the requirements, it is also described in the iOS Dev Center: Xcode4 is available for both Snow Leopard (on the iOS Dev Center) and Lion (via the Mac AppStore) right now.
When you submit your app, you normally should always submit it using the latest SDK (1). [EDIT after #progrmr comment] except of course for beta versions of the SDK. Alsways submit with the latest "release"/public SDK version]
Note that using the latest SDK does not mean that you need to stop supporting and testing for previous iOS versions. You can use the iOS 5.0 SDK and publish an app that is running on iOS4.x for example (and of course it is better if it still works on iOS5.x too); ascendant compatibility is generally guaranteed, unless specified for specific methods (see the "SDK Compatibility Programming Guide" in the Apple Doc for more info).
(1) It is generally accepted if you submit with the SDK version just before the latest if it is not too old, Apple let you some time to migrate, but this is generally just a transition phase. It is advised and a good practice to migrate to the latest SDK when it is available -- or not too late after that.
XCode 4.2 is about 1.8gb, and that doesn't include documentation - when you first load XCode it tries to download something like 2-2.5gb of docs in the background. You have to both cancel the download and the auto update check to avoid that (but auto updating docs is cool).
I don't recall any requirement to use the latest and greatest, you can still download XCode 3 with iOS SDK 4.3 from the archives. But I can't say for sure, I always run the latest (I find upgrading to new XCode releases is generally a good idea).
XCode is available for Snow Leopard once you buy the $99/yr iOS developer subscription, the mac app store has it but only for Lion. The advantage of the MAS version is you can play with the SDK and making basic apps for free, just not run code on your iOS device.

Is there a way to install older iOS SDKs in Xcode?

I'd like to ensure some backward compatibility for my apps by compiling them using the older SDKs to test for newer classes and methods. However, Xcode is only available with SDKs for the latest iOS versions.
I've downloaded and installed the iOS 3.1.3 SDK (using the method described here) and that works fine. My code is full (not so full :-) ) of __IPHONE_OS_VERSION_MAX_ALLOWED, __IPHONE_OS_VERSION_MIN_REQUIRED and such respondsToSelector.
This works right now for the iOS 3.1.3 SDK, but what if in the future I wanted to repeat this process with the 4.0 SDK? Is there a general process for installing older SDK versions in the latest Xcode?
You can't install old 3.1 SDKs on Xcode 4. You can set the Deployment target lower to allow testing on devices running older OS versions than your current SDK installation. The only current way to completely ensure backward compatibility, while running more recent versions of Xcode, is to keep a device that runs iOS 3.x, and test on that device. (...because it is claimed that the old Simulators/tools sometimes actually allows APIs that won't run on an actual device with an OS of the same version).
Other methods include installing the different versions of iOS developer tools in a separate Developer_XYZ directories, and or keeping around a bootable HD with the older iOS developer tool installation (say Snow Leopard with Xcode 3.x, since Lion might only support running Xcode 4.x).
For whatever reason (I had to do it to debug an Apple bug), if you still need to install an older SDK to your existing Xcode, follow these steps :
Install the older Xcode package
Copy the older Xcode SDK to the new Xcode
Example
(/old/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk to /new/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs)
Restart your 'new' Xcode
You will see the old SDK in the build setting option (base sdk)

iOS 4.3.1 on the phone - does it work with XCode 3.x ? or only 4.0.1?

I upgraded my iPhone to the latest OS (4.3.1) yesterday, and noticed there is no corresponding XCode 3.x release, only a 4.x release (4.0.1).
Since upgrading I am getting warnings when I try to install apps on the device using my development certificates (Application failed codesign verification).
Not sure if the OS upgrade on the Phone and the error message are related, so I'm just asking the question if anyone else had this happening?
And are we supposed to use XCode 4.0.1 when we develop for the 4.3.1 iOS release or can we use a 3.x version as well?
The Xcode version number isn't important, but the SDK version number is. You can get the latest SDK with either Xcode 3.2.6 or Xcode 4.0.1 at the time that I'm writing this.
You can still download the XCode 3.2.6, it goes with the SDK 4.3, and it is free to download.
You can try with XCode 4 as well, but you have to either to have an iPhone or Mac Developer account (99$/year) or you need to buy it from the AppStore
It still works, however of you first attach your iPhone to Xcode it will ask you to download the debugging symbols off the phone. Answer Yes to this question and you are ready to go.
However there is one more thing: usually Apple makes restrictions about the SDK you should use when submitting apps to the store. So if you want to submit an app it could be that you have to use the most recent SDK.
Deploying an application directly from XCode 3.2.6 on a device where iOS 4.3.1 has just been installed won't work.
First, you need to open XCode's Organizer window and ask to collect information from the device. Then it will work fine.

Base SDK of Xcode 3.2.2 does not include iOS, where'd it go?

So as of this writing, the newest version of Xcode is 3.2.5 (though the GM seed of Xcode 4 was just released, still not ready to make that jump). I know Apple graciously decided to stop allowing developers the ability to test their apps in simulator for any OS below 4.* with the past few releases of Xcode.
I know I need at least Xcode 3.2.2 to test legacy OS versions of the iPhone in the simulator (3.*).
I install Xcode 3.2.2 in a folder on the same level of the current 3.2.5 version. After the install, I opened my project that has no issues in the newest version of Xcode.
I go to the project settings and check the Base SDK value. Under that tab there is no option for the iPhone OS. All it allows me are Current Mac OS and Mac OS X 10.5 and 10.6.
I check the current Target Tab and see the same issue. No iPhone OS options.
The PDF that comes with the xcode322_2148_developerdvd.dmg file (downloaded from Apple's repository http://connect.apple.com/) talks about the iPhone and iPad platforms, so I know this is a new enough version.
What is it that I am missing?
Edit:
After looking through what was installed on my system with xcode322_2148_developerdvd.dmg, it appears that Apple left out all of the necessary files for the iPhone portion of Xcode. Guess it's off to Google to find an old, complete version of Xcode. Unless someone here has a good virus free location they are willing to suggest :)

install iphone sdks side by side

Im trying to get my xCode to contain all iPhone sdk's from 4 back to 2. But when I download the DMG files, it seems to only allow me to have an xCode with SDK versions 2 - 3.1 OR 3.2 - 4, not all together.
How can I install the SDK's into one xCode so I can build for all different OS versions?
Thanks
EDIT::
Ok so I know I can set the base SDK in xcode, but the options I have are only 3.2 or 4.0, I cant seem to install the 3.1 or earlier SDK's how can this be done?
Final Edit::
Ok got it solved, basically you only need to have an older version of xcode installed to get earlier simulators running, otherwise the articles given to me in my answers as well as others were very helpful:
http://www.clarkcox.com/blog/2009/06/23/sdks-and-deployment-targets/
Install xCode 3.2.3 w/ iPhone SDK 4, get "Base SDK missing", can't see other SDKs
How To Make iPhone App compatible with multiple SDK (firmware) versions
http://cocoawithlove.com/2010/07/tips-tricks-for-conditional-ios3-ios32.html (possibly the best one)
Is there any particular reason you need to do this? Are you trying to develop applications that will run on iOS 4.x and older versions (3.x)? You can still develop applications which will run on iOS 3.1.x with the iOS 4.x sdk.
Take a look at the following article: http://www.clarkcox.com/blog/2009/06/23/sdks-and-deployment-targets/
I tried the same thing some time ago, and it seems some minor SDK versions are automatically removed during the install process...
You may tried to copy them before installing the other XCode versions, and re-install them just after.
They are located in /Library/Platforms/iPhoneOS.platform/Developer/SDKs/ and /Library/Platforms/iPhoneSimulator.platform/Developer/SDKs/.
Note that you can also choose to install each XCode version in a separate directory.
You will lose a lot of hard disk space, and you'll have multiple versions of XCode, each one with different SDK versions.