ObjecTips

Swift & Objective-C で iOS とか macOS とか

Bitcode対応のアプリでクラッシュレポートを使う際の注意

アプリをBitcode対応してリリースしたら Crashlytics でクラッシュレポートが表示されなくなってしまった。
ダッシュボードには dSYMs が見当たらないとのメッセージが。

f:id:Koze:20160606141934p:plain

Found 1 unsymbolicated crash from missing dSYMs in 1 version in the last 24 hours.

Crashlytics のヘルプによればBitcode対応のアプリがApp StoreからリリースされるとAppleは新しく dSYMs を生成するらしく、この生成された dSYMs をアップロードする必要があるとの事。

手順は以下
https://docs.fabric.io/ios/crashlytics/missing-dsyms.html#bitcode-download

dSYMs は iTunes Connect からダウンロード、もしくは Xcode の Organizer で 「Download dSYMs...」 からダウンロードできる。
Xcode の場合は dSYMs をダウンロードした後ターミナルで

mdfind "com_apple_xcode_dsym_uuids == <UUID>"

と実行して dSYMs のある場所を探さなくてはならないのでちょっと面倒。
dSYMs のダウンロード先は以下のような場所になっていて、この xcarchive の中の dSYMs フォルダにいくつか dSYM ファイルが入っている。

/Users/<UseName>/Library/Developer/Xcode/Archives/yyyy-MM-dd/<AppName> yyyy-MM-dd HH.mm.xcarchive

iTunes Connect からダウンロードする場合はリリース済みアプリのアクティビティから該当のバージョンのビルドを選択して「dSYM をダウンロード」を選択。
dSYMs.zip という名称でZIP形式でダウンロードされる。
ZIPファイルの中身は Xcode からダウンロードした時と比べて増減があって中身が異なっているけど、どちらにしてもとりあえず Crashlytics で missing になっている dSYM と一致する UUID のものが入っていればOK

Crashlytics の設定ページから「Missing DYMs」のタブを選択して dSYM ファイルか dSYM ファイルが入ったZIPファイルをアップロードして、Missing DYMs のリストに表示されている UUID に打ち消し線が入れば成功。ダッシュボードでシンボルを確認できるようになる。


今回は Fabric Crashlytics での方法だったけど、Google Firebase でも同様にBitcode対応のアプリの dSYM をアップロードし直す必要があるはず。


追記

fastlane を使えば Bitcode 対応アプリの dSYM を iTunes Connect から自動で引っ張ってきてくれるとの事

crashlytics.com