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」を追加しましょう。
この対応でリビルドしてシミュレーターで実行可能となりました。