はじめに
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ファイルがないような状況に陥っている方の参考になれば幸いです。