バグを報告する

バグは修正しなければなりません。しかし修正に必要な情報が不足しているバグも多くあります。 したがって、バグの報告に漏れがないものを重点的に処理します。 バグが修正される可能性を高めるために、このドキュメントを読んで内容を把握してください。

ここに記載されている手順に従っていない場合、バグはクローズされます。 クローズされた場合は、補足情報を追加してもう一度送信してください。

Issue Tracker はサポート フォーラムではないことにも注意してください。 ツールの使用方法や、Android アプリの動作方法について不明な点がある場合は、stackoverflow.com またはいずれかの Android デベロッパー サポート リソースをご覧ください。

バグを報告する手順

  1. 最新バージョンのツールを使用していることを確認します。 修正済みのバグを取捨選択するには大変時間がかかります。 問題がクローズされ、このドキュメントの参照を提示され場合、最新バージョンのツールを使用して問題が再現できるときは、別の問題として報告してください。

  2. 問題を再現するための正確な手順を記述します。 具体的に記述してください。 最初の試行で問題が再現できた場合、修正される確率はかなり高くなります。 可能であれば、コード フラグメントを記述してください(または、バグを再現するために使用できる github プロジェクトを示していただけると助かります)。 バグを示すスクリーンショットのご提供もお願いします。

  3. 正しく動作した場合の結果と、実際の結果を記述します。

  4. バージョン情報を記述します。 Android Studio では、[About] ダイアログ([Help] > [About] をクリック)(Mac の場合、[Android Studio] > [About Android Studio] をクリック)でこの情報を確認できます。 コピーするテキストを強調表示する必要はありません。Control + C(Mac の場合、Command + C)を押してから、バグ報告に貼り付けてください。

  5. 必要に応じて、使用している Java のバージョンを記述します(Android Studio では [About] ボックスに記載されています)。

  6. 使用しているオペレーティング システムを記述します。

  7. バグの説明の概要を記述します。 「Bug」、「Issue」、「Exception」、「Not working」などの概要で大量のバグが報告されていることに驚くことでしょう。

  8. バグの種類によっては、次の補足情報が必要です。

繰り返しになりますが、バグを再現する手順を明確に記述することが重要です。 可能であれば、バグの再現を容易にするファイルまたはプロジェクトを共有します(バグ報告に独自のソースコードは添付しないでください)。 報告するバグの内容を示すスクリーンショットもご提供ください。

これらの情報が集まったら、ここにバグを報告 します。

Android Studio バグの詳細

Android Studio バグに固有の以下の補足情報を記述します。

IDE がハングする場合

IDE 自体が非常に重い、あるいは完全にフリーズしているように見える場合、いくつかのスレッドダンプを生成してこれをバグ報告に添付します。 これらは、IDE がビジーとなる処理の内容(あるいは IDE が待機している競合リソースの内容)を示します。

IDE が重いがフリーズはしていない場合は、idea.log ファイルも添付します([Help] > [Show Log in Finder] を選択します)。 これは、ログに絶えずエラーがスローされているために IDE が重くなっているかどうかを示します。

IDE がメモリ不足の場合

IDE がメモリ不足になっている場合は、次のコマンドを実行してヒープのヒストグラムを生成してください。

jmap -histo:live <pid>

IDE がクラッシュする、または例外をスローする

その他の種類のクラッシュの場合は、idea.log ファイルを添付します。 [Help] > [Show Log in Finder] を選択します。

スレッドダンプの生成

スレッドダンプは JVM で実行されているすべてのスレッドの出力と、スレッドごとのすべてのスタックフレームの出力です。 スレッドダンプによって、IDE がビジーとなる処理の内容を簡単に把握することができます。 特に、数秒おきにいくつかのスレッドダンプを生成する場合に有効です。

CPU に大きな負荷がかかって IDE が非常にビジーになっている、または IDE がフリーズしているように見えるところのバグを報告すると、スレッドダンプにより、大量の処理を実行しているコードや、リソースの奪い合いでデッドロックを引き起こしているスレッドを特定することができます。

JDK は、スレッドダンプの生成に利用できる「jstack」というツールを提供します。 最初に、Android Studio プロセスのプロセス ID を見つける必要があります。 「jps」コマンドでプロセス ID が見つかります (jstack と jps は両方とも JKD の bin ディレクトリ内にあります。 複数の JDK をインストールしている場合は、Android Studio と一緒に実行している JDK と同じバージョンのものを使用してください。Android Studio の [About] ボックスで、バージョン番号を確認できます)。

Linux または Mac の場合:

jps -mv | grep studio

Windows の場合:

jps -mv | findstr studio

たとえば、以下のような詳細な行が出力されます。

$ jps -mv | grep studio
37605 -Dfile.encoding=UTF-8 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -Djna.nosys=true ...

左側の最初の数字(上記の例では 37605)がプロセス ID です。

次に、スレッドダンプを生成し、これを以下のようにdump.txt ファイルに保存します。

