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.
Related
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.
Looks like after upgrading to xcode 7 beta 5 and iOS 9.0 beta 5, I can't create a static library that includes an armv7s slice.
lipo -info staticLibraryName says:
Architectures in the fat file: staticLibraryName are: armv7 i386 x86_64 arm6.
Adding armv7s to build settings alongside $(ARCHS_STANDARD) and setting Build Active Architectures Only to No doesn't not seem to do the trick like it did in xcode 6.
Any one else getting this ? Any way to produce the armv7s slice ?
If I release a static library without the slice, will my customers \ their end users be affected ?
You need set your Xcode setting: Build Setting -> Architectures, add $(ARCHS_STANDARD) & armv7s, Hope it works.
http://7xkptx.com1.z0.glb.clouddn.com/fwg4whet.png
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)"
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