How to get iOS 4 work with Mac OS X 10.5.8 - iphone

I am not able to test my apps on my iPhone 3GS that runs iOS 4 with Xcode 3.1.4.
I can't install Xcode 3.2 because it appears it needs Mac OS X 10.6 and above.
What are my options here then, because I don't want to pay for OS X 10.6. Is it possible to just have an upgrade?
If this is totally binding, is it possible to downgrade my phone from iOS 4 to iOS 3.1?

I would suggest you just lay down the money for 10.6.
Apple are moving forward and not looking back. You can't stay on 10.5 forever, especially if you're a developer. You need to be working with the latest tools and SDKs in order to benefit from bug fixes and performance improvements.
Downgrading isn't officially supported, so that's something you'll have to find out how to do yourself, and may lead to problems/difficulties and may even make your iPhone unusable. (just stating the risks).

I haven't tried this but I think this will work. You can try creating an ad-hoc distribution profile for your iPhone with the app id and install your app on the iPhone through iTunes. This way you'll be able to test your app but you can't debug it for sure.

Ad-hoc distribution is the only way can get it work and I dont think that you can install iOS 3.1 in iPhone 3GS in your case.

Related

How do you test against a specific version when you don't have a device with the version?

I have 3.1.2 device and have used 3.1.2 as minimum iOS requirement for my app.
Now I want to set the minimum iOS requirement for my app to 4.0.
The problem is it seems there's no way I can upgrade my device to 4.0 without jailbreaking.
(and it seems if I jailbreak my device, I won't be able to test IAP)
Hence, I can only update the device's iOS to 5.0, and I won't have 4.0 device to test against.
What do you do when you are in such a situation?
Yes that is a problem, i've faced my self. I still own an iPhone 3G which is still running 4.2.1 and I can down grade it to iOS 4.0 My iPhone 3GS and iPhone 4S are stuck on iOS 5.
I've used testflight to for an open beta to get 20 test with different iOS version, which if it is possible can help a bit. But getting and iPhone 3G or second gen iPod touch might help.
You can install all version of the iOS (up to the one they support) on them since there is real install check done. You might need a tool to finish the installation if it hangs on the final step, but there is no need to jailbreak them.
You may need to buy an old used iOS device running the old OS version which you want to test against. You could sell your other test device with an unusable OS version to help pay for it.

iPhone App Run Different iOS

I am getting a fat binary when I go to upload, and I want to make sure that my application can run across 3.0, well even 2.0. Is there a specific way to make sure that this will show when I go to upload. I am not using any specific iOS 4 features, and I only have iOS 4 in my xCode. How can I test different iOS version?
The only way as I could think of is test your app on real old OS version devices. Since Apple prefers its users to upgrade to new OS version as soon as possible, they don't actually provide an official way for developers to test such backward compatibility.
Another relevant questions would be, "can I downgrade my device OS version to an old one, so that I can test my app on them?" I once did a research on SO and other Apple forums, and the result I got was NO, we developers don't have a way to "officially" downgrade our device OS version. Yes there are exceptions, you can try jail-breaking and then downgrading.
For jail-breaking / downgrading your OS version, check this post, A TimeMachine taking my iDevice back to 3.1.2? .
Edited: It's actually pretty easy to make sure that users with old OS versions can downloaded and install your app. All you need to do is set the Deployment Target in Xcode to the lowest OS version you want (iOS 3.0 would be the lowest in Xcode 3.2.5).
However, you need to bear in mind that such Deployment Target only ensures that your app can be downloaded and installed on such old version OS devices. They don't ensure compatibility during runtime. You still need to test your app on real old OS devices to ensure compatibility.
I dont think u need to worry about app version 3.0 below because it is not supported anymore. but how to test on different version, make sure change the iOS deployment target as Thomas refered.
There is no currently supported way to do this.
No current Simulator or Xcode tool will ensure that an app is completely compatible with an OS version older than the SDK used. The 2.0 SDK is not compatible with the current development tools. There is no officially supported way to downgrade a device.
Furthermore, Apple no longer even accepts app submissions that have a deployment target lower than 3.0.
Even most old 1st gen devices, if you can find one on eBay, have been upgraded to iOS 3.1.3. But if you have access to an old device running iOS 3.1.3, you can use that for testing. Many developers keep an old used iPod Touch around for just his purpose.
People with devices running something older than 3.1.3 are not only a really tiny percentage of the installed base, but are very unlikely to be still buying apps for that device. Even large developers with staff and legacy hardware available for this testing rarely waste the time on this market.
Look into Project -> Edit Project Settings -> iOS Deployment Target: 3.13. And then build?
Edit according to comment: You still need to ENSURE your code is within the runtime scope, i.e. do checks like 'respondstoselector' before calling methods in question.

A TimeMachine taking my iDevice back to 3.1.2?

My biggest headache now is find a iPhone 3Gs with iOS 3.1.2 on it. iPhone 3Gs is everywhere, but all of them are with iOS 4.1 or even higher.
My question is, is it possible that I get a iPhone 3Gs (with iOS 4.x) and some software package so that I can restore it back to iOS 3.1.2?
Btw by saying 3.1.2 I mean the official non-jailbreaking 3.1.2.
Many thanks,
Di
You would have to have your SHSH's saved with Cydia, then you can downgrade to any version you like (that's supported). With that said, after downgrading, You could always not jailbreak, so it's a legit iOS 3.1.2, but you would have to be jailbroken at one point prior. Other than this, NO, there is NO WAY to DOWNGRADE from any iOS version.
Alternatively, You can try Xcode to downgrade your device as a Developer Device. This would probably be the closest I can think of that Apple would let you downgrade. But it is a longshot.
Just in case you meant 3.1.3 (not 3.1.2), there is this article from lifehacker on how to downgrade from iOS4 to 3.1.3: http://lifehacker.com/5572003/how-to-downgrade-your-iphone-3g%5Bs%5D-from-ios-4-to-ios-313. I used this successfully to downgrade to 3.1.3.
Based on the article, it looks like you could do the same in downgrading to 3.1.2, you just need to find the right image for it.