jstack -l pid >> dump.txt

上記のコマンドが動作しない場合は、スレッドダンプを生成するプラットフォーム独自の方法を試してください。詳細については、IntelliJ サポートをご覧ください。

Instant Run バグの詳細

Instant Run に関する問題を報告するには、次の手順を実行します。

  1. Android Studio が、Instant Run セッションに関する補足情報を記録できるようにします。
  2. 発見した問題に関するフィードバックを送信してから前の手順を実行したい場合は、問題を新たに作り直してください。
  3. Instant Run に関する問題を見つけたら、すぐに報告を送信します。

バグ報告に含める内容について

IDE が Instant Run セッションに関して次の情報を記録できるようにしておくと、Android Studio チームが問題を詳細に把握する際に役立てることができます。これは問題の把握のためにのみ使用されます

  • idea.log: このログには、Android Studio とその SDK ツールがさまざまなアクションを実行するときの詳細情報が含まれます。 [Help] > [Show Log in Explorer](Mac の場合 [Show Log in Finder])を選択すると、このログが表示されます。
  • build-info.xml: これは Android Studio が Android Plugin for Gradle と Instant Run 機能を連携させるために使用する中間ファイルです。
  • build.log: このログには Gradle からのビルド情報が含まれます。 これは、--info コマンドライン オプションを使用して Gradle を実行し、[View] > [Tool Windows] > [Gradle Console] をクリック(またはツール ウィンドウ バーの [Gradle Console] をクリック)して表示される出力に似ています。
  • logcat 出力: アプリが実行されているときに対象の端末またはエミュレータから発生する Instant Run ランタイム イベント(InstantRun タグ付きのイベント)が含まれます。 logcat 出力の詳細については、logcat を使用したログの出力と確認をご覧ください。
  • profile.log: このログは、Gradle が個々のビルドタスクの処理を進めた速度に関するプロファイルを提供します。
  • TARGET-*: これは Android Studio が対象の端末の後に名前を指定する空のファイルです(TARGET-MOTOROLA-NEXUS6 など)。

追加のログ記録を有効にする

この情報を収集して送信するパーミッションを Android Studio に付与するには、以下の手順を実行します。

  1. [Settings] または [Preferences] ダイアログを開きます。
  2. [Build, Execution, Deployment] > [Instant Run] に移動します。
  3. [Log extra info] チェックボックスをオンにします。 このオプションはいつでも無効にできます。
  4. [OK] をクリックします。

問題の報告

追加のログ記録を有効にした後で、以前見つけた Instant Run の問題を再作成します。 問題を再現したら、すぐに以下の手順を実行して報告を送信してください。

  1. メニューバーから [Help] > [Report Instant Run Issue] を選択します。 図 4 で示すようなダイアログが表示されます。

    図 4. テキスト フィールドに追加の詳細情報を入力し、Android Studio が報告と一緒に送信するログを確認します。

  2. 問題を再現する手順や、実際の動作と予測動作の違いなど、問題の発生状況を記述した補足情報をテキスト フィールドに入力します。
  3. 完了したら [OK] をクリックします。

ビルドツールと Gradle バグの詳細

次のような、プロジェクトのビルドに関連する問題または Gradle の同期に関する問題に固有の情報を記述します。

  • Gradle のバージョン。 [File] > [Project Structure] を選択し、[Project] をクリックして、[Gradle version] を見つけます。

  • Android Plugin のバージョン。 Gradle のバージョンと同じページで、[Android Plugin Version] を見つけます。

  • Module Compile Sdk のバージョン。 上記のページの左ペインでモジュールを選択して、[Compile Sdk Version] を見つけます。

  • Module Build Tools のバージョン。 上記のページで [Build Tools Version] を見つけます。

  • Android SDK Tools のバージョン。 [Tools] > [Android] > [SDK Manager] を選択し、[SDK Tools] をクリックして [Android SDK Tools] を見つけます。

Android Emulator バグの詳細

次のようなエミュレータ バグ固有の情報を記述します。

  • Emulator のバージョン。 Emulator で [Extended controls] を開いて [Help] をクリックし、[About] タブをクリックして [Emulator version] を見つけます。
  • Android SDK Tools のバージョン。 [Tools] > [Android] > [SDK Manager] を選択し、[SDK Tools] をクリックして [Android SDK Tools] を見つけます。
  • ホスト CPU モデル。
    • Linux の場合: /proc/cpuinfo を開きます。
    • Windows の場合: [My Computer] を右クリックし、[Properties] を選択します。
    • Mac の場合: Apple アイコンをクリックし、[About This Mac] をクリックします。
  • 端末名。 [AVD Manager] で端末の [Actions] 列のドロップダウン メニューをクリックして開き、[View Details] を選択します(または $avdname.avd/config.ini ファイルを開きます)。 hw.device.name のエントリを見つけます。 例: “hw.device.name=Nexus 5”