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
and possibly also the error:
Unable to load standard library for target 'arm64-apple-ios11.0'
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.
69 Answers 69
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
arm64inside Excluded Architecture.
OR
If you are using custom
XCConfigfiles, you can simply add this line for excluding simulator architecture.EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64Then
You have to do the same for the Pod project until all the Cocoa pod vendors are done adding following in their Podspec.
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' } s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64' }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.post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end
32 Comments
[sdk=iphonesimulator*] after EXCLUDED_ARCHS, XCode will fail to find your pods when building for an actual device since none of the pods will be built for arm64.post_install do |installer| section in most Podfiles due to flipper. Paste the inner section installer.pods_project.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end behind the flipper_post_install(installer) line.building for iOS Simulator, but linking in object file built for macOS, for architecture x86_64. How to fix it?TL;DR;
Set "Build Active Architecture Only (ONLY_ACTIVE_ARCH)" to Yes for your libraries/apps, even for release mode.
While trying to identify the root cause of the issue I realized some fun facts about Xcode 12.
Xcode 12 is actually the stepping stone for Apple silicon which unfortunately is not yet available (when the answer was written). But with that platform we are going to get an arm64-based macOS where simulators will also run on the arm64 architecture unlike the present Intel-based x86_64 architecture.
Xcode usually depends on the "Run Destination" to build its libraries/applications. So when a simulator is chosen as the "Run Destination", it builds the app for available simulator architectures and when a device is chosen as the "Run Destination" it builds for the architecture that the device supports (
arm*).xcodebuild, in the Xcode 12+ build system considersarm64as a valid architecture for simulator to support Apple silicon. So when a simulator is chosen as the run destination, it can potentially try to compile/link your libs/apps againstarm64based simulators, as well. So it sendsclang(++)some -target flag likearm64-apple-ios13.0-simulatorin <architecture>-<os>-<sdk>-<destination> format and clang tries to build/link against an arm64-based simulator that eventually fails on an Intel based Mac.But
xcodebuildtries this only for Release builds. Why? Because, "Build Active Architecture Only (ONLY_ACTIVE_ARCH)" build settings is usually set to "No" for the "Release" configuration only. And that meansxcodebuildwill try to build all architectural variants of your libs/apps for the selected run destination for release builds. And for the Simulator run destination, it will includes bothx86_64andarm64now on, sincearm64in Xcode 12+ is also a supported architecture for simulators to support Apple silicon.
Simply putting, Xcode will fail to build your application anytime it tries the command line, xcodebuild, (which defaults to release build, see the general tab of your project setting) or otherwise and tries to build all architectural variants supported by the run destination. So a simple workaround to this issue is to set "Build Active Architecture Only (ONLY_ACTIVE_ARCH)" to Yes in your libraries/apps, even for release mode.
If the libraries are included as Pods and you have access to .podspec you can simply set:
spec.pod_target_xcconfig = { 'ONLY_ACTIVE_ARCH' => 'YES' }
spec.user_target_xcconfig = { 'ONLY_ACTIVE_ARCH' => 'YES' } # not recommended
I personally don't like the second line since pods shouldn't pollute the target project and it could be overridden in the target settings, itself. So it should be the responsibility of the consumer project to override the setting by some means. However, this could be necessary for successful linting of podspecs.
However, if you don't have access to the .podspec, you can always update the settings during installation of the pods:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings["ONLY_ACTIVE_ARCH"] = "YES"
end
end
end
One thing I was concerned about that what will be the impact of this when we actually archive the libraries and applications. During archiving applications usually take the "Release" configuration and since this will be creating a release build considering only the active architecture of the current run destination, with this approach, we may lose the slices for armv7, armv7s, etc. from the target build. However, I noticed the documentation says (highlighted in the attached picture) that this setting will be ignored when we choose "Generic iOS Device/Any Device" as the run destination, since it doesn't define any specific architecture. So I guess we should be good if we archive our app choosing that as a run destination.
11 Comments
I found a solution! SwiftUI Previews not working with Firebase
If you set excluded architectures for the simulator to arm64 it will compile.
6 Comments
The proposed answers are outdated/incorrect.
You should initially try to update both CocoaPods and the dependencies for your library/app, and then, if that doesn't work, contact the vendors of any dependencies you are using to see if they have an update in progress to add support for arm64 Simulator slices on M1 Macs.
There are a lot of answers on here marked as correct suggesting that you should exclude arm64 from the list of supported architectures. This is at best a very temporary workaround, and at worst it will spread this issue to other consumers of your libraries. If you exclude the arm64 Simulator slice, there will be performance impacts on apps that you're developing in the Simulator (which in turn can lead to reduced battery time for your shiny new M1 kit while you're developing your amazing ideas).
1 Comment
The Valid Architectures build setting has been removed in Xcode 12. If you had values in this build setting, they're causing a problem and need to be removed.
I was able to "clear out" the VALID_ARCHS build setting by adding it back in as a user-defined build setting (with no values), running the project (which failed), and then deleting the VALID_ARCHS build setting. After that, I was able to run on the simulator.
My Architectures build setting is Standard Architectures.
You can add a user-defined setting from the plus button in Build Settings:
9 Comments
Hidden Gem in all these answers
I had changed "Excluded Architectures" in my target for the main project, but not for the PODS project. It is a truly hidden gem. I have been with this problem for weeks now.
6 Comments
Preface
When you build an app, you build it for a specific 'platform' and 'CPU Architecture' combination.
iOS Platforms:
- iOS device
"generic/platform=iOS" - Simulator
"generic/platform=iOS Simulator"
Note: There a whole lot more platforms. For brevity I’m just focused on iOS platforms. Otherwise there are macOS, watchOS, tvOS, visionOS platforms.
CPU Architectures:
- arm64
- x86_64
This is because a macOS vs iOS vs iOS simulator will use different libraries. See How does building for iOS device and simulator actually differ?
And different CPU Architectures use different CPU instructions.
This ultimately means the built binary and the environment (device/simulator) you're running it in, will need to match. Otherwise some system libraries won't exist on the operating system, or the CPU instructions can't get processed.
This is also why when you switch from simulator to real device, often Xcode can't do the right thing, so you have to clean build so Xcode adjusts its platform from 'simulator' to 'real device'.
Where are these settings and who changes them?
The configuration for this is in Xcode Build Settings. They affect the flags sent to the compiler. Usually Xcode does things correct and you don’t need to make any adjustments. In certain cases it doesn’t or someone (app creator, library creator, library consumer, package manager i.e. someone who makes changes into the Podfile) has tweaked these settings in a way that things get misaligned.
Will you always be building for one combination?
No. If you're using a Release config, then you'll end up archiving your product for BOTH arm64 and x86_64 architectures.
During the archive process (often in your CI/CD) then things will fail because the simulator architectures are selected as well.
Yet a 'Debug' build won't attempt to build for a different platform or architecture. It either builds for the (physical) device or simulator architecture.It prioritizes 'development speed' over 'complete correctness'.
The default Xcode ONLY_ACTIVE_ARCH settings for this are:
I have an Intel MacBook. If I don't exclude any architecture and platform, what will happen?
If you're building a debug config, then it will only build for the CPU architecture of the destination's platform. Meaning:
- If you're building into your iPhone, you'll just need to support ARM64
- If you're building into a simulator, you'll just need to support X86_64
If you're building a release config, then it will:
- Build for both platforms and all possible architectures.
I have an M1 MacBook. If I don't exclude any architecture and platform, what will happen?
If you're building a debug config, then it will only build for the CPU architecture of the destination's platform. Meaning:
- If you're building into your iPhone, you'll just need to support ARM64
- If you're building into a simulator, you'll just need to support ARM64
- Alternatively you can enable Rosetta for Xcode. In that case if you're building into a simulator, then you need to support X86_64 as well.
If you're building a release config, then it will:
- Build for both platforms and all possible architectures.
Why is it different for Release builds?
During active development, you want to build things fast. It doesn't make sense for you to actively build architectures you don't need to use. That means if you're building into a device, then you only want to build for that platform-architecture combo. You don't want to build the other combinations.
However if you're releasing it — for others. Then because you don't want to limit/dictate how they build your app, then you have to build for all possible combinations and make sure your framework compiles for all of them.
For an app it may make less sense to make an archive for the simulator platform, however for a framework, your consumer is another developer. That developer will be building your framework into a simulator and into a real device. Hence you need to support both platforms and architectures.
Is CocoaPods the source of the problem?
It depends. If the pod has excluded a certain architecture, and you're trying to build for that architecture, then you have to ask the pod owner to not excluded it.
Otherwise if all of your pods are supporting the given platform/architecture that you're trying to build for, then it's a problem from within the code you you wrote yourself in your host app.
Solution
Update pre-compiled libraries with Apple silicon support
If the library named in the error message is from a vendor, see Update pre-compiled libraries from vendors. If you have source code for the library, rebuild the library as an XCFramework with support for the simulator on Apple silicon. To learn how to build an XCFramework, see Creating a multiplatform binary framework bundle.
Update pre-compiled libraries from vendors
If the library producing the build error is a pre-compiled library from a vendor and you don’t have the source code, contact the vendor for an updated XCFramework supporting Apple silicon. If an update isn’t available from the vendor, temporarily use the EXCLUDED_ARCHS build setting to exclude arm64 for the simulator SDK as shown in the figure below. Do not exclude arm64 for any other SDK.
From Docs
More Questions in regard to the outcome of the solution:
What happens if I exclude ARM64 for the 'iOS Simulator' Platform?
You won't be able to build into M1 simulators directly. You'd have to Use Xcode with Rosetta on M1 then. Which is a hack and is slightly slower.
What happens if I exclude X86 for the 'iOS Simulator' Platform?
You won't be able to build into Intel based simulators. Nor you'd be able to build into a simulator using Rosetta.
What happens if exclude ARM64 for the 'iOS' Platform?
You won't be able to build into physical devices. Nor archive for them. Terrible idea!
So I should exclude architectures?
Strive for your app, including all of its pre-compiled libraries, to always build for the complete set of architectures defined by the default value of the ARCHS build setting. Only use the EXCLUDED_ARCHS build setting on targets where the final released app is not using the target’s functionality on a specific architecture, such as a Mac app that only supports a legacy feature on Intel-based Mac computers. Do not modify the ARCHS build setting to achieve the same result.
Additionally in big teams, some developers may be on an M1, while some others are on older Intel based MacBooks. You never know maybe some day there'd be an M5 Macbook, that will have a distinct architecture. So it's good to be considerate of how you make your project/product/framework compatible for your own devs and your library consumers.
Do we have an iOS device with Intel X86_64?
Such a thing doesn't exist.
How do I inspect a binary?
You can use either lipo, file or dyld_info.
lipoandfileonly give you architecture information.dyld_infogives you architecture, platform information and more
See comparisons a simple inspection on the terminal app binary:
Remember within an XCFramework there will be usually two or more binaries. Example if we just used lipo -info we have to do it on both binaries of our library:
lipo -info <path-to-binary>
On the arm64 directory within an xcframework packaging, I see:
Non-fat file: /Users/mfaani/Video.xcframework/ios-arm64/Video.framework/Video is architecture: arm64
For the sims I see:
Architectures in the fat file: /Users/mfaani/Video.xcframework/ios-arm64_x86_64-simulator/Video.framework/Video are: x86_64 arm64
You can go into your mac's /Applications, right click; 'show Package Contents' for any app; find the app's associated binary. And then inspect it using lipo.
To be clear, a framework or an app can both be inspected with lipo. Similarly if you access the build folder on the simulator, you can inspect the binary as well.
What's the difference between an XCFramework and a FAT binary?
- A FAT binary, is just a binary — with two (or more) architectures combined into a single binary. It's just named FAT because it's fattened. Its other names are 'multi-architecture binary' or universal binary.
- An XCFramework is just a structured folder, a wrapper. It has distinct folders per platform. Within each folder there's a binary. That binary can be FAT binary or non-FAT (single architecture).
Also note, a FAT binary can be either a framework or the binary of an app. An XCFramework is just a framework. It's never the app itself.
Does my app get bloated with all the other platforms-architecture combinations I don't need?
XCFramework won't bloat app store submissions, because an archive for the iOS device will just pick up each framework from a directory that's isolated from simulator platform.
However with FAT binaries, given that it was just a single binary, you had to thin/slice the dependencies before submitting to Apple store. Otherwise you'd get the following error:
Unsupported Architecture. Your executable contains unsupported architecture '[x86_64, i386]'."
For more on that and its previous solution, see here
To be perfectly clear, this was an issue in pre-xcode 12. But not every project setup would face this. You'd only face this if you had some pre-compiled dependency from a vendor (who didn't share their source code, but just shared the FAT binary so you can build the app for both device and sim), otherwise if you had access to the source code then your archive wouldn't contain compilations for both architectures. It would only contain binaries for targeted architecture.
Also see this great blog post for about some more details and historical context.
What does the Folder structure of a FAT look like?
It's just a binary. It's not a folder. The binary works for two or more architectures.
What does the Folder structure of an xcframework look like?
ios-arm64
- binary
ios-arm64_x86_64-simulator
- (FAT) binary
If an XCFramework is made to work with mac Catalyst then the folder structure would be like:
ios-arm64
- binary
ios-arm64_x86_64-simulator
- (FAT) binary
ios-x86_64-maccatalyst
- binary
For a more comprehensive list of possible platforms. See XCFrameworsk: Demonstration of creating and integrating xcframeworks and their co-op with static libraries and Swift packages
Why doesn't my vendor support ios-arm64-simulator?
It could be for a number of reasons.
- migration effort: Often it's just that when the compiled they didn't have an M1, and it's been a long time since they've compiled and if they compile they have to make some changes. Like you have to understand it's been years that that there wasn't a need for a new architecture-platform combination. So this is new and not everyone understands it. The fact that Swift is now ABI compatible with its previous versions reduce the need for framework owners to recompile their app with every new Swift release. So they could go on years without the need to recompile...
- limitation: The pre-compiled library depends on another pre-compiled library which isn't compiled for arm64-sim.
- The owner of the framework doesn't have an Apple Silicon (arm64) machine. Or the person who knows about those stuff has left the company.
Any last words?
Make sure you look into ALL Project AND Target AND Pod Project AND Pod Target settings. If one of them excludes a certain architecture then you can't build your app for that architecture. Often this could be in your Podfile.
Or if the pod/framework is precompiled in a totally different repo (or maybe not owned by your organization), then the settings that you have in the other repo, are what matters for that individual framework.
If you pay attention to the error message you get, it should be easy to navigate your way to the target that doesn't support. Once you identify the target, then you have to identify when/where it gets compiled using the notes in the two paragraphs above.
2 Comments
file /path/to/executable is another option for listing the contained Instruction Set Architecture (ISA) slices.Easy fix
- Right click on xcode in Applications folder
- Get info
- Select "Open using Rosetta"
Run.
4 Comments
4 Comments
After trying and searching different solutions, I think the most safest way is adding the following code at the end of the Podfile
post_install do |pi|
pi.pods_project.targets.each do |t|
t.build_configurations.each do |bc|
bc.build_settings['ARCHS[sdk=iphonesimulator*]'] = `uname -m`
end
end
end
This way you only override the iOS simulator's compiler architecture as your current cpu's architecture. Compared to others, this solution will also work on computers with Apple Silicon.
Comments
For me the following setting worked:
Build Settings → Excluded Architectures.
I added "arm64" to both Release and Debug mode for the "Any iOS Simulator SDK" option.
Comments
As of Sep 19, 2022, none of the existing answers worked for me. Most answers suggests to exclude arm64 from build settings, after this is done, it gives fatal error: module map file not found
What worked for me is to open Xcode using Rosseta,
- Right click on Xcode in applications folder
- Get Info
- Check Open using Rosetta
- Open Xcode
- Open project
- Clean build folder
- Run project
By opening Xcode using Rosseta, no other build settings or configurations are needed.
This is probably not a long time solution, but for quickly addressing the issue. After upgrading to MAC OS 13.5 with Xcode 14.3.1, there is no more open with Rosseta option anymore, but you do the following to run it on Rosseta.
- Go to "Product" in the menu bar
- Destination
- Destination Architectures
- Show both
- Pick a simulator from the device dropdown menu that has Rosseta next to it.
- Run project.
References:
1 Comment
Go to Targets section, select each target and do the following:
- Set Build Active Architecture Only to YES
- Add Excluded Architectures and set its value to arm64 (See attached)
- Set Active scheme (on toolbar next to project name) to any iOS Simulator
- Clean Build folder from Product Menu and build.
1 Comment
On the new Mac OS to solve the problem you should run using rosetta on Xcode
go to:
Xcode -> Product -> Destination -> Destination Architectures -> Show Both
Now you will have a rosetta simulator for all of your simulators
Run your code with one of the rosetta simulators and you are good to go
Comments
Xcode Version 13.2.1 and macOS Monterey 12.0.1
Almost everybody is facing the same issue with old projects and pods after switching to new M1 chip system.
"in /Users//Desktop/_iOS_app/Pods/iOS/framework/(CLSInternalReport.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/y/Desktop/_iOS_app/Pods/iOS/.framework/for architecture arm64"
I have come to a solution which is working perfectly.
First thing first, to all the developer who are suggesting exclude arm64 for your project will work yes it will compile but after installation when you try to open it, it will show a popup with the message, "the developer of this App needs to be update it to work with this version of iOS". This is because as per apple "In iOS 11 and later, all apps use the 64-bit architecture" and if you exclude arm64 for your project it will not open App on iOS 11 and later.
App will not open in iOS 11 and later if exclude arm64 and will show this popup
So instead of selecting whole project only excluded architectures for the simulator to arm64.
Steps: On top of project files, Select target > build setting > architecture > excluded architecture. now add select "any iOS simulator SDK" and give it a value arm64.
See the image below for refrence.
Comments
If you have trouble in Xcode 12 with simulators, not real device, yes you have to remove VALID_ARCHS settings because it's not supported anymore. Go to "builds settings", search "VALID_ARCHS", and remove the user-defined properties. Do it in every target you have.
Still, you may need to add a script at the bottom of your podfile to have pods compiling with the right architecture and deployment target:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings.delete 'IPHONEOS_DEPLOYMENT_TARGET'
config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
end
end
end
Comments
I solved the problem by adding "arm64" in "Excluded Architectures" for both the project target and pod target.
Xcode → Target Project → Build Setting → Excluded Architectures → *"arm64"
Xcode → Pod Target → Build Setting → Excluded Architectures → *"arm64"
1 Comment
I found that
- Using Rosetta (Find Xcode in Finder > Get Info > Open using Rosetta)
Build Active Architecture Onlyset toYESfor everything, in both Project and Target- (You might not need it, read comment below) And including this in the
podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings["ONLY_ACTIVE_ARCH"] = "YES"
end
end
end
worked for me.
We had both Pods and SPM and they didn't work with any of the combinations of other answers. My colleagues all use Intel MacBooks and everything still works for them too!
1 Comment
After upgrading to Xcode 12 I was still able to build for a real device, but not the simulator. The Podfile build was working only for the real device.
I deleted VALID_ARCHS under Build Settings > User-Defined and it worked! Bashing my head for some time before finding this.
Comments
Starting from Xcode 14.3, simply do this. Go to Product -> Destination -> Destination Architectures and select show Both. So now you can see Rosetta simulators on your destination.
Comments
1.Add arm64 to Build settings -> Exclude Architecture in all the targets.
2.Close Xcode and follow the steps below to open
- Right-click on Xcode in Finder
- Get Info
- Open with Rosetta
Comments
I was having issues building frameworks from the command line. My framework depends on other frameworks that were missing support for ARM-based simulators. I ended up excluding support for ARM-based simulators until I upgrade my dependencies.
I needed the EXCLUDED_ARCHS=arm64 flag when building the framework for simulators from the command line.
xcodebuild archive -project [project] -scheme [scheme] -destination "generic/platform=iOS Simulator" -archivePath "archives/[scheme]-iOS-Simulator" SKIP_INSTALL=NO BUILD_LIBRARY_FOR_DISTRIBUTION=YES EXCLUDED_ARCHS=arm64
1 Comment
-destination "generic/platform=iOS Simulator". This leads to building for all available architectures, which includes arm64 since Xcode 12.Xcode 12
Removing VALID_ARCH from Build settings under User-Defined group work for me.
2 Comments
If you’re encountering issues running a project on the simulator in Xcode 16 due to a third-party framework, and you’re using an M1 or later Mac, try the following steps:
1. In Xcode, go to Product > Destination > Show All Run Destinations.
2. Select a Rosetta Simulator for your Mac.
This can help resolve compatibility issues with certain third-party frameworks.enter image description here
1 Comment
I believe I found the answer. Per the Xcode 12 beta 6 release notes:
"The Build Settings editor no longer includes the Valid Architectures build setting (VALID_ARCHS), and its use is discouraged. Instead, there is a new Excluded Architectures build setting (EXCLUDED_ARCHS). If a project includes VALID_ARCHS, the setting is displayed in the User-Defined section of the Build Settings editor. (15145028)"
I was able to resolve this issue by manually editing the project file (I could not figure out how to remove the item from the project file using Xcode) and removing all lines referring to VALID_ARCHS. After that, I am able to build for the simulator fine.
1 Comment
I was facing the same issue and trying to launch a React Native app on an M1 Mac. Note that my Intel Mac with the same project worked well without this error.
What solved the problem for me was to force Xcode to open through Rosetta.
To achieve this:
Right click on Xcode in Applications folder* → Get Info → check 'Open using Rosetta' checkbox.
1 Comment
Go to finder -> Applications -> Xcode -> Right click on Xcode -> Select open using rosetta
1 Comment
Please, don't forget to clean the build folder after you add arm64 to excluded architecture.
You can do that by going to Menu > Product > Clean Build Folder or simply Command+Shift+K.
2 Comments
Please make sure to provide the code or specific error message you are encountering, as it will help in providing a more accurate solution.
Regarding the provided information, it seems like you are trying to change the architecture of your app. To resolve this issue, you can follow the steps below:
Step 1: Open your project and navigate to the "Build Settings" tab.
Step 2: In the "Excluded Architectures" section, select "Yes" for the "Change Release" option.
Step 3: Under the "Debug" and "Release" tabs, click the "+" button and select the iOS simulator SDK.
Step 4: Choose "arm64" as the architecture for both debug and release configurations.
Please note that the specific steps may vary depending on your development environment and tools. If you encounter any issues or need further assistance, feel free to provide more details for a more accurate solution.
Comments
Updates: Oct 2020
You can simply set arm64 only for Debug > Simulator - iOS 14.O SDK under Excluded Architecture.
2 Comments
arm64 is excluded
Get Info, and check theopen using rosettaoption. Relaunch Xcode or CLIarm64to excluded architectures (Build Settings) (3) Clean Build Folder (4) Run app