iPhone OS 4.0 backwards compatible with 3.1/.2

I'm building an iPhone application with a base SDK target of 3.1.x. I've got a friend who offered to test it on the OS 4.0 beta, but I'm wondering in advance if I should bother. Will my application run under 4.0 or is it not backwards compatible? I have to imagine it will since apps built for 2.x run on 3.x just fine AFAIK. Any gotchas?
This information is still under NDA and therefore cannot be discussed here, except what was mentioned at th keynote and is thus public.
That said...
I can see the announced multitasking as a gotcha in terms of memory, performance and application state. Testing on OS 4 seems like a good idea in light of that. However, I your friend's device is not a latest-gen hardware device (iPhone 3GS or iPod touch 3rd generation), you will not get test results that deal with multitasking.
Also, remember that when installing the iPhone OS beta, you will need to add your friends UDID to your list of testing devices in your devloper portal or else the device will lock up when you upgrade.
In case you or someone reading this needs to know:
To upgrade, you can either use XCode's Organizer or simply use iTunes. Hold the "option" key and click on the "restore" button. A window will pop up asking you what firmware to use.
Again, thes kind of questions are not yet really legal outside of Apple's develope forum.
I hope this helps. Good luck and happy developing!!
I've been using 4.0 beta for a few weeks now, and haven't run into any problems with my / App Store OS 3 apps. I don't think there were any changes in OS 4 that would break existing OS 3 apps but I can't say so with complete certainty.
Most likely any features from 3.0+ will be in 4.0. Features in 2.x may be removed.
No way to know for certain unless you can use the beta or wait until the official release.
You should always test on as many devices as possible. As mentioned, OS 4 is particularly good to test with just to make sure you interact well with the new multitasking features (which is public knowledge so it's not like saying anything about that would go against the NDA).

downgrading iPhone 3GS iOS4 to OS3

I'm working on an iphone project for OS3.1.3. I updated my iPhone to iOS4 and now I can't test my project on my iPhone anymore. I tried downgrading but get "device not eligible"
What should I do now?
If I download latest XCode SDK4 will I be able to recreate my app so that it runs both on OS3 and OS4 ? It has no specific os4 features.. it should just run on both and want to test it on real iphone with os4..
Greets
First of all, downgrading your phone won't work. at least not with the "official" approach. I think once there is a Jailbreak for iOS4, downgrading your phone should be possible again.
Secondly, Creating an iOS app with XCode SDK4 that runs on your 3.x devices is no problem at all:
Just set the "iPhone OS Deployment Target" Value (Target -> Info -> Build) to "iPhone OS 3.0"
You can build with SDK4 and still target older devices running iOS 3.2 or earlier. How to do this is covered in detail in this other question here.
You can downgrade your phone OS, that's covered in this question over here.
But really the best approach is to update Xcode, compile with SDK4 and support earlier iOS versions as well.
I'm in the same situation.
What is the best ?
1 Upgrade to SDK4 and still target on IOS 3.xx . Will iPhone ios 3.1.3 users be able to download apps built with SDK4 . I don't think so.
2 Downgrade ios4 to ios3 and still work with SDK3.
PS : Someone suggested to get the lastest SDK
You can downgrade iPhones, iPod touches and iPads.
Instructions are here. If for instance you're downgrading a second generation iPod Touch from iOS4 to iOS3.1.3 you'll need the iPod2,1_3.1.3_7E18_Restore.ipsw firmware. A Google search will bring these things up.
Some downgrading references ask you to modify a "hosts" file. I don't think this is necessary, I downgraded from iOS4.2 to iOS3.0 (and to iOS2.0 for fun) without having to do this.
Good luck.