Apple Match O-Linker Error when testing on iPad 4th gen - ios

I'm using the Facebook iOS SDK the latest version, added AdSupport, Accounts and Social frameworks to my project along with the FacebookSDK framework. My project is targeted for iOS 5.1, works fine in the simulator, but when I try to test on my iPad 4th gen y get this:
ld: warning: directory not found for option '-L/Users/8vius/Projects/Work/Fonyk/Fonyk-iPhone/Fonyk/facebook-ios-sdk'
ld: warning: directory not found for option '-F/Users/8vius/Projects/Work/Fonyk/Fonyk-iPhone/../../Desktop/facebook-facebook-ios-sdk-6825350/build'
ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /Users/8vius/Projects/Work/Fonyk/Fonyk-iPhone/Fonyk/libGoogleAnalytics.a for architecture armv7s
Any idea how I can fix this issue?

Ok, the problem is because the Facebook SDK isn't updated and doesn't match my current architecture for testing. To solve this issue go to Project -> Build Settings and change the valid architectures to armv7 for Release, Ad-Hoc and Debug (or just for the one you need right now). and set Build Active Architecture Only to No

Related

XCode error when buiding for app store

Since the start of 2015 apple have new restrictions that say you must have 64-bit support and build with ios 8 SDK. I built my code with Unity for IOS, then opened XCode and opened the file I just created through Unity. I built it inside XCode fine with no errors. I then go to archive it and validate it. It then tells me about the new restrictions that I have mentioned above.
It says to use the default architecture to build a single binary. I go and change the architecture to suit this. Then I do a fresh build and it gives me an error saying "File is universal (2 slices) but does not contain a(n) armv7s slice". I researched this error and it said to just remove armv7s from the architecture. I did this and built again.
I then get the error "missing required architecture arm64 in file ..... undefined symbols for architecture arm64". I know this means that some of my libraries are not supported for arm64. I take out arm64 from architecture and then I am back to the start where it says I need to build for 64-bit.
Has anyone come across this type of problem before and may have a solution.
Many thanks in advance
You need to make a new build from Unity.From Player Settings -> Iphone -> Other settings -> Configuration . Under Scripting backend select IL2CPP and then under Architecture select Universal.

Make library support 32bit architecture and 64bit architecture ios

I created a objective-c library in Xcode 6.1. It supports 64 bit architecture. I added it to an old project with 32 bit support. It is crashing and giving me an error
ld: file is universal (3 slices) but does not contain a(n) armv7s slice
How can i update the library to support the old project?
Remove the support for any architecture armv7s from the project (target) -> Build Settings -> Valid Architectures:
Alternatively, you can set the flag for your debug configuration's
Change Build Active Architecure Only to Yes.
Hope this will work.
you can just add armv7s to the library's Target->Build Settings->Architectures along with ($_ARCHS_STANDARD)

App missing 64-bit support [duplicate]

