I encountered an issue since I updated to Xcode 10. Archiving my project leads to an infinite stuck. As I found in this Stackoverflow topic, we can fix this by removing ARMv7 from valid architectures. It did work for me, but it seems super weird : does it mean this is the end for ARMv7 iOS architectures ? As I could see it in this very useful matrix, devices like iPhone 5 or iPhone 5C use ARMv7 and, when they are up-to-date, use iOS 10.3.3 (which is kind of recent). So, this is the end ? We can not build apps for them anymore ?
If there is a way to continue to archive with both ARM64 ans ARMv7 architectures, I would be glad to know how.
Thanks for your concern.
Related
After switching to Xcode 10, I've been getting invalid bitcode signature when I try to archive.
After hours of struggle, I stumbled upon this and was able to archive after removing armv7 from valid architectures.
I really cant release the app with armv7 removed since there are lot of users who uses iPhone 4s & will be in dark if I do this.
I use both static and dynamic frameworks in my application and all of them support armv7 architecture by default.
Did anyone else face this issue? Is there a workaround to include armv7 as valid architecture?
Set Build Active Architecture Only is Yes
I am experimenting with Xcode 6 Beta, and noticed armv7s disappeared from Standard Architectures. I did scan through Xcode 6 release notes, but didn't see changes on that. Can anyone confirm this change?
Xcode 5.1.1:
Xcode 6 Beta:
Update
There is a thread on iOS 8 Beta forum discussing this topic as well. https://devforums.apple.com/thread/244407?tstart=0
Also note #ThomasW had an answer on adding armv7s to Architectures.
I also filed a bug on this and got a reply stating that this is intentional. If you want to build for armv7s you have to add the architecture manually. I have now idea why this change was made. I'll update this if I get additional information.
Update from the dev forums:
The reason for including armv7s would be marginal backward compatibility. But the general differences between armv7 and armv7s instruction sets are minor. So if you choose not to include armv7s, the targeted armv7 machine code still runs fine on 32 bit A6 devices, and hardly one will notice performance gap.
-- Zhou Yang
From #vladof's post on the Apple forum, if you need to include armv7s support you need to add it manually. You can do so by changing the architecture setting to be like this:
You may want to do this if you're building a library and users are expecting the armv7s slice to be available.
Please note that this answer was made at very early stage of the quest, has been unchecked for answer when Xcode 6.0 GM came out. This is meant only for tracking, refer to other answers for detailed information.
This appears to be a bug of Xcode 6 Beta, according to this thread on Apple forum. A bug has been opened.
I have an iPhone app (for iOS 7 & above) which uses the ZBar SDK. I'm struggling to update it for iOS 7 using Xcode 5.1.1.
I was getting this arm64 build error, but I've managed to fix that by recompiling libzbar.a according to the instructions here.
The app now archives successfully. However, when I try to validate it in the Xcode Organizer I get the following error: "This bundle is invalid. Apps that include an arm64 architecture are required to include both armv7 and armv7s architectures."
I have "Standard architectures (armv7, armv7s, arm64)" set for my project's Architectures and "arm64 armv7 armv7s" for the Valid Architectures.
I not sure what else to try at the moment, so any help would be much appreciated.
Unplugging my iOS device and re-archiving the build helped me.
I could not find anything that would solve this problem. After going around in circles for several days, I removed every trace of the ZBar SDK from my app and instead used Apple's AVFoundation for QRCode support. This option was not available prior to iOS 7, but now that it is life becomes a whole lot easier!
I tried debugging my ios 6.1 project on the new iPad 4 (A6X, armv7s instruction set). However the build failed with
No architectures to compile for (ONLY_ACTIVE_ARCH=YES, active arch=armv7s, VALID_ARCHS=armv6 armv7 i386).
I'm using XCode5-DP6. App debugs on the latest iPod touch (armv7) and on both iPad and iPhone simulators (both iOS 6.1 and 7.0).
It was my understanding that code built for arm7 should build and run on arm7s, since apps between iPad3 and iPad4 are the same? Any clue what I'm doing wrong?
The last product I know of with armv6 is iPhone 3G, even iPhone 3GS is with armv7.
Apple has removed the support for armv6 in a way you cannot compile to that processor architecture and even if you would successfully compile you would have a problem submitting the app to Apple (the build won't be accepted automatically). Moreover, You cannot compile to an OS below 4.3 (it would give you errors also) so there are some restrictions - I'm saying that because I think old devices also can't support new OS. So, it is just a matter of days that there won't be any old iPhone with an OS you can support with Apple's platform.
So, my recommendation is to change the build and valid architectures to armv7, armv7s & i386 (if you need it).
This shall work and you really don't have a choice. you should know that most users doesn't own those old devices. If you still want to support those maybe you should consider add a new app specific for "new" devices, but know that you couldn't update the old version because of what explained earlier.
After updating the Xcode, my iPad app doesn't compile.
It has a library called Flurry and the compiler says:
"ld: file is universal but doesnt caontain armv7s slice...libFlurry.a"
So, it seems to me Flurry has not been compiled including the armv7s (or iPhone 5) architecture.
Hoever, my app it's only for iPad (iPad 1, 2 and 3)
As far as I know, the armv7s belongs to the iPhone 5 architecture, but none of the current iPads have that architecture.
Am I right?
Does it mean I can change "$(ARCHS_STANDARD_32_BIT)" by "armv7"?
I did it and now the program works perfectly on my iPad, but not sure if this is right, because perhaps the not all iPads are armv7.
Is there any constant for only iPads architectures?
yes, because flurry lib was compiled for armv7 only so flurry lib will not support to armv7s.
So making code work with armv7s, you need to update flurry lib.
But if you just want to run app in armv7 then remove armv7s from build setting.
thanks