M1チップのMacで「linker command failed with exit code 1 ('' for architecture arm64)」エラーが出る場合の解決方法
スポンサーリンク

Apple Silicon(M1チップ)のMacでビルドエラーが発生したときの解決方法

Apple Silicon (Apple M1チップ)のMac mini(macOS Big Sur)でCocoaPodsを使用したプロジェクトのビルド時にエラーが発生しました。

シミュレーターでのビルドでerror: linker command failed with exit code 1

ヒーラー
従来のMacで成功実績のあるプロジェクトに対してビルドエラーが発生したので、M1チップが怪しい

問題

従来のMacbookで実績のあるpodfileでpod installし、シミュレーターでビルド実行したところ、以下エラーが発生しました。

ld: in /.../Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector(...), building for iOS Simulator, but linking in object file built for iOS, file '.../Pods/FirebaseAnalytics/Frameworks/FIRAnalyticsConnector.framework/FIRAnalyticsConnector' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

FIRAnalytics(Firebase)、arm64辺りがキーワードですね。

解決方法

どうやら多くの一般的なサードパーティライブラリでは、arm64のアーキテクチャのサポートとXCode12互換バージョンが提供されていないということです。
上記の例ではFirebaseAnalyticsでした。

サードパーティ側の対応を待つこともありますが、
今すぐできる対応としては、プロジェクト設定のシミュレーターの除外アーキテクチャーに、arm64を設定します。具体的には以下のとおりです。

「プロジェクト」の「Build Settings」の「Excluded Architectures」の項目を見つけます。
検索すると早いでしょう。

「Excluded Architectures」の「Debug」と「Release」それぞれの「Any iOS Simulator SDK」に「arm64」を追加しましょう。

XCode設定

この対応でリビルドしてシミュレーターで実行可能となりました。

参考

https://developer.apple.com/forums/thread/656509

スポンサーリンク

Twitterでフォローしよう

おすすめの記事