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?
- 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.
- Some of the warnings are now errors in Xcode 12.
- No support for the user-defined string VALID_ARCHS
What we need to fix?
- Exclude the arm64 architecture for the simulator in your project:
In your project’s
Build Settingsgo to
Exclude Architecturesand for both Debug and Release add
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.
I tried to keep it as short as possible so that you don’t waste any more time, that Apple doesn’t care about!