Xcode
iOS

Crashlyticsを初めて導入した時にハマったことまとめ

More than 3 years have passed since last update.

先日初めてiOSアプリをリリースし、アプリの中にCrashlyticsを導入したのですが、いくつかハマった点があったのでまとめました。Crashlytics入れたのにうまく動かない!ということがあって、もし以下のケースに当てはまる場合は参考にしていただけると嬉しいです。

Crashlyticsの導入手順はasakaharaさんのこちらの記事が丁寧でわかりやすいです。

Crash Report解析サービスのCrashlyticsを試してみた

参考までに現在の環境は以下のとおりです。今後改善することもあるかもしれません。


  • OS: Mac OS 10.9.4 Mavericks

  • XCode: version 5.1.1


Project作成はSingle View Projectを選ぶ

まず最初projectを作る際に気をつけないといけないのは、 「Single View Project」 を選んでおくことです。

自分は画面ごとにxibを作る開発スタイルで、最初に 「Empty Application」 を選んで進めていたらなぜかクラッシュレポートが届きませんでした。


アプリを起動したらUnable to locate application iconというエラーが出る

作りたてのプロジェクトにCrashlyticsを入れると、以下の様なエラーログが出ると思います。

2014-07-27 11:23:04.283 sample[925:3603] [Crashlytics] Unable to locate application icon

Crashlyticsのdashboardでアイコンを表示させることができない時に表示されるエラーのようです。

Images.xcassetsでAppIconを設定してあげないとダメなようでした。Icon.pngを放り込むとDEBUG環境だとアイコンが表示されるので、気づかない場合があるかもしれません。

ググってたら具体的な解決策が出ていなくて、なぜかTwitterのDMで回答が送られていて分からなかったので結構ハマりました…。


[[Crashlytics sharedInstance] crash] でクラッシュレポートが届かない

Crashlyticsを自分のアプリに組み込んだ後に、「実際にクラッシュレポートが届くかどうか確認したい!」というケースがあると思います。

強制的にクラッシュするにはどうするか、については公式サポートページに書いてありました。

Is there a quick way to force a crash? – Support for Crashlytics

こちらに書いてあるとおり、[[Crashlytics sharedInstance] crash]でクラッシュさせることはできるようです。

ですが、ウィザードが完了した後にこちらのコードを挿入し、シミュレータや実機でクラッシュさせてもなぜかレポートが届きませんでした。

(ウィザード内で、アプリを起動させてくださいという画面が出るタイミングでコードを挿入してから起動させるとレポートが届く場合がありました)

導入後クラッシュレポートを送るには、以下の様なクラッシュさせるコードを入れて試してみるとよいでしょう。

    NSArray *array = [NSArray array];

id data = array[0];

実際にこちらのコードをUIButtonをおした時のIBActionへ挿入すると、クラッシュレポートが届きました。

スクリーンショット 2014-08-03 8.11.46.png