Simulate iPhone 3.0 with SDK 4.0 - iphone

i have xcode 3.1.3 and xcode 3.2.1 installed
For sure now I use 3.2.1 with Sdk 4 to develop new apps.
But what if I like to test a App compiled with sdk 4 on a
simulated iphone that would just have 3.0??
As BaseSDk i use 4.0 and as target 3.0
In xcode 3.1.3 i could select a simulator down to 2.x but with sdk 4.0
i only have the option 4.0 iphone or 3.2 ipad
Example> i know iAd is not supported before 4.0 so I set the
framework to weak. But just to be sure all works fine I really
would like to test my app in a simulator that simulates an iphone with 3.0
thx
chris

The new simulator does not seem to be able to run the old simulator OSs (3.2 being the oldest it'll run). I tried moving them over from old SDK installs and several variations and "no go".
You can check that you aren't using methods defined in the new SDK, when you set the base SDK to 4.0 but set the Deployment to to 3.1.3, for example. For a blog post on how to do this see this blog post, and note my comment on an easier way to do the last two steps (no need to edit the project file as a text file).

inside the iphone sdk dmg file, there should be a folder called packages. in it, you'll find packages like iPhoneSDK3_0 and iPhoneSimulator3_0. Install them to be able to use them in xcode.

Correct me if I'm wrong, but I think a device with 3.0 installed can't even run apps compiled with 3.2 or 4.0. Furthermore, Apple now only accepts iPhone apps (including updates of existing apps) linked against the 4.0 libraries, which won't run on OS version 3.0 devices.
So why do you want to test your app on a 3.0 device?

Try setting the architecture you want to build for in the Xcode project preferences and rebuilding.
If this doesn't work, completely uninstall Xcode and downgrade. You have to completely uninstall because your system must have updated the frameworks for 4.0.
Hope this helps

Related

Base-SDK of v4.0 means it won't install on 4.1 or 4.2 devices?

I was using xCode v3.2.3 and SDK 4.0 to write iPhone apps that worked on my iOS v3.1.3 device... as well as v4.0. (Deployment target set to 3.1.3. Base SDK set to v4.0)
Does that mean everyone that uses my app will need a minimum of iOS 3.1.3 and a maximum of v4.0? Or will they also run on v4.1 and v4.2?
Second part of my question:
I now upgrade my iOS v3.1.3 to v4.2.1.
Xcode now says my v4.2.1 device is now no longer provisioned.
Doesn't a Base-SDK setting of v4.0 mean apps will also run (or at least install) on v4.x?
No. Base SDK just means that your app will be built against the iOS 4.0 libraries. Any 4.x device will be able to run a release build of your app, but for debugging, Base SDK and the iOS version on your device must match. In the end, you need to build your app with the newest available Base SDK anyway, because Apple won't accept apps built for older SDKs into the App Store.
No, they will. iOS has Backward compatibility.
I agree with Irene. I found the solution:
The hint came from here: Can't make Xcode 4 run a barely empty project using SDK 4.2 (runs fine in 4.3)
And this is how i resolve: my xcode 4.0 my SDK 4.3 and my Ipod touch device is 4.2.1 - You see it is backward compatible. There are 2 things you must do in order to resolve. 1) In your xcode 4.0, You click on your project name under Target to ensure you change the target not the Project setting. Find the row >IOS deployment target to the version of your device in my case it was back to 4.2.1 ipodtouch so i set 4.2 (do not worry about basesdk it is for your application not the same as your application's target. 4.3 basesdk requires you provide codesign so you have to select code sign if do not have one apply for one looking up in Apple website or google)
After setting your target to compatible version with your device you now can go to "set the active scheme" that is where you select which device to install and run on including the simulator. So you will find you device there select it and you are good to go.
And if you still can not get it going. You can try to select your project under Project this time adn set the ios deployment target to your version mine was 4.2 ipodtouch ios. Then go select "set the active scheme" that is where you select which device to install and run on including the simulator. So you will find you device there select it and you are good to go.

Xcode SDK IOS 4.2 installation and missing iOS 4.1 in build settings

i have download Xcode SDK 4.2(xcode_3.2.5_and_ios_sdk_4.2_final.dmg) from Apple developer site and installed successfully . when open my old xcode project it shows baseSDk missing ,when i try to change project setting ,i have found and set base SDk as 4.2 it works fine
my problem is ,in Base SDk list it shows
(iOS 2.1, iOS 2.2, iOS 2.2.1, iOS 3.0, iOS 3.1, iOS 3.1.2, iOS 3.1.3, iOS 4.2)
There is no iOS 4.0 and iOS 4.1 (which i have used before 4.2). anything wrong in my installation???? Plz help me to correct my mistake
Thanks in advance
This does happen. I generally just use the latest SDK as base SDK. You support the latest version and forget abt the older versions[apple style]. This way your app can take advantage of all the latest functionality.
One thing you must remember is that the Base SDK is different from the deployment target.
base SDK is the latest SDK your project will use and support.
deployment target is found in target->getInfo; this is the minimum version that your app will support.
4.2 is a free upgrade and most of them would upgrade, so i'd set the deployment target as 4.0 or at the least 3.0. who uses 2.x anymore?
if you really want 4.0 and 4.1 as well, you have to install the old 4.1 GM as a parallel Xcode IDE or follow this link and get support for all the versions in a single XCode IDE.
http://chris-fletcher.com/2010/08/28/howto-install-iphone-sdk-2-0-3-1-for-xcode-3-2/
I'd suggest building using 4.2 but follow the link and install all the simulator SDKs for old versions so that you can test the app on those versions of the simulator.
Nothing went wrong here. That's how Apple forces the developers to always use the latest SDK to develop.

How to make my iPhone app compatible with iOS 4?

My iphoneos 3.1 based application is not working on iOS 4 GM: the camera is not showing in full screen, it doesn't correctly detects compass information, the uiwebviews doesn't respond to touches (they don't scroll), and so on. It's completely broken! Now my question is: how can I develop an update using the latest xcode with support for ios 4? The latest iOS 4 xcode (3.2.3) doesn't provide any way to develop for iPhoneOS 3.x ("base sdk missing"). By the other side, xcode 3.2.2 would not allow me to debug it on a iOS 4 device, so I can't test it.
In Xcode, you can use a later base SDK while targeting an earlier version.
Go into your project settings and set iPhone OS Deployment Target to an earlier version, such as "iPhone OS 3.1".
I would create a second disk partition and install the 4.0 version of xcode on that. Keep the 3.2 version on your primary drive.
Its probably not necessary to create a second disk partition but it was simple to do.
Install the 4.0 sdk under a different folder and then re-install the 3.2 sdk and develop in that.

Project Active Executable can no longer be iPhone 3.2

I don't know how much you can help me because its under the NDA, but I recently updated to the OS 4 beta 3 xcode version. My project worked fine under 3.2 but under 4.0 parts are a not quite right I assume because it is still being developed.
Every other installation of the beta sdk I could go into the project settings and select the iPhone 3.2 sdk and then change the target iPhone OS in the top left of Xcode but not this one. If I select 3.2 it still loads on 4.0 it seems I only have the 4.0 simulator and the iPad 3.2 simulator.
Any ideas how to get the 3.2 Simulator back?
Download the 3.2 sdk from the iPhone
Program Site.
Install it in a directory seperate
from the 4.0 beta sdk.
Use the xCode in the 3.2 directory
for access to the current sdk
versions, and the Xcode in the 4.0
directory to play around with 4.0
Remember if you want to submit an app to Apple you will have to build it with a non-beta toolchain. I recommend never updating your sdk to a beta version, but instead keeping the beta in a seperate folder.
It would seem that Apple has not included the older iPhone simulators in the latest beta version of the SDK. There is almost a 1GB dif between the two installations.
There may be a way to add all the old simulator and device SDKs by installing all the packages in the old version of the SDK (the newer one is missing the folder) but after trying to install just the ones I needed with no success I just reinstalled the old Xcode instead which fixed the problem.

How to get iPhone SDK 2.2.1 for Xcode 3.2?

After my upgrade to Snow Leopard and Xcode 3.2 (which I really regret a lot!!), Xcode lost all the SDK's. I'm one of those old-fashioned idiots who still want to develop for 2.2.1. But Apple does not offer me an old SDK download.
Now I was clever and made tons of time machine backups. But: What's the preferred way to get iPhone SDK 2.2.1 running with Xcode 3.2? Some guys said that's generally possible. I do hope so because I still don't believe in all those "faked" stats, and besided that, my app doesn't benefit from 3.x additional features so I would not want to constrain my market just for that lazyness.
Any idea?
Regardless of whether or not you're targeting iPhone OS 3.0 or not using any 3.0 specific features, you should always compile your app against the latest SDKs to benefit from bug fixes and performance improvements.
You can compile against the 3.0 SDK and set the iPhone OS Deployment Target to 2.2.1 and still cater for users who are using 2.2.1.
You may find that some methods have been deprecated, but that doesn't stop you from using them until you're ready to move on.
Get the 3.1 final sdk, it has the 2.2.1 sdk in it. On disk its usual location is:
/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS2.2.1.sdk
Also included is 3.0 and 3.1.
XCode 3.2 should have the prior iPhone SDKs available, just make sure you are setting your project's Base SDK setting to "iPhone OS 2.2.1". (Right-click on your top-level project icon in the Groups & Files browser in XCode and choose "Get Info", then go to the Build tab.)
Raffaello and others are correct: you can use the latest SDK and still target (and test on) older SDKs. For example, I'm using iOS4.0 (xcode 3.2.3) and testing on my iPhone 3g running 3.1.3.
To clarify the procedure:
- go to project info > build tab
- set Architectures:Base SDK (most likely) the latest
- set Deployment:iPhone OS Deployment Target to what ever you want (I have the option to go as far back as 2.0).
Hope this helps someone.
Like I said on other threads, the SDK and Deployment Target are different.
You can still use the latest SDK to build for an older OS.
Just go to your Target settings and under the Deployment section set the iPhone OS Deployment Target to whatever you'd like.
Cheers,
Raffaello Colasante