16

I'm trying to build a React Native project on a MacBook Pro with a M1 architecture, for iOS simulator.

The project built nicely on Intel architecture.

It also build on device and archive well on M1. But not on simulator.

I had this classical error when switching to the M1 chipset.

in /project-folder/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a(cryptlib.o), building for iOS Simulator, but linking in object file built for iOS, file '/project-folder/ios/Pods/OpenSSL-Universal/ios/lib/libcrypto.a' for architecture arm64

I added arm64 to excluded architectures.

I also added the following snippet but it also react the same way without it.

post_install do |installer|
  installer.pods_project.build_configurations.each do |config|
    config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
  end
end

Now I have:

/project-folder/ios/ProjectName.xcodeproj The linked library 'libPods-ProjectName.a' is missing one or more architectures required by this target: x86_64.

I tried to add x86_64 on the list of architectures of the project, with no results.

I'm building from Xcode IDE. This error message appears for all iPhones I tried: 8, 11, 12 and all targets I tried: iOS 9, 10 and 13.

ricardopereira
  • 9,557
  • 4
  • 53
  • 68
Xiiryo
  • 1,361
  • 1
  • 9
  • 31
  • Are you using any specific version of the `OpenSSL-Universal` pod? It looks like all of "i386 armv7 armv7s x86_64 arm64" slices are already included in the version 1.0.2.20 of the pod against the libcrypto library. So it could be a version conflict. – Ayan Sengupta Dec 19 '20 at 19:35
  • No. I think it is not linked with Open SSL, it is just that it is the first library that is called. This is an higher level issue. – Xiiryo Dec 20 '20 at 20:52
  • The issue with open SSL is solved when excluding arm64 – Xiiryo Dec 20 '20 at 22:49
  • Great! Any idea how did it solve itself since the open SSL binary already has arm64 slice in it. So I'm really curious. – Ayan Sengupta Dec 21 '20 at 13:59
  • I excluded arm64 both on Pods and project but I still have the same problem. @Xiiryo have u solved it somehow? I'm on a MacBook with Apple Silicon too. – DxW Dec 31 '20 at 11:29
  • Hi, not yet solved, I run on device for the time being. But it would be nice to have the simulators to explore the aspect on the different sizes. – Xiiryo Jan 01 '21 at 14:15

1 Answers1

25

I had the same issue and finally, I fixed it. There are 2 main reasons for the errors:

  1. arm64 architecture support & and Xcode 12 compatible version have not been provided by many popular third party libraries yet (like Firebase, AFNetworking, etc). Xcode 11 used to automatically translate building for arm64 for the simulator into building for x86_64, but now that arm64 is a valid simulator architecture (it’s the Apple Silicon architecture), that translation no longer occurs.

  2. Because the Valid Architectures build setting has been removed from Xcode 12, the Project file, opened in Xcode 12, will auto-generate a VALID_ARCHS macro in User-Defines, and this macro will make the build fail.

I follow all steps in this post: https://medium.com/@khushwanttanwar/xcode-12-compilation-errors-while-running-with-ios-14-simulators-5731c91326e9

Final step was updating all pods by running below command inside the project folder:

pod deintegrate
pod update

Then I exclude the arm64 for the Simulator architecture, both from main project and the Pod project.

Xcode build settings

Clean the project ( + + k) then run.

ricardopereira
  • 9,557
  • 4
  • 53
  • 68
Bek
  • 266
  • 2
  • 2