I sent an app yesterday for review, with no problem. I then realized that I had a very little fix to do (changing the max zoom level of a map from 19 to 18, nothing else), so I removed the binary from iTunes Connect, and tried to resubmit.
Now I'm having this warning :
I don't understand why, as my architectures are :
architectures : armv7
valid architectures : armv6, armv7, armv7s, arm64
The app runs fine in the simulator. If I try to use the standard architectures (armv7, arm64) as recommended in the warning, then the app won't build and I get :
Undefined symbols for architecture x86_64
ld: symbol(s) not found for architecture x86_64
I'm using the lib route-me, and I set the same architecture settings.
Use "Standard architectures" like this:
Architecture: "Standard architectures" arm7, arm64
Valid Architectures: "arm64" , armv7...
Build Active Architecture Only - NO (specially... if your connected device is not arm64 compatible)
like this:
Additionally, unplugging iphones and ipads from the mac has been known to help, especially if they are 32-bit versions.
After confirming the correct architectures, make sure your device is NOT connected to your computer when ARCHIVING the final build to submit to the App Store.
The reason this warning appears is because the DEVICE you have connected is probably not arm64 compatible.
As Tony wrote, it's important to have in both lines those settings.
Since my (and obviously your) project was created yet before arm64 was added to standard, it is not reflected in "Valid Architectures" even if it is shown as Standard.
What I did:
I went to Project (vs. Target) configuration
Typed "arm64" in the Valid Architectures (it's automatically reflected in targets and schemas
After clean/build I even get some warnings about improper conversion of float to CGFloat, etc., so the settings obviously applied.
The validation warning disappeared too!
Unplug your physical device from Mac. In XCode on device list choose iOS Device and create Archive again. It worked for me.
Today I solve that problem with the following steps:
Building Settings:
Architectures: Standard architectures(arm7,arm64) - $(ARCH_STANDARD)
Valid Architectures: armv7 armv7s arm64
Clean and build your app with the iPhone connected
Disconnect your iPhone and check the top bar if is in "iOS Device"
Archive
Validate and Submit
Just Create a New Project using latest xCode version and find the Build settings. The new project created using latest version have 64 support by default.
Okay this was insane.
I tried every single answer. But it worked only when I placed arm64 before armv7 and armv7s in Valid Architectures.
P.S. : xcode version : 7.2
I solved the problem by changing,
Architectures: arm7,arm64
Valid architecture: arm7,arm64
Build active architecture only : Yes
I submitted success by config as the image:
(Archived with real device)
Got rid of every warning. Went through everything over and over. Found the one word answer here above.
"Build Active Architecture Only - NO (specially... if your connected device is not arm64 compatible)"
My iPad is not 64 bit. Put in NO for Build Active Architecture and my submission worked!
Change your iOS development target to at least 5.1.1 or alternatively delete the standard architectures setting and re-apply it. You might have seen a warning that arm64 is not compatible with your build target. On the overview page, check both the build and target "deployment target" settings. In my case, the target was 6.0, but the project was 5.0.
Also, check "Valid Architectures" in both your target and your project. I had the right settings on the project but not on the target. After this, it worked for me.
Switch between project/target on the overview page in the top left corner of the box.
Please check Build Active Architecture option. Set it to NO.
It works for me.

Error creating LLDB target at path, Xcode 6 GM seed,the screen stuck [duplicate]

I'm getting this error whenever I build in XCode 6 beta 4. It seems to be making my app insanely slow.
Warning: Error creating LLDB target at path
'/***/***/***/***.app'- using an empty LLDB target which
can cause slow memory reads from remote devices.
What exactly does this mean and how do I fix it?
Thanks in advance!
Did you use Architectures=$(ARCHS_STANDARD_32_BIT) and run your app on a 64 bit device? (iPhone 5S or iPhone 5S simulator)
Apple seems to be stricter with apps which don't support 64bit. So if there is no specific reason, I think it's better to include arm64 in your build architecture
NOTE ABOUT 64-BIT ARCHITECTURE
An app extension target must include the arm64 architecture in its Architectures build settings or it will be rejected by the App Store. Xcode includes this architecture with its “Standard architectures” setting when you create a new app extension target.
If your containing app target links to an embedded framework, the app must also include the arm64 architecture or it will be rejected by the App Store.
For more information about 64-bit development, see 64-Bit Transition Guide for Cocoa Touch or 64-Bit Transition Guide for Cocoa, depending on your target platform.
Source: https://developer.apple.com/library/content/documentation/General/Conceptual/ExtensibilityPG/ExtensionCreation.html#//apple_ref/doc/uid/TP40014214-CH5-SW1
This warning is solved by changing Build Settings :
Select Project -> Build Settings
Change 'Architectures' to 'Standard architectures (armv7, arm64) - $(ARCHS_STANDARD)'
This will prompt an alert stating iOS 5.1.1 and above are supported. Click 'Change Deployment Target to 5.1.1'
Repeat steps for Target (if not changed automatically)
Also, this is preferred build setting since Apple is forcing developers to build apps on 64 but architecture. Apple document Link
Double Check Build Settings => Valid Architectures for both Project and Target.
Mine used to say: arm64 armv7 i386 (The one causing the error was i386)
I replaced it to : arm64 armv7
I hope that helps.
In Xcode 6.4 , Swift 1.2. I had to edit both the Project and Target to the correct arm verisons (arm64, armv7 and armv7s). Take a look:
My "Architectures" included arm64 but I had to add arm64 to "Valid Architectures" in the target.
In my case I had to change Build Active Architecture Only to YES for the Debug configuration.

Getting Error : ld: file is universal (2 slices) but does not contain a(n) armv7 slice [duplicate]

I upgraded Xcode version and when using external static libraries, I get this message:
ld: file is universal (3 slices) but does not contain a(n) armv7s slice: /file/location for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Is there any way to bypass this and add support to the library if the developer of the library hasn't updated their library yet?
If you want to remove the support for any architecture, for example, ARMv7-s in your case, use menu Project -> Build Settings -> remove the architecture from "valid architectures".
You can use this as a temporary solution until the library has been updated. You have to remove the architecture from your main project, not from the library.
Alternatively, you can set the flag for your debug configuration's "Build Active Architecture Only" to Yes. Leave the release configuration's "Build Active Architecture Only" to No, just so you'll get a reminder before releasing that you ought to upgrade any third-party libraries you're using.
I've simply toggled "Build Active Architecture Only" to "Yes" in the target's build settings, and it's OK now!
Try to remove armv7s from project's "Valid architecture" to release from this issue for iOS 5.1 phone
I just posted a fix here that would also apply in this case - basically, you do a hex find-and-replace in your external library to make it think that it's ARMv7s code. You should be able to use lipo to break it into 3 static libraries, duplicate / modify the ARMv7 one, then use lipo again to assemble a new library for all 4 architectures.
Flurry Support for iPhone 5 (ARMv7s)
As I mentioned in yesterday’s post, Flurry started working on a version of the iOS SDK to support the ARMv7s processor in the new iPhone 5 immediately after the announcement on Wednesday.
I am happy to tell you that the work is done and the SDK is now available on the site.
use menu Project -> Build Settings ->
then remove armv7s from the"valid architectures".
If standard has been chosen then delete that and then add armv7.
In case this happens to someone. I built my own library to use with a third party code. While I was building it to deliver, I accidentally left my iPhone 4S plugged in, and so Xcode built my library only for the plugged architecture instead of following the project settings. Remove any plugged in devices and rebuilt the library, link it, and you should be all right.
Hope it helps.
In my case, I was linking to a third-party library that was a bit old (developed for iOS 6, on XCode 5 / iOS 7). Therefore, I had to update the third-party library, do a Clean and Build, and it now builds successfully.

Resources