Hacker Read top | best | new | newcomments | leaders | about | bookmarklet login

Apple has started to leave the iPad simulator for 3.2 and the iPhone simulators for 4.0 and 4.1 ... but I agree I never understood this either. It's almost impossible to test for devices running 3.1.3 without having an old extra device that has not been upgraded


sort by: page size:

The hard part is finding a device that can run 4.3 for testing. Technically, you could launch an app that supports iOS 2 or 3 all the way to iOS 7, the hardship is testing! Unlike Android post-Froyo, Apple's emulators have never been that accurate. in both cases, memory and device limits on older hardware become the significant bottlenecks.

That and with every OS X update you lose another simulator major version each year. Typing from memory, so I could be wrong: 10.6 had everything. 10.7 lost 3.x, 10.8 lost 4.x and 10.9 lost 5.x simulation. I had to install VMs to run emulators, how sad is that?

All this would be fine if Apple allowed developers to downgrade as post-Xcode 5 hinted, an option removed when the jail breaking started.


> The Simulator is always running the latest version.

Actually this appears to be false now. I just fired up my iOS Simulator, and in the "Hardware" menu I can select which OS version I want, either 3.2, 4.0.2, 4.1, or 4.2.


I had an iPod Touch with 3.1.3 on it but by then I'd upgraded to to 4.x with no way to downgrade it. Sure I could have bought another sooner but this is not something I was expecting as up till that point I could always test in the simulator for any version.

The problem is that Apple deprecates their SDK really quickly. As developers, that makes it really tough to test old versions of iOS when installing an updated SDK REMOVES previous versions!! Even if you select an older "OS Deployment Target", you're out of luck unless you have a device to test it on. The Simulator is always running the latest version.

I guess they assume everyone will upgrade, but a lot of people don't or can't.


I doubt this will ever be fixed by Apple because this issue affects so few people. The overwhelming majority of iOS devices in active use can run at least iOS 4.3[1], and I’d guess that the users that don’t upgrade to the latest iOS version are the same ones that don’t update all their apps through iTunes. I’m guessing that the number of users who update their apps through iTunes but don’t update their device (or can’t update their device) to the latest iOS is very small.

I wasn’t particularly thrilled that I was forced to drop support for iOS 3, but looking at the number of active users of my app[2] that were running the current version, I saw that none of them were on iOS 3. This was probably the right time for Apple to drop support for < iOS 4.3.

[1] I don’t have stats to back this up, but seeing that iPhone 3GS is the lowest hardware to support iOS 4.3, and they’ve sold way more devices since then than original iPhone and iPhone 3G, I think it’s fair to assume that the vast majority of iOS devices in use can run iOS 4.3 or later.

[2] https://ironmoney.com/ios/


I'm interested to know how the people targeting iOS releases other than 4.3, 4.2, and 3.1 actually test on those platforms before release (ignoring the simulator for now — many apps don't work there at all, and it often has subtly different behavior that can cause crashes when running on a device).

The issue here is that Apple specifically blocks restoring to any firmware except the very latest available. Since the iPhone 3GS and iOS 3.0, only the most recent firmware released for that device is allowed to be installed onto the device. And, to be very clear: that doesn't mean no downgrades, it means only the very latest is allowed. And that's even through Xcode's Organizer (which will "helpfully" allow you to try and restore older versions, which will then return an error partially through the restore), as well as iTunes when specifying a custom file to restore with.

Because of that restriction, I'm not sure how any other version can be supported: you have iOS 3.1 on an original iPhone, iOS 4.2 that an iPhone 3G can restore to, and iOS 4.3 on the current models. But other iOS versions don't have devices that can be restored to them. Do you just test in the simulator? Try and keep a device with the older version around, and hope it never needs to be replaced or restored if something goes wrong? I'm just not sure how something like that is managed.

