5 ms·
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 simulato
by Xuzz 15y ago
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/ http://thefirmwareumbrella.blogspot.com/
[2]: http://www.saurik.com/id/12 http://www.saurik.com/id/12
- i300 15y agoI'd like to know how other developers go about supporting older firmwares. I, personally, have an iOS 4.3.3 iPad and iOS 3.1 iPod Touch Gen 2. I develop for those devices and make sure the application works on them both.
- gte910h 15y agoThe cheapest way was to just keep old phones, etc around. I have a 3.1.2 phone, 4.0 iPod touch that can't do multi tasking, and use them when I have to test edge cases. I don't think it's reasonable to care about <3.1.2 on the phone shaped devices, or <4.0 on iPads
- jamesu 15y agoI currently still have a 1g iPod touch so i can still test on the last 3.x release. Otherwise i'd just target 4.x.
- curiousgman 15y agoI 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.
- gte910h 15y agoThere is also: Trying the old version, but accepting their loss when the hardware starts to fail and just saying if it's not simulator based, sorry, you can't support it
- deleted 15y ago[deleted]
- inb4ohnoes 15y agoI don't. I always target the latest firmware, and if the app sees a major version upgrade (1.0->2.0) I just target whichever newest firmware is out.
- allwein 15y agoI basically have a device rotation that basically works like this: I have the current iPhone. I keep it updated to the latest stable and it's my primary development device. When significant new beta comes out, I buy a latest gen iPod Touch and install the beta. This becomes my primary development device for all beta builds. Once the new iOS version is released, I update my iPhone to the latest OS version. At the same time, since Apple allows some overlap, I downgrade the iPod Touch to the latest old version of iOS. At this point, I leave the iPod touch frozen at that iOS version and use it for old compatibility testing.
- imperiopolis 15y agoSupport the older rev for a while (with multiple devices, not upgrading, blobs). When apple stops supporting an older device, next major release shifts the target to whatever the minimum iOS was on the next newest device when it shipped (usually just a few revs higher). This way, we support whatever hardware apple supports on every possible iOS. iOS 5 will make this trickier. Also, if there are significant bugs on apples part in a particular iOS that hamper our app, we'll drop it early.