4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Crashlytics】開発中のクラッシュログで埋もれるのを防ぐ(Android版)

Last updated at Posted at 2020-02-05

Firebase Crashlytics を使うと、クラッシュログを自動的に収集でき、ユーザーの環境で起こったクラッシュの把握や原因の分析に役立つ。もはやこれなしでは不安になってしまうくらい、イマドキのアプリ開発には欠かせないツールになっていると感じる。

AndroidでCrashlyticsを使っていたところ、デフォルトだとデバッグビルド時でもお構いなしにクラッシュログを収集してしまうようだった。開発中はクラッシュはそれなりに起こるので、そのままだと本当に本番環境でクラッシュしたログが埋もれてしまう。リリースビルドでは有効にしつつ、デバッグビルドでだけCrashlyticsを無効にする方法を説明する。

方法

The Firebase Blog: Firebase Crashlytics, builds and you

↑のブログポストの末尾の「Apps that are auto initialized」の手順でできる(タイトルの通り、Crashlyticsを自動的に初期化している場合)。

ただ、記事のXMLをそのまま記載すると、実行時にKey firebase_crashlytics_collection_enabled expected Boolean but value was a java.lang.String. The default value false was returned.という警告が出るので、少し書き換える。

最終的には、以下の内容をapp/src/debug/AndroidManifest.xmlに書けばOK。

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <application>
    <meta-data
        android:name="firebase_crashlytics_collection_enabled"
        android:value="false" />
  </application>
</manifest>

ちなみに、src/debugAndroidManifest.xmlを置くと、debugビルド時にのみ、その内容がsrc/AndroidManifest.xmlにマージされる。Crashlyticsに限らず使えるテクニック。

これだけで、デバッグビルド (./gradlew assembleDebug) したときはクラッシュログを送らず、リリースビルド (./gradlew assembleRelease) のときはクラッシュログを記録するようにできる。ビルド時に追加でなんらかの設定などをする必要はない。

まとめ

これで開発時はクラッシュログが送られなくなるので、本番環境で発生したクラッシュの解析に集中することができる:thumbsup:

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?