I am trying to get a large (and working on Xcode 11!) project building in Xcode 12 (beta 5) to prepare for iOS 14. The codebase was previously in Objective-C, but now it contains both Objective-C and Swift, and uses pods that are Objective-C and/or Swift as well.
I have pulled the new beta of CocoaPods with Xcode 12 support (currently 1.10.0.beta 2).
Pod install is successful. When I do a build, I get the following error on a pod framework:
building for iOS Simulator, but linking in object file built for iOS, for architecture arm64
When I go run lipo -info
on the framework, it has: armv7s armv7 i386 x86_64 arm64.
Previously, the project had Valid Architectures set to: armv7, armv7s and arm64.
In Xcode 12, that setting goes away, as per Apple's documentation. Architectures is set to $(ARCHS_STANDARD). I have nothing set in excluded architectures.
What may be going on here? I have not been able to reproduce this with a simpler project yet.
Best Answer
Basically, you have to exclude
arm64
for the simulator architecture, both from your project and the Pod project,To do that, navigate to Build Settings of your project and add Any iOS Simulator SDK with value
arm64
inside Excluded Architecture.OR
If you are using custom
XCConfig
files, you can simply add this line for excluding simulator architecture.Then
You have to do the same for the Pod project until all the Cocoa pod vendors are done adding following in their Podspec.
You can manually add the Excluded Architecture in your Pod project's Build Settings, but it will be overwritten when you use
pod install
.In place of this, you can add this snippet in your
Podfile
. It will write the necessary Build Settings every time you runpod install
.