PDA

View Full Version : Testing for multiple iOS versions on one device




Rocksaurus
Jan 16, 2011, 07:26 AM
This has gotta be a really stupid post, so I apologize in advance. But I've spent hours googling and messing around in xcode.

I haven't worked with xcode much at all for over 6 months. I recently updated to 3.2.5 to update one of my apps because users complained about crashing on launch using iOS 4+.

I fixed the bug (as far as I can see?) but Apple says it crashes on launch in iOS 4.2.1. My iPod (the latest one) is running that version, and I can't get it to crash. Back in the "old days" you used to be able to go to the drop down menu in the top left and choose the version of iOS to debug against. These days I can get a few versions if I use the simulator, but 4.2.1 is not one of them. Plus, the simulator is not the device.

So, how do I test against multiple iOS versions on one device? As of now xcode says iOS 4.2 is what I'm testing against. My iPod is 4.2.1. Any help? Again sorry if this is the stupidest post of the year.



PhoneyDeveloper
Jan 16, 2011, 10:05 AM
Apple really doesn't support installing of older OSes on iOS hardware. In the past the feature was there to allow back-installing but apparently Apple didn't consider that to imply official "support" of this feature.

It's possible that there are ways to hack this but I'm not sure.

Anyway, what's expected by Apple is that you have separate devices for each older OS that you want to support.

Regarding the Sim, 4.2.1 is a dot release and I don't think there is or will be a Sim that targets that version. 4.2 is supported and nominally is the same as 4.2.1. I see 3.2, 4.0, 4.1 and 4.2. 4.3 might be available with a beta Xcode.

You should be able to predict from the cause of the crash on launch whether it would be fixed for 4.2.1.

Also, when you build your app targetting 4.2 it will still debug on a 4.2.1 device, or on any device between the deployment target OS and the base OS.

Rocksaurus
Jan 16, 2011, 11:35 AM
Wow.. Ok. So there's no way for me to test my app under anything but 4.2? I know the difference between it and 4.2.1 is minimal, but seriously Apple? My device has 4.2.1 on it, and it doesn't crash on my device but it crashes on their's. I miss the good old days

Luke Redpath
Jan 16, 2011, 12:43 PM
Wow.. Ok. So there's no way for me to test my app under anything but 4.2?

No, there is - you need a physical device for each different OS version you want to test. Don't rely on the simulator. Buy some iPod touches for testing; they are legitimate business expenses (tax deductible).

Rocksaurus
Jan 16, 2011, 12:46 PM
No, there is - you need a physical device for each different OS version you want to test. Don't rely on the simulator. Buy some iPod touches for testing; they are legitimate business expenses (tax deductible).

I'm confused. My device has 4.2.1, it doesn't crash for me but it does crash for Apple. Xcode says it's compiling for 4.2. The device is 4.2.1. Same as Apple. What am I missing here? It would seem it doesn't matter how many devices I have.

dejo
Jan 16, 2011, 01:14 PM
Has Apple included any crash logs in their emails?

PhoneyDeveloper
Jan 16, 2011, 01:42 PM
Different devices with the same OS can be configured differently. A crash log is always a good way to start this investigation. If apple didn't send one you should check iTunes connect or try to get one from a user.

cnstoll
Jan 16, 2011, 02:34 PM
How do you get a crash log from iTunes Connect or from a user?

I'm having the exact same issue trying to debug for older versions, and I'm almost to the point of jailbreaking my second iPhone in order to downgrade it. It's really frustrating that I might have to do that.

Rocksaurus
Jan 16, 2011, 03:00 PM
Thanks for everyone's help and patience with this - I know how stupid a question it is. I didn't know how to read Apple's crash logs (normally they're easy) but then learned about "Symbolication" from an Apple doc. Yay me.

I'll eventually get to the bottom of this. Things just work a little differently than they used to so I'm adapting. Thanks again, guys.

How do you get a crash log from iTunes Connect or from a user?

I'm having the exact same issue trying to debug for older versions, and I'm almost to the point of jailbreaking my second iPhone in order to downgrade it. It's really frustrating that I might have to do that.

If your app is rejected Apple sends you the crash reports as an attachment to their rejection email. User crash logs can be found on iTunes Connect.

cnstoll
Jan 16, 2011, 03:19 PM
Edit: Nevermind, found it. There's no reports there though. Hrm.

PhoneyDeveloper
Jan 17, 2011, 11:07 AM
See Tech Note 2151 (it's in the Xcode documentation window) for info on how to find crash logs. If a user has reported a crash to you then they should be able to find the crash log on their computer and email it to you.

@cnstoll, there is reportedly a hack where you modify something in the etc/hosts file on your Mac that allows you to back install older OSes on your devices. I tried this out a few months ago but didn't succeed but others have claimed success. Google for that before you need to jb.

cnstoll
Jan 17, 2011, 11:16 AM
Thanks for that tip, I might try that. I finally solved the old OS bug that a user reported, and the way I did it was getting a friend with an old phone to replicate the problem and send me a crash report.

The way we got the crash report was through the iPhone Configuration Utility. If anyone reads this but hasn't used it...I highly recommend it. I found it a while ago but I hadn't really used it yet, but it really saved the day here. Great way to manage Ad Hoc installs and view the device's console.

If I can't manage to downgrade my old phone using that /etc/hosts method, which I haven't tried yet, I'll probably just buy an old iPod Touch or iPhone 3G off craigslist for testing purposes. It's frustrating but I'd rather have the peace of mind of being able to test on older versions myself without relying on other people to help.