How to build an iOS4 app that will also run on the iPad? - iphone

I'm trying to build an iOS4 app (not universal) that will also run in compatibility mode on the iPad. So I set the Deployment Target to 3.2 and the Device Family to iPhone.
This works fine in adhoc builds, but when I try to upload it the the store, Application Loader complains: “This bundle is invalid. An application targeting the iPhone device family may not require a iOS Deployment Target 3.2, which is an iPad-only OS”.
What? Are my only choices to set the Deployment Target to 4.0 and not run at all on the iPad, or set it to 3.1.x and build/test the app for a platform I don't want to support, that Apple doesn't even ship an SDK for any more? Am I missing something?

Set the "Targeted Device Family" to iPhone/iPad

New firmwares support compatibility on older ones. For example: 3.1.x apps are compatible with 3.1, 3.0, 2.2, etc.
My guess is set it up as an iOS4 app. Also remember there are some functions on iPad that do not work on iPhone and viceversa. So your app could still crash.

Related

setting deployment target for iPhone app

i tested my application by setting deployment target to 3.0 on iPhone device with 4.3.2 version and my iPhone app was running smoothly so my question is that do i still need to test my app on iPhone device with lower version like 3.0 before submitting it to app store.
Thanks in advance for your any help.
Yes: if you call any API that was introduced after iOS 3.0, it will crash. The only way to be sure is to test on an actual 3.0 device.
Yes you definitely should test your application on a device with iOS3 to ensure that everything is working.
Setting the deployment target to iOS3 only ensure linking. Do not forget that iOS3 has not only different APIs, but also differents behaviors for same components, even with same code.
And behaviors can even differs from Simulator to Device!

Can I install an ad hoc build on iPad for an iPhone targeted app?

I'm creating an app targeted at iPhone/iTouch devices. They build on that just fine. Can I install an ad hoc build onto an iPad while having the 'Targeted Device Family' set to iPhone and not iPhone/iPad? I'm expecting of course because it isn't a universal app that it will run in the small window on the iPad. I don't have an iPad, client does and would just like to test on it.
Yes, as long as the target OS matches the version of the iPad it should work.
Sure; you just need to set "iOS Deployment Target" (IPHONEOS_DEPLOYMENT_TARGET) correctly (i.e. 3.2 if your client has not updated to 4.2 yet).
Note that Apple has rejected iPhone-only apps with IPHONEOS_DEPLOYMENT_TARGET=3.2 (and SDKROOT=iphoneos4.0). The only thing you could do was set iOS Deployment Target to 3.1.3 and below (and be forced to support iPhone/3.1.3), which was a bit of a pain since 3.2 has a lot of improvements on 3.1.
I'm not sure if they've fixed it. You have three options:
IPHONEOS_DEPLOYMENT_TARGET=3.1.3 (or below) and support old phones as well. (Don't support OS versions you can't test on!)
IPHONEOS_DEPLOYMENT_TARGET=3.2 and face possible rejection.
IPHONEOS_DEPLOYMENT_TARGET=4.0 (or above) and force users to upgrade.

Will iPhone base SDK allow what iphones can run the app?

I have been developing an iPhone app and now I am trying to build the binary.
I have noticed the base SDK is set to iPhone 4.0. Does this mean only iPhone 4.0 users can run the app?
I can change it to the lowest iPhone device 3.2, but how can I change the target so that I can test on the simulator in OS 3.2?
The Base SDK should be set to the latest iOS version you want to support. To also support older phones, set the “Deployment Target” build setting to the lowest iPhone OS version you want to support. Currently, I don’t believe you can set it to anything less than 3.0 and still get approved by Apple.
That's OS version, not hardware. You can adjust the deployment target and the base SDK to set up handling the differences between 3.x and 4.x APIs. A tutorial on how to do it is here:
http://iosdevelopertips.com/xcode/base-sdk-and-iphone-os-deployment-target-developing-apps-with-the-4-x-sdk-deploying-to-3-x-devices.html

iPhone Build SDK 4.0 With 3.2 Target Won't Install on iPad OS 3.2

I'm building an app for iPhone/iTouch that I also want to run on iPads (not a universal app, but one that just runs on on iPad with the 1x/2x button in the lower right hand corner).
I'm using iPhone SDK 4.0 and setting the following:
Base SDK: 4.0
iPhone OS Deployment Target: 3.2
When I do this, I can build an app just fine and run it on an iPhone/iTouch, but when I try to install it on my iPad I get the following error: The Info.plist for application specifies a minimum OS version of 4.0
In addition, if I package up the binary and submit it to Apple and it becomes available on the iTunes store, it shows that it's only available for iPhone (not the iPad). When I go to the App Store icon on my iPad, it doesn't even list the app as available (because Apple thinks it won't run on iPad, I assume).
Now I'm really confused, because I thought I understood the difference between the Base SDK and the Deployment Target, but Xcode is telling me I don't.
Can anyone help explain this to me?
As an aside but related question, if I build with Base SDK = "iPhone Device 3.2" it works fine on my iPad, but by doing so would I lose the Base SDK 4.0 built-in multi-tasking feature?
Check the 'Targeted Device Family' setting in your target's build settings. It needs to be set to iPhone/iPad if you want to be able to deploy to both devices.
This build setting automatically sets the UIDeviceFamily entry in the app's Info.plist (You shouldn't update this yourself, though—use the build setting instead.)
UIDeviceFamily

Error when making a distribution file with iPhone SDK 4.0

When I try to upload the binary to iTunesConnect it says: "An application targeting the iPhone device family may not require a iPhone OS Deployment Target of 3.2, which is an iPad-only OS".
I am using iPhone SDK 4.0 but have the settings of the distribution target set to use iPhone Plattform 3.2
Any suggestions?
Yes. Stop attempting to upload apps created by a beta SDK, which is expressly forbidden.
When you have installed the correct release of the SDK, set the iPhone distribution target to one that is available on the iPhone - like 3.1.3. If you need 3.2 support for iPad, then you also need to set the base SDK to 3.2.