Running your app again after updating to Xcode 12

Abhinav Mallick
2 min readNov 18, 2020

What has really changed?

Apple has now launched its own CPU based Macs that run on arm64, so the simulators on those devices will require the frameworks to have arm64-apple-ios-simulatorarchitecture to be present.

What is causing my app to not run on the simulator?

  1. The introduction of arm64-apple-simulator architecture is to blame here. If you are using external libraries and the developers have not yet added the required architecture to their frameworks, the Xcode will simply not run it on any simulator.
  2. Some of the warnings are now errors in Xcode 12.
  3. No support for the user-defined string VALID_ARCHS

What we need to fix?

  1. Exclude the arm64 architecture for the simulator in your project:
    In your project’s Build Settings go to Exclude Architectures and for both Debug and Release add arm64 for Any iOS Simulator SDK . Remember to add it only for Simulator! If you have multiple projects do this for all of them.

2. Exclude the arm64 architecture for all the targets in your Pods project. You can do this manually, you’ll have to do this every time you pod install also if you have multiple external libraries, it will be very painful. So, just add the below code snippet to your Podfile and then pod deintegrate and pod install .

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

3. If you used to make use of the user-defined string VALID_ARCHS, just delete that. There is no support for it now in Xcode 12.

4. Some warnings are now changed to errors. Just follow the Xcode hint and change it! For me, the project had some unnecessary if let condition where the expected value will never be an optional.

That’s All!

I tried to keep it as short as possible so that you don’t waste any more time, that Apple doesn’t care about!

--

--