FirebaseのClashlyticsをSwift Package Managerを使って導入するときに詰まった点があったので備忘録
FirebaseApp.configure()をしておく
(ここ)[https://firebase.google.com/docs/ios/setup?authuser=0#initialize-firebase]にあるように、pplication:didFinishLaunchingWithOptions:
内でFirebaseApp.configure()を実行しFirebaseを初期化する必要あり(Cocoa PodsでもCarthageでも一緒ですが)
RunScriptでスクリプトの記述
(ここ)[https://firebase.google.cn/docs/crashlytics/get-started?hl=ja&platform=ios#set-up-dsym-uploading]に書いてあるように、レポートを作成する際にプロジェクトのデバッグ シンボル(dSYM)ファイルが必要らしい。これはアプリをビルドする度にXcode側で生成し、dSYMファイルをアップロードする必要があるので、RunScriptに下記のコマンドを実行すると書いてあるが
"${PODS_ROOT}/FirebaseCrashlytics/run"
これはCocoa PodsでClashlyticsを導入した時のスクリプトなので、spmの際は下記のスクリプトを実行しなければいけない
${BUILD_DIR%Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run
RunScriptのinputファイルには下記の二つを指定
${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
実際にクラッシュレポートを送るときはsimulatorとの接続を切る
これで詰まったのだが、XcodeでRunを実行し、立ち上がったアプリだとクラッシュレポートが送れないらしい。なのでアプリを立ち上げた後にXcode側で□ボタンでアプリを停止する。そしてsimulator側でホームボタンを二回押し、該当アプリを上にスライドで消去し、もう一度アプリを一から立ち上げて使えばレポートが送信できるようになる。レポートの送信タイミングはクラッシュした後にXcodeで再びアプリをRunしたときであり、その際にログ画面にCompleted report submission
と表示されていれば送信できているということになる。