Firebase Crash Reporting は、アプリで発生したエラーの詳細レポートを作成します。エラーは類似したスタック トレースごとに「問題」としてグループ化され、ユーザーに与える影響の重大度で優先順位付けされます。自動レポートを受信するだけでなく、カスタム イベントをログに記録して、問題発生に至った過程を把握することもできます。
Crash Reporting を設定する
Android での Crash Reporting を設定するには、次の手順に沿って操作します。
- まだ設定を行っていない場合は、Android プロジェクト用に Firebase を設定します。
- Firebase コンソールでアプリを Firebase プロジェクトに追加します。
- Crash Reporting の依存関係をアプリレベルの
build.gradleファイルに追加します。implementation 'com.google.firebase:firebase-crash:16.2.1'
最初のエラーを作成する
Firebase Crash Reporting では、致命的なエラー(または捕捉されなかった例外)のレポートが自動的に生成されます。また、例外を捕捉すると同時に例外の発生も報告したいというケースについてもレポートを生成することができます。そのようなエラーを報告するには、次の手順に沿って操作します。
- メイン アクティビティに静的
reportメソッドの呼び出しを追加します。FirebaseCrash.report(new Exception("My first Android non-fatal error")); - アプリを起動します。
adb logcatまたは Android Studio のログで、Crash Reporting が有効になっていることを確認するメッセージを探します。- Firebase コンソールの Crash Reporting のセクションをチェックし、エラーを確認します。エラーが表示されるまでに 1~2 分ほどかかります。
カスタムログを作成する
Crash Reporting を使用して、エラーレポートや、オプションで logcat にカスタム イベントを記録できます。イベントのログを記録するけれども logcat には出力しないという場合、次の例のように引数として文字列を渡すだけで処理できます。
FirebaseCrash.log("Activity created");
logcat 出力を作成する場合は、ログレベルとタグも指定する必要があります。
ProGuard ラベルを可読化する
ProGuard は、ProGuard で難読化した記号を元の名前にマッピングする mapping.txt ファイルを生成します。ProGuard を有効にしている場合、マッピング ファイルをアップロードすると、可読化されたスタック トレースを Crash Reporting インターフェースに表示できます。
次に示すように、テストを目的として ProGuard をデバッグ ビルドタイプで設定してから、./gradlew assembleDebug コマンドを使用してビルドできます。
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'),
'proguard-rules.pro'
}
Gradle を使用して ProGuard マッピング ファイルをアップロードする
可読化されたスタック トレースを Firebase コンソールで表示するには、Crash Reporting プラグインによって作成された Gradle タスクを使用して、ProGuard マッピング ファイルを Firebase にアップロードできます。
Crash Reporting プラグインを構成するには:
- Crash Reporting プラグインを含めるように、ルートレベルの
build.gradleファイルにルールを追加します。
buildscript { repositories { jcenter() // ... } dependencies { // ... // For Android Studio 2.x, use firebase-plugins version 1.1.1 classpath 'com.google.firebase:firebase-plugins:1.1.1' // For Android Studio 3.0, use firebase-plugins version 1.1.5 //classpath 'com.google.firebase:firebase-plugins:1.1.5' } } - アプリ プロジェクトの Gradle ファイル(通常は
app/build.gradle)で、次の行を「ADD THIS」の下に追加し、Crash Reporting プラグインを有効化します。
apply plugin: 'com.android.application' // ADD THIS apply plugin: 'com.google.firebase.firebase-crash' android { // ... } dependencies { // ... } - 次に、サービス アカウントと秘密鍵を作成します。
アップロードを認証するためのサービス アカウント キーをダウンロードします。Firebase コンソールでプロジェクトを選択し、[新しい秘密鍵の生成] をクリックします。
$HOME/.gradle/gradle.propertiesへのファイルパスを指定したFirebaseServiceAccountFilePathというプロパティを追加するか、-Pフラグを使用してコマンドラインで別のパスを指定します。後でFirebaseServiceAccountFilePathプロパティを更新して、さまざまなサービス アカウント ファイルでタスクを実行することができます。別の方法としては、
-Pフラグを使用してコマンドラインでマッピング ファイルのパスを指定し、次のようにプロパティを設定することもできます。./gradlew -PFirebaseServiceAccountFilePath=/usr/ServiceAccount/MyApp-a287fsd34.json :app:firebaseUploadReleaseProguardMapping
-
APK の作成とマッピング ファイルのアップロードを行う場合には、プロジェクト ディレクトリで
gradlewコマンドを実行します。次に例を示します。./gradlew :app:firebaseUploadReleaseProguardMapping
アップロード タスクの正確な名前はビルド バリアントの名前によって違います(
firebaseUpload<VariantName>ProguardMappingのパターンに従います)。可能性のあるアップロード タスク名の詳細なリストについては、次のgradlewコマンドを実行してください。./gradlew :app:tasks
また、
firebaseUploadArchivedProguardMappingタスクを使用して ProGuard マッピング ファイルをアップロードするときに使用する Gradle プロパティを指定することもできます。次の例のように、このタスクを使用してFirebaseCrashMappingFilePath、FirebaseCrashVersionCode、FirebaseCrashPackageNameに Gradle プロパティを指定できます。FirebaseCrashMappingFilePath=path/to/mapping/file FirebaseCrashVersionCode=2 FirebaseCrashPackageName=example.package.name
この例では、プロジェクトのモジュール フォルダにあるデフォルトのgoogle-services.json(通常はapp/)を使用します。google-services.jsonファイルを使用しない場合には、FirebaseCrashApiKeyとFirebaseCrashAppIdの両方に Gradle プロパティを指定する必要があります。
マルチ APK をビルドするアプリの操作
プラグインは、マルチ APK サポートを活用するアプリケーションに対しても有効です。各ビルド バリアントのタスクについては、そのバリアントのすべての APK のマッピング ファイルがアップロードされます。
たとえば、次の Gradle の例に示すように、fullRelease という名前のビルド バリアントと、app-full-armeabi-v7a-release.apk や app-full-armeabi-release.apk などのマルチ APK によってさまざまなアーキテクチャをサポートしているとします。
productFlavors {
full {
applicationId "com.google.firebase.sample.testapp"
versionName "1.0-full"
}
}
splits {
abi {
enable true
reset()
include 'armeabi', 'armeabi-v7a'
universalApk true
}
}
./gradlew :app:firebaseUploadReleaseProguardMapping タスクを実行すると、app-armeabi-v7a-release.apk と app-armeabi-release.apk の ProGuard マッピング ファイルがサーバーにアップロードされます。これらのアップロードに対して、次のような出力がコンソールに表示されます。
Successfully uploaded proguard mapping file for app fullArmeabiRelease with versionCode: 1! Successfully uploaded proguard mapping file for app fullArmeabi-v7aRelease with versionCode: 2!
ProGuard マッピング ファイルを手動でアップロードする
別の方法として、Crash Reporting を参照して [マッピング ファイル] タブを選択することで、mapping.txt ファイルを Firebase コンソールに手動でアップロードすることもできます。
アップロードするファイルは次のようなファイルパスにあります。ただし、このパスはアプリごとに異なります。
<project root>/<module name>/build/outputs/mapping/<build type>/<appname>-proguard-mapping.txt
次に例を示します。
app/build/outputs/mapping/debug/app-proguard-mapping.txt
既知の問題
Android Studio 3.0 で Crash Reporting プラグイン バージョン 1.1.0 または 1.1.1 を使用している場合、以下のエラーが発生します。アプリのルートレベルの build.gradle ファイルで、プラグイン バージョン 1.1.5 を指定して使用してください。
Cannot create tasks to upload ProGuard Mapping File.java.lang.IllegalStateException: Resolving configuration 'androidTestAnnotationProcessor' directly is not allowed
次のステップ
- 新しい問題や回帰が報告されたときのメールアラートを設定する方法については、メールアラートの設定をご覧ください。
- GitHub で Crash Reporting Android コードサンプルを確認して実行します。

