Xcode12 + SwiftPM + Firebase iOS SDKの注意点


はじめに

Firebase iOS SDK も Swift Package Manager (SwiftPM) 向けの対応が進み、2020/8/25にリリースされたv6.31.0 からβ版として提供され始めました。

Swift Package Manager for Firebase Beta に利用方法が掲載されており、とても簡単に SwiftPM で Firebase iOS SKD を組み込むことができます。

Archive を処理する時の問題

ただ、アプリを Archive して Organizer で Distribute App や Validate App を実行すると次のようなエラーが発生してしまいます。

  • Found an unexpected Mach-O header code
  • IPA processing failed

原因と回避策

これは既知の問題で、先ほどの Swift Package Manager for Firebase Beta にしっかり回避策が掲載されていました。

If you're using FirebaseAnalytics, Xcode 12.0, and have an issue with device installation or archive uploading, see the workaround at https://github.com/firebase/firebase-ios-sdk/issues/6472#issuecomment-694449182.

このリンク先の Issue を確認すると、アプリバイナリに静的にリンクされるいくつかの Static Frameworks がアーカイブに含まれてしまっているということが原因のようです。下記引用のとおり、ビルドの Post-Action にてそれらの Static Frameworks を削除することで回避できました

Add the following to the Scheme's Build Post-Action:

rm -rf "${TARGET_BUILD_DIR}/${TARGET_NAME}.app/Frameworks/FirebaseAnalytics.framework"
rm -rf "${TARGET_BUILD_DIR}/${TARGET_NAME}.app/Frameworks/GoogleAppMeasurement.framework"
rm -rf "${TARGET_BUILD_DIR}/${TARGET_NAME}.app/Frameworks/FIRAnalyticsConnector.framework"

Make sure to select Provide build settings from the app.