views:

3482

answers:

2

I have a project configured (I think) to produce Universal binaries. The base SDK is set to 3.2 and the Deployment Target is set to 3.1. Target Device Family is iPhone/iPad and the architecture is armv6 armv7.

I had a few questions about how this Universal binary thing really works:

1) When I want to submit an app binary for review, what configuration should I set as the build target? If I set it as "Device - 3.1" I get a warning which says "warning: building with Targeted Device Family" that includes iPad('1,2') requires building with the 3.2 or later SDK". However, if I build with SDK 3.2, will it still run on iPhones with OS 3.1? What's the right configuration for device and architecture (arm6/arm7)?

2) How do I test the scenario above (built with SDK 3.2, but installed on a device running OS 3.1)? If I build with SDK 3.2, when I try to install it on a phone with OS 3.1, I get an error saying that the phone's OS isn't updated.

Thanks!

A: 

So, the key seems to be that the "Architectures" setting be set to "Optimized (arm6 arm7)" in addition to the "Valid Architectures" setting being set to "armv6 armv7".

This allows it to compile with the 3.2 SDK and run on an iPhone running 3.1

The settings I have in my question, in addition to this above change, seems to be what's needed to configure the app for submission as a universal binary. I haven't done it yet, but I'm fairly confident.

Please correct me if I'm wrong.

psychotik
+7  A: 

Our first Universal App just got approved and released in the App Store today, so here are the settings we successfully used:

Architectures
Architectures: Optimized (armv6 armv7)
Base SDK: iPhone Device 3.2
Build Active Architecture Only: unchecked
Valid Architectures: (empty)

Deployment
Targeted Device Family: iPhone/iPad
iPhone OS Deployment Target: iPhone OS 3.0
(you can set this to any iPhone 3.x OS but we wanted to target the oldest devices possible. This must be 3.0 or above, 2.x is not valid for a Universal App.)

Make sure that you'd also checked these settings for the Target itself (Project->Edit Active Target "AppName"); my initial problems when uploading to iTunes Connect were because the iPhone OS Deployment Target for the Target itself was still set to 2.2.1.

hjd
Thank you this is what I was looking for, did you set base SDK to 3.0 too?
Leg10n
Nope, Base SDK is 3.2 and iPhone OS Deployment Target is set to 3.0 (or above). That's what we did for our first Universal App.
hjd
note - to run the application in the simulator, set the Active SDK to 3.0 to 3.1.3, and select Run > Run
jrtc27