[iOS] Xcode 12でSwift Package Managerを使ってFirebaseのAnalyticsがあるとiPhone実機で実行できない

2021.01.20

こんにちは。きんくまです。

こんな作業をしています。

Xcode 11でCarthageのみでライブラリ管理を行っていたプロジェクト
-> Xcode 12でSwift Package Manager(SPM) + CocoaPods(SPMで対応できないもの)に移行

Carthageを廃止してSPM + CocoaPodsに移行しているのは、以前参加したセミナーで登壇者の方々がおっしゃってたからです。
Swift開発座談会 2020

作業中にいろいろとハマりましたが、ビルドも成功してシミュレーターで動いた。でもiPhone実機に転送したらエラーになって立ち上げられませんでした。

余談ですがCocoaPodsもXcode 12.0のときはいろいろとあったみたいですが、12.1では問題なく動きました。(正確には数時間ハマったのですが、それはあるライブラリのimport名が変わったことに気がつかなかった、、私だけの問題ですw)

エラー内容

スペック

Xcode 12.1
Firebase SDK 7.4.0

状況

ビルドは成功。実機に転送しようとすると以下のエラーが出る

===
Unable to install "アプリTarget名"
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402620388
--
No code signature found.
Domain: com.apple.dt.MobileDeviceErrorDomain
Code: -402620388

回避方法

どうやらXcode 12でFirebase AnalyticsをSPMを使うと起きるみたいです。

参考 https://github.com/firebase/firebase-ios-sdk/blob/master/SwiftPackageManager.md

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.

1: Edit Schemeを開く
2: BuildのPost-actionsに以下を追加

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

FIRAnalyticsConnectorがGithubのコメントには書いてあるのですが、ビルドされた.appの中を確認したところ、私のところには入ってなかったので入れてません。

3: Provide build settings from のところをアプリのTargetを選択しておく(忘れたらうまくいきませんでした!)

Xcodeの設定画面

ステージング環境と本番環境でSchemeを分けている場合などは、全部に設定しておきます。

この状態で実機に転送すると今度はうまくいきました!やったね