バグの報告

バグは修正しなければなりません。しかし、多くのバグでは修正に必要な情報が不足しています。そこで、Google では、十分な情報が報告されているバグに限られたリソースを集中的に投入しています。バグを修正する機会を増やすため、ぜひともこのドキュメントをお読みください。

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

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

バグを報告する手順

  1. 最新バージョンのツールを使用していることを確認してください。Google は、すでに修正済みのバグのレビューに多くの時間を費やしています。バグがクローズされても問題が解決しない場合、最新バージョンで問題を再現できたら、別の問題をオープンしてください。

  2. Android Studio でバグレポートをオープンする場合は、[Help] > [Submit Feedback] を選択します。これは、バグを報告する最も簡単な方法です。バグレポートに Android Studio のバージョン、Java のバージョン、システム情報が自動入力されるからです。これらの情報は問題を正確に再現するために必要です(この方法を使用しない場合は、こちらでバグを報告し、バージョン情報を手動で追加してください)。

  3. 問題を再現するための正確な手順を記述します。すぐに問題を再現できれば、修正できる確率がかなり高くなります。可能であればコード スニペットも報告してください(もっと有用なのは、バグの再現に使用できる github プロジェクトを指示していただくことです)。問題を表示したスクリーンショットも役に立ちます。

  4. 期待した結果と、実際に起こった結果を記述します。

  5. バグの概要に必要最小限の説明を記述します。Bug(バグ)、Issue(問題)、Exception(例外)、Not working(機能しない)といった概要しか記述されていないバグレポートが大量にあり、問題の分類を困難にしています。

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

Android Studio のバグの詳細

Android Studio のバグに固有の次のような補足情報を報告してください。

IDE がハングする場合

IDE 自体が非常に遅いか完全にフリーズしているように見える場合、複数のスレッドダンプを生成して、バグレポートに添付してください。これにより、IDE がビジー状態になっている処理(または IDE が待機している競合リソース)がわかります。

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

IDE がメモリ不足の場合

Android Studio で生じるメモリの問題は、再現して報告することが難しい場合があります。この問題を解決するため、Android Studio にメモリ使用状況レポート機能が搭載されました。このレポートを Android Studio チームに送信することで、メモリ問題の原因特定が促進されます。

メモリ使用状況レポートを実行する

メモリ使用状況レポートを実行するには、次の手順で操作します。

  1. メニューバーから [Help] > [メモリ使用量の分析] をクリックします。

    Android Studio はヒープをダンプし、IDE を再起動するよう求めるプロンプトを表示します。IDE を再起動すると、ヒープダンプ分析がすぐに開始されます。IDE を再起動しなかった場合は、次回 Android Studio を実行したときにヒープダンプ分析が開始されます。いずれの場合でも、検証用のメモリ使用状況レポートの準備が整うと、IDE が通知を表示します。

    検証用のメモリ使用状況レポートの準備が整ったことを示す通知

  2. [Review Report] をクリックします。

    レポートを送信する前に、含まれているすべての情報を確認できます。

    メモリ使用状況レポート

  3. 確認したら、レポートの内容をコピーしてファイルに貼り付け、バグを報告するときにそのファイルを添付します。

    この方法でレポート情報を送信することにより、Android Studio チームは、メモリの問題を調査中に Issue Tracker を使用してデベロッパーとコミュニケーションをとれるようになります。

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

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

スレッドダンプの生成

スレッドダンプは、JVM で実行されているすべてのスレッドと、スレッドごとのすべてのスタックフレームの出力です。スレッドダンプによって、IDE をビジー状態にしている処理の把握が容易になります。特に、数秒おきに生成された複数のスレッドダンプは有用です。

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

JDK には、スレッドダンプの生成に使用できる「jstack」というツールが付属しています。最初に、Android Studio プロセスのプロセス ID を見つける必要がありますが、そのためには jps コマンドを使用できます(jstack と jps は両方とも JDK の 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 のサポートをご覧ください。

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

プロジェクトのビルドに関連する問題または Gradle の同期に関する問題に固有の次のような情報を報告してください。

  • Gradle のバージョン。[File] > [Project Structure] を選択し、[Project] をクリックして、[Gradle version] を見つけます。
  • Android プラグインのバージョン。Gradle バージョンと同じページで、[Android Plugin Version] を見つけます。
  • Module Compile SDK のバージョン。上記のページの左ペインでモジュールを選択して、[Compile Sdk Version] を見つけます。
  • Module Build Tools のバージョン。上記のページで [Build Tools Version.] を見つけます。
  • Android SDK Tools のバージョン。[Tools] > [SDK Manager] を選択し、[SDK Tools] をクリックして、[Android SDK Tools] を見つけます。

Android エミュレータのバグの詳細

エミュレータの詳細情報を収集する最も簡単な方法は、拡張コントロールの [File a bug] 機能を使用することです。

  1. エミュレータ パネルで [More] をクリックします。
  2. [Extended controls] ウィンドウで、左側の [Bug Report] を選択します。

    これにより、スクリーンショット、AVD 設定情報、バグレポート ログなど、バグレポートの詳細を確認できる画面が開きます。ここで、バグを再現する手順を入力できます(または、次のステップで作成されるレポートに入力します)。

  3. バグレポートによる情報収集が完了するのを待ってから、[Send to Google] をクリックします。これにより、バグレポートをフォルダに保存するウィンドウが開きます。次に、ブラウザを開いて Google Issue Tracker でレポートを作成し、エミュレータに関する必要な詳細情報を入力します。

  4. バグを再現する手順など、残りの詳細情報をすべてレポートに入力し、バグレポートの作成時に保存したファイルを添付します。

上記の方法を使用しない場合は、次の詳細情報を手動で入力する必要があります。

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