0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AndroidでDebugビルドのCrashlyticsをManifestで無効化する

0
Posted at

はじめに

Firebase Crashlyticsを導入しているAndroidアプリで、開発中のクラッシュをFirebaseへ送信しないようにするため、DebugビルドではCrashlyticsを無効化していました。
当初はApplication.onCreate()でビルドタイプを判定し、実行時に無効化していました。

しかし、この方法ではCrashlyticsの初期化タイミングに間に合わない可能性があるため、Debugビルド専用のAndroidManifest.xmlで無効化するように変更しました。

この記事では、実行時の設定からManifestを使った設定へ変更する方法を紹介します。

実行時に無効化していた方法

当初は、Application.onCreate()で次のように設定していました。

  override fun onCreate() {
      super.onCreate()

      FirebaseCrashlytics
          .getInstance()
          .setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG)
  }

Debugビルドの場合はfalse、Releaseビルドの場合はtrueを指定する実装です。
一見すると問題なさそうですが、Crashlytics SDKはApplication.onCreate()より前に初期化される可能性があります。
そのため、onCreate()で無効化する時点では、すでにCrashlyticsが動き始めている可能性があります。

また、setCrashlyticsCollectionEnabled()による実行時の設定は、Manifestの設定より優先され、次回以降のアプリ起動にも引き継がれます。(FirebaseのAPIリファレンスには、falseの指定は次回起動から適用されることも記載あり。)

Debug用のManifestで無効化する

app/src/debug/AndroidManifest.xmlを作成します。

  <manifest xmlns:android="http://schemas.android.com/apk/res/android">

      <application>
          <meta-data
              android:name="firebase_crashlytics_collection_enabled"
              android:value="false" />
      </application>

  </manifest>

firebase_crashlytics_collection_enabledをfalseにすることで、Crashlyticsによる自動収集を無効化できます。Firebase公式ドキュメントでも、自動収集をデフォルトで無効化する方法としてManifestへの設定が案内されています。

後は、先に書いていたApplication.onCreate()で行っていた設定を削除します。

注意点

Crashlyticsの自動収集を無効化しても、クラッシュ情報がすぐに破棄されるとは限りません。
Firebase公式ドキュメントによると、自動収集が無効な場合、クラッシュ情報は端末内に保存されます。その後に収集を有効化すると、保存されていたレポートが送信される可能性があります。また、過去にsetCrashlyticsCollectionEnabled()を呼び出している場合、その設定値が端末内に残っている可能性があります。

Manifestへの切り替えを確認するときは、必要に応じてアプリのデータを削除するか、アプリを再インストールして確認します。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?