I want to update my app in the App Store but when I try to upload it I get an error that armv6 is not supported in my app. The problem is I cannot even choose Armv6 as an Architecture.
I have the following Architecture settings:
- Architectures: Standard (armv7)
- Base SDK: Latest iOS (iOS 5.0)
- Build Active Architecture Only : NO
- Valid Architectures : armv6 armv7 armv7f armv7k
I thought because of 3 and 4 everything is set right.
I can NOT change 1 for something else.
What can I do?
It's better to downgrade back to stable version of SDK for Distribution builds. Apple even wrote about that in previous beta builds notes.
I partially fixed that problem by setting Architecture to "armv6 armv7". After that i could build universal binary, but simulator builds is broken. :)
The way we fixed ours was to go into the target build settings, select the Architectures list and select other... Then hit the "+" button to add your own called "armv6" without the quotes. Hit done, clean targets and archive.
Keep in mind that nothing needs to be "selected" in the Architectures list. It is only a list of architectures supported and should contain just two entries.
this is the best solution, yeahhh!
Select a "Architectures: Standard (armv7)"
Select a "Other..."
Select a "+" button
add a "armv6"
select a "Done"
Some back story for everyone seeing duplicate symbol errors and/or warnings about armv6 is missing.
- armv6 is required if your apps supports deployment targets below iOS 4.3.
- The latest Xcode 4.2 by default has architecture = $(ARCHS_STANDARD_32_BIT) which maps to armv7.
- Xcode 4.1 has the same env variable, but it map to armv6 and armv7.
Doing a armv6+armv7 in Xcode 4.2 requires some trickery...
A) add in "armv6" to the list of Architectures. However this breaks builds for Xcode 4.1 since "armv6" + $(ARCHS_STANDARD_32_BIT) = armv6 armv6 armv7 -> duplicate symbol errors
B) use the variable $(VALID_ARCHS) which maps to armv6 armv6 (and i386 for simulator builds)
Remove all architecture from xcode then it will take arm v6 and arm v7.
Remove environment variable $(ARCHS_STANDARD_32_BIT) from Architectures setting.
The add "armv6" and "armv7" to the list of Architectures.
If you're building your own libs - they need to have those settings too.