Invalid Binary Architecture?

Hi,

Im very confused, I uploaded my app to Apple and got this back in an email:

Invalid Binary Architecture - iOS 3.0 introduces support for multiple binary architectures. If your binary is built for multiple architectures, your Info.plist must have a MinimumOSVersion key with a value of at least 3.0. Additionally, in order to support existing devices, all iOS 3.0 binaries submitted for distribution through iTunes must contain at least an armv6 binary; “thin” armv7-only binaries will not be accepted unless the armv7 required device capability is also present in the Info.plist UIRequiredDeviceCapabilities key.

What do I need to do?

depends on what you want to achieve.

pure ARMV7 applications require OS4 if it is a phone only application, cause the ARMV7 UIRequiredDeviceCapabilities key was added with OS 3.2 which is ipad only

Also, the binary architecture part sounds strange but to be sure: I assume you are aware that your application must be built with the os4 sdk and os4 as base sdk set, combined with a deployment target of 3.0 or higher (os 2.x is no longer accepted and leads to rejected)

potentially you missset the project to “build active architecture only” which leads to such problems

Bit of discussion with this going on at the moment.

If you build for active architecture only the default will be armv7.

You can build “thin” for armv6 which will reduce binary size (at the cost of no armv7 optimizations), but you can’t do this for native iPad apps.

The only reason to build “thin” would be to keep your app under the 20MB limit. If this is not an issue for you (i.e. if your app doesn’t make this limit regardless) then stick to building both.

“potentially you missset the project to “build active architecture only” which leads to such problems”

I am glad you added that line at the end. That did it for me. It needs to be unchecked. :stuck_out_tongue:

I’m actually getting the Invalid Binary message on iTunes Connect as well - this time however, I checked to see if Build Active Architecture Only was check, and it’s not.

Anything else I might check? I’m not concerned with the 20MB limit as mentioned above, but I’m a little unclear as to what that implies I should do.

Thanks in advance!

if you get it on iTunes connect: what architecture do you target, what deployment target iOS version?

Apparently it was a matter of choosing “Release” instead of “Distribution” in XCode.

This whole iOS dev process is so new to me - what exactly is the difference between these two modes? Seems to me like you would want to distribute with the Distribute setting.

Distribution is to send to the appstore, it can’t be installed (unless its an adhoc provision)
Release is just a non-debug build but you can still sign it with the development provision

dreamora is absolutely right… if you’ve set the right provisions, etc. and you can upload the binary to iTunes but you’re still getting invalid binary architecture, you might want to start a clear build, go to build and press clean all targets and build you project from scratch…

That’s what I did after all the testing with release and debug builds :wink:

Good luck