I use cocoapods and download Aviary SDK from the website and follow all the instructions from website. However, I still get an error below:
Undefined symbols for architecture arm64:
"_OBJC_CLASS_$_AFPhotoEditorController", referenced from:
Any idea how to fix it? Is the libAviarySDK.a compiled for 64bit architecture?
It appears that the library does not have an arm64 compiled binary. You should change your build settings to only build for armv7 and armv7s if you want to continue using this SDK.
If your app requires arm64 support, then you won't be able to use this SDK until its authors provide an arm64 compiled version.
AviarySDK 4.2.1 now supports arm64 architecture.
# lipo -info AviarySDK.framework/AviarySDK
Architectures in the fat file: AviarySDK.framework/AviarySDK are: i386 armv7 armv7s arm64
aviary 3.3.7 is compatible with iOS7. So i suggest you can try to change Architectures of your project to "Standard architectures (armv7, armv7s)"
Related
I am trying to compile an app on an iPhone 6 device under iOS 11.4.
This app uses a framework of my own compiled for architectures armv7 and arm64 (confirmed with lipo -info) and targetted for iOS8+.
In this framework, I use kSecImportExportPassphrase, SecPKCS12Import and kSecImportItemIdentity from the Security.framework of iOS.
When I compile in Xcode 10.2, I get this error:
If someone get an idea of what is going on?
It is like the Security.framework is not compiled for arm64 which is quite impossible.
Regards.
A couple of things to try:
Set Architectures to armv7 armv7s, Build Active Architecture Only to NO, for every target in the project, including every one in Pods:
ARCHS = armv7 armv7s
VALID_ARCHS = armv6 armv7 armv7s arm64
Clean project, shutdown Xcode, then find your application in ~/Library/Developer/Xcode/DerivedData/ and move it trash then empty it.
I'm having a question about the compilation on iOS. I'm generating a framework and it used to generate arm64, armv7 and armv7s (+ simulators with lipo and fun).
The thing is, armv7s is not present in the binary anymore.
Architectures in the fat file are: i386 x86_64 armv7 arm64
But I clearly asks in my XCConfig for VALID_ARCHS = arm64 armv7 armv7s. I verified that the XCConfig was indeed used and not overridden.
I tried various google search but most of the time we find people not understanding why their app is not compiling with the wrong version of the lib.
So now, I'm coming here, the last chance to understand why no armv7s lib is being created for my framework. Maybe it's as simple as "it's not possible anymore".
XCode has dropped support for armv7s since XCode 6 I think, the ${ARCHS_STANDARD} now only include armv7, arm64 and simulator will include i386, x86_64, so your fat static library/framework will only include them.
To support armv7s, add it under ${ARCHS_STANDARD} in Architectures field and build again.
I have created a project that uses linphone successfully in armv7 and arm64. When I try to add armv7s files included at the link below, it doesn't let me support arm64. How can I easily add it?
https://github.com/onmyway133/linphone-iphone/tree/master/liblinphone-sdk/armv7s-apple-darwin
You need to build liblinphone SDK for armv7s as well by running:
./prepare.py arm64 armv7s armv7 [your other options]
make
But I'm afraid armv7s is not supported by Linphone yet, so you won't be able to do so. You should try reach them on their mailing list.
I have an old project, that I recompiled for an uodate, and it is now showing this error message:
…. missing required architecture x86_64 in file myLibrary.a ….
I have tried various tricks that I could find on the net after searching on missing required architecture x86_64 in file, but with no success. Anyone knows how to properly handle the issue?
I am using Xcode Version 7.0.1.
Running:
lipo -info myLibrary.a
shows:
Architectures in the fat file: myLibrary.a are: armv7 arm64
I have been able to add armv7s but not x86_64.
You are trying to build a universal library and it does not have all the architectures in it armv7 armv7s i386 x86_64 arm64. Compiler is complaining when you build with 64 bit architecture.
To fix this - Add the following to your architecture settings of static library project:
This needs manual addition of architectures something like this:
Build the library with these architecture both on device & simulator, create fat library using lipo -create -output "myLibrary.a" ./Simulator/myLibrary.a ./Device/myLibrary.a and use it.
I'm using the new OData4ObjC framework for IOS 6, but when I try to run it keeps telling me this error.
I have followed the instructions found here https://github.com/ElizabethDuncan/OData4ObjC.
I also changed the framework to an older one to see if that is the problem. I don't know if I'm missing something.
In the future, to check what architectures a library/executable is compiled for you should use the lipo -info command. Like so:
mitchellge$ lipo -info /Users/mitchellge/Downloads/libMSODataLib.a
--> Architectures in the fat file:
/Users/mitchellge/Downloads/libMSODataLib.a are: armv6 armv7
As you can see, the library (libMSODataLib.a) that is bundled with OData4ObjC is compiled for the armv6 and armv7 architectures and not the armv7s. One fix is to go into your project's build settings and change Valid Architectures from armv7 armv7s to just armv7