酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOSアプリのdSYMファイルをBitriseからFirebase Crashlyticsへアップロードする #bitrise #bitrisearticle

この記事は、Bitrise Advent Calendar 2020の1日目の記事です。夕食を食べて帰ってきてアドベントカレンダーを覗いたところ、20時時点で誰もエントリーしていなかったので書くことにしました。

Bitriseとは

今年に入ってからこのブログでも、Bitriseを使ってiOSアプリのビルド時間の短縮に挑戦する記事Firebase iOS SDKをCocoaPods経由でインストールしたときにどれだけビルド時間が伸びるかなど紹介してきました。

弊社ではプロジェクトごとにじわじわとJenkinsからBitriseへの移行がおこなわれていましたが、現時点で完全にBitriseへの移行が完了しています。関係者が多いプロジェクトだとProvisioning Profile(プロビジョニングプロファイル)の更新が頻繁に発生して、更新処理が大変だったので随分と負荷が下がりました。Jenkinsおじさんは引退です。

もしBitriseを使ってみたい方がいれば↓のリンク経由でアカウントを作っていただければ、ビルド時間が5分伸びるみたいです!

iOSアプリのdSYMファイルがBitriseからFirebase Crashlyticsへ送信できていない

個人で開発しているアプリのクラッシュ情報はFirebase Crashlyticsに送るようにしています。久しぶりにFirebase Consoleにアクセスしたところ、ここしばらくdSYMファイルがFirebase Crashlyticsへ送信できていないことがわかりました。

f:id:ch3cooh393:20201201195404p:plain

f:id:ch3cooh393:20201201195223p:plain

不足している必須のdSYMをアップロードしてください と怒られていました。これはいけない。

Xcodeでリリースバイナリを作成する際(ビルドフェーズ)にdSYMファイルを送信するようにしていましたが、Xcode 12対応を入れたあたりから送信できてなかったようです。

if [ $CONFIGURATION = "Release" ]; then
"$SRCROOT/bin/FirebaseCrashlytics/run"
fi

アーカイブ後に直接 upload-symbols を実行してアップロードする

xcode-archiveステップのあとであれば、dSYMファイルに $BITRISE_DSYM_PATH でアクセスすることができます。直接 upload-symbols を実行して dSYMファイルをアップロードすることにしました。

    - xcode-archive@2.8:
        inputs:
        - project_path: "$BITRISE_PROJECT_PATH"
        - scheme: ptcgnote
        - export_method: app-store
    - script@1.1.6:
        title: Firebase Crashlytics
        inputs:
        - content: |-
            #!/usr/bin/env bash
            chmod +x ptcgnote/bin/FirebaseCrashlytics/run
            chmod +x ptcgnote/bin/FirebaseCrashlytics/upload-symbols
            ptcgnote/bin/FirebaseCrashlytics/upload-symbols -gsp ptcgnote/ptcgnote/Resource/GoogleService-Info.plist -p ios $BITRISE_DSYM_PATH
    - deploy-to-itunesconnect-application-loader@0.11:
        inputs:
        - password: "$APPLE_PASSWORD"
        - itunescon_user: "$APPLE_ID"

upload-symbolsのパスが Pods/FirebaseCrashlytics/upload-symbols でないのは、Firebase iOS SDKをCarthage経由でインストールしているからです。CocoaPods経由でインストールしている方は適宜パスを読み替えていただければと思います。

あとは追加したscriptステップが下図のようにうまく動くのを確認すれば、対応は完了です。

f:id:ch3cooh393:20201201203003p:plain

おわり。