バグレポートには、アプリのバグを見つけて修正するのに役立つデバイスログ、スタック トレース、その他の診断情報が含まれています。バグレポートをデバイスからキャプチャするには、デバイスの [バグレポート取得] 開発者向けオプション、Android Emulator メニュー、または開発マシンの adb bugreport
コマンドを使用します。
![](https://developer.android.com/static/studio/images/run/dev-options-pixel_2x_cropped.png?authuser=0000&hl=ja)
図 1. デバイスの開発者向けオプション
バグレポートを取得するには、デバイスで開発者向けオプションを有効にして、[バグレポート取得] オプションにアクセスする必要があります。
デバイスからバグレポートをキャプチャする
![](https://developer.android.com/static/studio/images/run/dev-options-take-bug-report_2x.png?authuser=0000&hl=ja)
図 2. バグレポートの準備が完了
デバイスからバグレポートを直接取得する手順は次のとおりです。
- 開発者向けオプションを有効にします。
- [開発者向けオプション] で [バグレポート取得] をタップします。
- 希望するバグレポートのタイプを選択し、[レポート] をタップします。
しばらくすると、図 2 に示すように、バグレポートの準備が完了したという通知が届きます。
- バグレポートを共有するには、通知をタップします。
Android Emulator からバグレポートをキャプチャする
[File a bug] 機能は、Android Emulator の拡張コントロールから使用できます。
- エミュレータ パネルでその他アイコン
をクリックします。
[Extended controls] ウィンドウで [Bug report] を選択します。
これにより、バグレポートの詳細(スクリーンショット、AVD 構成情報、バグレポート ログなど)を確認できる画面が開きます。再現する手順などのメッセージを入力して、レポートとともに保存することもできます。
バグレポートの収集が完了するまで待ってから、[Save Report] をクリックします。
adb を使用してバグレポートをキャプチャする
接続しているデバイスが 1 つだけの場合、次のように adb
を使用してバグレポートを取得できます。
$ adb bugreport E:\Reports\MyBugReports
バグレポートのパスを指定しなかった場合は、ローカル ディレクトリに保存されます。
複数のデバイスを接続している場合は、-s
オプションでデバイスを指定する必要があります。デバイスのシリアル番号を取得してバグレポートを生成するには、次の adb
コマンドを実行します。
$ adb devices List of devices attached emulator-5554 device 8XV7N15C31003476 device $ adb -s 8XV7N15C31003476 bugreport
古いバグレポートを保存する
デフォルトでは、バグレポートは /bugreports
に保存され、次のコマンドで表示できます。
$ adb shell ls /bugreports/ bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS-dumpstate_log-yyy.txt bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS.zip dumpstate-stats.txt
次のように、adb pull
で zip ファイルを取得できます。
$ adb pull /bugreports/bugreport-foo-bar.xxx.YYYY-MM-DD-HH-MM-SS.zip
バグレポートの zip ファイルを調べる
デフォルトでは、zip ファイルの名前は bugreport-BUILD_ID-DATE.zip
です。zip ファイルには複数のファイルが含まれる場合がありますが、最も重要なファイルは bugreport-BUILD_ID-DATE.txt
です。このファイルがバグレポートであり、システム サービスの診断出力(dumpsys
)、エラーログ(dumpstate
)、システム メッセージログ(logcat
)が含まれます。システム メッセージには、デバイスがエラーをスローしたときのスタック トレースと、Log
クラスを持つすべてのアプリから書き込まれたメッセージが含まれます。
zip ファイルには、Android リリースレターが格納された version.txt
メタデータ ファイルが含まれます。systrace が有効になっている場合、zip ファイルには systrace.txt
ファイルも含まれます。Systrace ツールを使用すると、アプリプロセスと他の Android システム プロセスの実行時間がキャプチャされて表示されるため、アプリのパフォーマンスを分析できます。
dumpstate
ツールにより、デバイスのファイル システムのファイルが FS
フォルダ内の zip ファイルとしてコピーされ、参照できるようになります。たとえば、デバイスの /dirA/dirB/fileC
ファイルは、zip ファイル内の FS/dirA/dirB/fileC
エントリになります。
図 3. バグレポート ファイルの構造
詳細については、バグレポートを読むをご覧ください。
ユーザーからレポートを取得する
バグレポートのキャプチャは、アプリを自分で使用しているときには便利ですが、エンドユーザーからこのようなバグレポートを共有してもらうのは簡単なことではありません。スタック トレースを含むクラッシュ レポートを実際のユーザーから取得するには、Google Play と Firebase Crash Reporting の機能を利用します。
Google Play Console
Google Play Console からレポートを取得して、Google Play からアプリをインストールしたユーザーのクラッシュと ANR(アプリケーション応答なし)エラーのデータを確認できます。過去 6 か月のデータを確認できます。
詳細については、Play Console ヘルプのクラッシュと ANR(アプリケーション応答なし)エラーを確認するをご覧ください。
Firebase Crash Reporting
Firebase Crashlytics Reporting では、アプリ内のエラーの詳細なレポートが作成されます。エラーは、スタック トレースの類似性に基づいて問題別にグループ化され、ユーザーに与える影響の深刻度に応じて分類されます。自動レポートを受け取るだけでなく、カスタム イベントをログに記録して、クラッシュにつながる段階で捕捉することもできます。
任意のユーザーからのクラッシュ レポートの受信を開始するには、build.gradle
ファイルに Firebase の依存関係を追加します。詳細については、Firebase Crashlytics をご覧ください。