はじめに
iOSアプリのストア申請時、アプリがクラッシュするとリジェクトされますよね。
そこで添付されたクラッシュログを復元する方法に手間取ったので、どのように解決したかを紹介します。
なぜ手間取ったか
調べると、dSYMからクラッシュログを復元する方法はたくさん出てきます。
私の環境では、CIでビルドからAppStoreConnectへのアップロードまで行っていた為、dSYMはAppStoreConnectからダウンロードしていました。
そのdSYMとアップルが送ってくれたクラッシュログの紐付けうまくいかず、手間取ってしまいました。
一般的には
クラッシュログ(xxx.crash)と、予め保存しておいたdSYM(アプリ名.app.dSYM)を、symbolicatecrashに食わせてやると、復元できます。
私の環境
AppStoreConnectからダウンロードしたdSYMは、appDsyms.zipというZIPファイルで、解凍すると中には[ランダムな文字列?].dSYMというファイルが多数入っています。
つまり、dSYMが複数あるような状況で、どのdSYMをsymbolicatecrashに食わせれば良いかが判断できなかった訳です。
手順
アップルが送ってくれたクラッシュログを確認すると、以下のような文字列が一番上に記述してあると思います。
{
"app_name":[アプリ名],
"timestamp":[日付],
"app_version":[アプリバージョン],
"slice_uuid":"f1a3f12a-gca0-3ad8-97d1-f450de9a6a9b", ←ランダムな文字列?
〜 以下、略 〜
}
ここのslice_uuidに記載された文字列がキモです。
ダウンロードしたappDsyms.zipを解凍すると、f1a3f12a-gca0-3ad8-97d1-f450de9a6a9b.dSYMというファイルが存在していると思いますので、そのdSYMとクラッシュログをsymbolicatecrashで食わせてあげればクラッシュした箇所を特定することができます!
クラッシュログの復元方法(symbolicatecrashの使い方)については、以下の記事を参考にさせていただきました。
https://qiita.com/ruwatana/items/cc470eb229d267d693b0
おわりに
手元にdSYMが無く、ダウンロードしてきたdSYMも複数あって絶望したのですが、なんとか解決できました。
私と同じように、手元にdSYMファイルがないような状況に陥っている方の参考になれば幸いです。