(Note: there is a way around the above restriction, namely, saving Apple's "okay, you can restore to this version" response (often called a SHSH hash) when Apple is currently allowing that device to be restored to a certain version, and then spoofing that same reply later when you want to restore. That's how TinyUmbrella[1] and Cydia's TSS service[2] work, but it's (of course) not supported and won't even be possible as of iOS 5.)

[1]: http://thefirmwareumbrella.blogspot.com/ [2]: http://www.saurik.com/id/12


When developing for iOS sometimes you are forced to update because you can't run the latest simulator for e.g.

A huge pet peeve.


What's up with requiring iOS 4.3? Might as well finally apply that update I guess...

I have several devices on multiple firmware versions fir my base testing. Next I will test on friends devices because they are usually a little behind on the firmware updates. Finally, if I am doing something that is especially version specific, I will downgrade devices from 3.1.3 onward.

It all depends on what devices you plan on supporting. If you are doing something advanced with audio or graphics, you may feel that only the later devices are capable of what you want to do, so you only support the latest FW on the latest devices. That makes it an easy choice. If you are doing something significantly more straightforward, like a social networking app, you will probably want the most broad adoption and try to support all devices, meaning supporting 3.1.3.

He simulator is only good to test that thins are laying out properly and working in general. It's not a very good test of device capability or even versions.

I haven't checked yet, but I would be surprised if the latest sdk for v5 even supports building for 3.x versions, given how apple wants to keep pushing people forward.

Finally, you should check Latest stats on original iPhone and iPod touch usage. I am pretty sure that it will fall significantly short below 3GS and 4 usage. That should be part of your decision making on whether or nit it is worth developing for those devices.


From an Apple iPhone user point of view this makes good sense as most of them will upgrade to V 3.0 pretty quick. I also assume this will help Apple regression test V3.0 with the current code base of App store applications. It might be painful for current developers but I think they can still build for V2.2.1 and then test on V3.0 also.

3.2 for my app that needs interface builder plug-ins, and 4.whatever-the-latest-is for my other stuff. My general rule with all things Apple is to keep at the forefront of what's available, unless you have a very good reason not to. Apple isn't sentimental about dropping support for older products.

There is no reason to support anything earlier than iOS 4.3 for an app being released today.

For whatever reasons, some users still stick with older firmware versions. 100% of our userbase is iOS 4+, but about 10% of it is below 4.3.


If I started developing tomorrow, and have no 5.1 device, how can I do QA? I have an iPhone 4 that was never upgraded, but I can either keep it as is or upgrade to 7

Apple is making it really hard to support a version that you didn't target from day 1. And it is hard to target older versions from day one


This isn't Apple's style. Apple has planned obsolescence.

The other thing is that there has been over the air upgrades since iOS 5, so people do upgrade their iOS version.

From my multiple app stats (thousands of users), less than 2 percent run iOS < 4.3.

98% run iOS 5 or higher.


Problem is: a lot of apps require a recent version of iOS.

A likely solution would be to stick with old versions of your apps running on an old iOS version, but:

* you don't get the feature updates

* you don't get the bugfixes

* some old version of apps just won't work anymore (especially the news apps that connect to a server)

* if you've got an app that constantly crashes (I've had it with one game in particular), you're stuck with it

Right now, my iPad 1 is running the latest iOS 5. It's obviously slower than iOS 4 but I could update all of my apps. For now...


I have a device (an O.G. iPad) that is stuck on iOS 5.1.1. The hardware still works beautifully, as well as the day I bought it, but thanks to Apple, it's pretty much a brick now. 3P apps refuse to support it because they've all moved their minimum OS version beyond that. Perfectly working junk purely because of software choices.

3.2.x was never released for iPhone. It was an iPad-only release. That said, I get what you're saying.

While my iPhone 3 could run 4.3, it runs like a dog, so I downgraded it to 3.1.3, jailbroken with Whited00r. It means I get some of the extras (root, folders, fast app switching, sharing menu, and video recorder), without the clunky bullshit that the iPhone 3 just isn't powerful enough to handle of the real iOS6. I can't download anything from the AppStore anymore though. It is all 4.3+. Apple are essentially trying to turn my perfectly reasonable device into a brick.

My iPhone 4 is updated (via iTunes), but so far there's nothing newer than 4.2 available for my iPad (according to iTunes).
next

Legal | privacy