M1 Mac & Xcodeで「building for iOS Simulator, but linking in object file ... for architecture arm64」エラーの対処法


XcodeプロジェクトファイルにFirebaseをインストール後ビルドをしたら以下のエラーに引っかかった時の対処法

ld: in /Users/[ユーザー名]/[プロジェクト名]/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector(FIRAnalyticsConnector_a8eeba373b74508311b8b22b8d3202a6.o), building for iOS Simulator, but linking in object file built for iOS, file '/Users/[ユーザー名]/[プロジェクト名]/Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

開発環境

Xcode 12.3
M1 MacBook Air

なぜ、このようなエラーが発生するのか

arm64 アーキテクチャのサポートとXcode12互換バージョンは、多くの一般的なサードパーティライブラリ(Firebase、AFNetworkingなど)ではまだ提供されていません

とのことです。

対処法 ステップ①

まず、プロジェクトのBuild SettingsExcluded ArchitecturesDebugRelease
Any iOS Simulator SDK arm64を追加することでarm64を除外します。

対処法 ステップ②

ステップ②に関しては、手動でarm64を除外する方法と、podFile書き換え後にpod updateをして上書きする方法があります。

・手動でarm64を除外する方法

次にPodsのBuild SettingsExcluded ArchitecturesDebugReleaseにも
Any iOS Simulator SDK arm64を追加することでarm64を除外します。

・PodFile書き換え後、updateで上書きする方法

下記のコードをPodFileに追記し、pod updateを行う

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

対処法 ステップ③

プロジェクト.xcworkspaceを立ち上げ後、Command + Shift + K でクリーンします。

すると、シュミレーターで立ち上げることが出来ました。

参考

XCode 12, FIRAnalyticsConnector, Build Error
Xcode 12 Compilation Errors (While running with iOS 14 Simulators)



何か間違いやより良い方法がありましたら、優しく教えていただけると幸いです🙇‍♂️