Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

$(ARCHS_STANDARD_32_BIT) vs. armv6, armv7/armv7s vs. i386

I have an iPhone App which should run on armv7 as well as armv6. For debugging the App should run in the simulator too.

The Standard in Xcode 4.2 is this:

armv7 ($(ARCHS_STANDARD_32_BIT))

It is not clear to me what $(ARCHS_STANDARD_32_BIT) stands for and if I should use the two:

  1. $(ARCHS_STANDARD_32_BIT)
  2. armv6

Or all three like this

  1. armv6
  2. armv7
  3. i386

What is the best option for this in my case? And how does Architectures work with Valid Architectures

like image 870
Besi Avatar asked Nov 30 '11 09:11

Besi


2 Answers

To run in the simulator you don't have to do anything.

You can leave the Valid Architectures setting at armv6 armv7, because, according to the docs:

During the build, this list is intersected with the value of ARCHS build setting

To support armv6 and armv7, set the architectures to $(ARCHS_STANDARD_32_BIT) armv6, $(ARCHS_STANDARD_32_BIT) currently expands to armv7.

Also check if there is a "Required device capabilities" = UIRequiredDeviceCapabilities setting in your plist file, as Xcode will add armv7 for new projects there.

like image 57
k1th Avatar answered Nov 11 '22 02:11

k1th


Update with Xcode 4.5: Apple added the new architecture armv7s, which adds optimisations for the new hardware of the iPhone 5.

Since I could not test our app on the new iPhone5, I removed this architecture from our app by changing the supported architecture from $(ARCHS_STANDARD_32_BIT) (which means armv7 + armv7s) to only armv7.

If you want or have to support the older iPhone 3G you also need to addd armv6.

You need to do this for both Architectures and Valid Architectures.

like image 8
Besi Avatar answered Nov 11 '22 04:11

Besi