はじめに
今回はFabricのメイン機能である Crashlytics
について紹介したいと思います。
筆者が初めて Crashlytics
を利用したのは、もう数年前になるでしょうか。
それこそ、当時は Fabric
という名称ではなく、本当にただの Crashlytics
というサービス名だったんですよね。
あの頃は、クラッシュレポートを溜める独自サービスが大量生産されていたのではないでしょうか?
そんな市場に風穴を開けたのが、 Crashlytics
でした。
なんてったって、無料なんですから、使わない手はなかったわけです。
更に今や Firebase
だったり、fastlane
だったりと連携しちゃうわけですからね。
前置きはこのくらいにして、
今回は Crashlytics
の crash()
や recordError()
について少々調べたことを書き留めておきたいと思います。
Crashlyticsの導入
まずは、Crashlytics
の導入ですね。
公式ページに従って進めれば簡単に準備ができることでしょう。
注意点としては、Fabric
のダッシュボードでクラッシュレポート数や内容を見るために、dSYM
ファイルをアップロードする必要があるということくらいです。
その手順を見ていきましょう。
① Xcode > PROJECT or TARGET > Build Settings > Build Options > Debug Information Formatの設定を変更する
開発版ではDebug
モードでRun
していることもあると思うので、
その場合は下図のように DWARF with dSYM File
に変更しましょう。
② Xcode > Product > Archive を実行する
③ dSYMをDownloadする
Organizer Windowが自動で表示されるため、dSYMファイルをダウンロードしましょう。
Archive Informationの『Download dSYMs…』を選択するか、
もしくは下図のように該当アプリを右クリックして『Show in Finder』を選択して直接Downloadしましょう。
④ Show in Findeで開いたフォルダのdSYMsフォルダをzip化しましょう。
⑤ dSYMs.zipをFabric管理画面からUploadしましょう。
Settings > APPs > 該当アプリ > Missing DSYMs からDrag&Dropでアップロードできます。
これでクラッシュ後に、アプリを再起動して送信されたレポートをFabric
管理画面から確認することができます。
crash()で生成されるファイル
Crashlytics
で最も利用されているであろうクラッシュ時のレポート送信ですが、
一体、何を送っているのでしょうか?
今回は調査のために、わざとクラッシュさせて、アプリ内の『どこに』『何が』保存されているのか見てみました。
crash()メソッドの呼び出し
以下のようにボタンタップしたら、クラッシュするようにしてみましょう。
1 2 3 4 |
|
クラッシュで生成されるファイルの確認方法
クラッシュ後の生成ファイルの確認方法は以下です。
① アプリを起動してボタンタップでクラッシュさせます。
このとき重要なのが、『デバッグ状態にはせずにクラッシュさせる』ということです。
(どうもXcodeに接続したデバッグ状態だと、うまく記録されないようです。)
② 端末をMacに繋ぐ
③ Xcode > Window > Devices and Simulators を選択する
これにより以下のようなWindowが表示されます。
④ Downloadしたいアプリ内ファイルを選択して「Download Container…」を選択する
⑤ 自動でDownload先フォルダが表示されるので、該当ファイルを右クリックして、「パッケージの内容を表示」を選択する
⑥ クラッシュログを確認する
1
|
|
がそれに該当します。
クラッシュログの中身
中身を見てみると、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
|
のようになっています。
これがいい具合に Fabric
管理画面に表示されるわけですね。
recordError()で生成されるファイル
クラッシュではないけども、原因調査のためにレポート送信したい時があると思います。
そんなときは recordError()
メソッドを利用します。
recordError()メソッドの呼び出し
以下のようにボタンをタップしたら、レポートを送信するようにしてみましょう。
1 2 3 4 5 |
|
recordError()で生成されるファイルの確認方法
recordError()
実行後の生成ファイル確認方法は、基本的にはクラッシュ時と同じです。
ただし、クラッシュ時に生成されるファイルとファイル名が異なります。
recordError()
では error_a.clsrecord
といったファイルが生成されます。
recordError()で記録したファイルの中身
記録内容は以下の通りです。
何を格納するかで中身はもう少し変わりそうですね。
1 2 3 4 |
|
recordError()の注意点
今回、recordError()
を利用していて気づいた点が以下の通りです。
- 短時間に複数回タップしてもアプリ内のファイルにエラーログとして記録されない
- アプリ内に記録されたエラーログが全て
Fabric
管理画面に記録されるわけではない
どういったフィルタがかかっているのかまではわからないのですが、なんでもかんでも記録されるわけではないようです…
まとめ
さて如何でしたでしょうか?
今回たまたま中身を探ってみる機会があったので見てみましたが、きっと普段は気にしなくて良い内容なのだと思います。
と言ったところで本日はここまで。