Running your app again after updating to Xcode 12
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-simulator
architecture 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’sBuild Settings
go toExclude Architectures
and for both Debug and Release addarm64
forAny 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!