バグを報告

このページの手順に沿ってバグレポートを作成します。バグを修正するためのリソースは限られているため、完全な情報が含まれるバグが優先されます。不完全なバグレポートはクローズされます。その場合は、追加情報とともにバグを再送信してください。

修正済みのバグが報告されないようにするために、最新バージョンのツールを使用するようにしてください。Android Studio Issue Tracker で同様の問題を検索して、発生している問題がすでに報告されているかどうかを確認できます。

バグを報告する手順

バグを報告する手順は次のとおりです。

  1. Android Studio からバグレポートを開くには、[Help] > [Submit Feedback] を選択します。

    この方法を使うとバグの報告が簡単になります。バグレポートに Android Studio のバージョン、Kotlin または Java のバージョン、システム情報が自動入力されるからです。これらの情報は問題を正確に再現するために必要です。

    また、こちらでバグを報告し、バージョン情報を手動で追加することもできます。

  2. 問題をデバッグできるように、診断レポートを添付してください。診断レポートの zip ファイルを生成するには、[Help] > [Collect Logs and Diagnostic Data] をクリックします。

  3. 問題を再現するための手順を正確に説明します。コード スニペット、バグの再現に使用できる GitHub プロジェクト、観測している内容のスクリーンショットや記録など、できるだけ多くの情報を送信してください。

  4. 問題の内容を詳しく説明します。想定した結果と確認された内容を説明します。

  5. バグレポートにわかりやすいタイトルを付けます。わかりやすいタイトルを使用すると、問題で並べ替えやすくなります。

特定のバグについては、次のセクションで説明するように、追加情報が必要になります。

Android Studio のバグの詳細

Android Studio 固有のバグを報告するには、このセクションで説明する追加情報を加えます。

IDE がハングする場合

IDE 自体が非常に遅いか完全にフリーズしているように見える場合、このページの説明に沿って複数のスレッドダンプを生成して、バグレポートに添付してください。スレッドダンプは、IDE が何をしていて速度が低下しているかを示します。

IDE の動作が非常に遅いもののフリーズはしていない場合は、バグレポートに idea.log ファイルを添付してください。ファイルを添付するには、[Help] > [Collect Logs and Diagnostic Data] または [Help] > [Show Log in Files](macOS では [Help] > [Show Log in Finder])を選択します。このファイルは、IDE がログにエラーをスローしているかどうかを示しています。

CPU プロファイルを使用して速度低下を診断する

Android Studio の動作が遅い場合は、CPU プロファイルが問題の診断に役立つことがあります。

Android Studio のパフォーマンス テスト プラグインを使用して CPU プロファイルをキャプチャする手順は次のとおりです。

  1. プラグインをインストールします。

    • Android Studio で、プラグイン マーケットプレイスで「Performance Testing」を検索します。
    • または、プラグインのウェブサイトから Android Studio 互換バージョンをダウンロードすることもできます。
  2. CPU プロファイルを作成します。

    1. Android Studio の動作が遅いと思われる場合は、[Start CPU Usage Profiling] を選択します。
    2. 遅延によって問題が生じるいくつかの操作(コード補完や、入力した文字がハイライト表示されるのを待機するなど)を繰り返し行います。
    3. [Stop CPU Usage Profiling] をクリックします。
  3. プロファイル ファイルを共有します。

    CPU スナップショット ファイル名を指定するバルーンが snapshot-NNN 形式で表示されます。このスナップショット ファイルをバグレポートで共有してください。

IDE がメモリ不足の場合

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

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

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

  1. メニューバーから [Help] > [Analyze Memory Usage] をクリックします。

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

    メモリ使用状況レポートが確認できる状態になったことを示す通知
    図 1. メモリ使用状況レポートの通知。
  2. [Review Report] をクリックします。

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

    メモリ使用状況レポート
    図 2. メモリ使用状況レポートの分析。
  3. 確認したら、レポートの内容をファイルにコピーして、バグを報告するときにそのファイルを添付します。

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

IDE がクラッシュ(例外をスロー)する場合

その他の種類のクラッシュの場合は、[Help] > [Collect Logs and Diagnostic Data] または [Help] > [Show Log in Files](macOS では [Help] > [Show Log in Finder])を選択して、検出された idea.log ファイルを添付してください。

スレッドダンプを生成する

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

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

JDK には、スレッドダンプの生成に使用できる jstack というツールが付属しています。まず、Android Studio プロセスのプロセス ID(PID)を確認します。 これを行うには、jps コマンドを使用します。

Linux または Mac OS の場合:

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 のバグを報告するには、問題がわかる実際のプロジェクトまたはサンプル プロジェクトを添付して、必要な情報がすべてキャプチャされるようにしてください。共有する前に機密情報をすべて削除してください。

プロジェクトを共有できない場合は、使用しているツールのバージョンを指定します。(バグを報告する前に、最新の安定版やプレビュー版を使用してください)。ツールのバージョンを確認する手順は次のとおりです。

  • Android Gradle プラグインのバージョン:

    1. [File] > [Project Structure] を選択します。
    2. [Project] をクリックします。
    3. [Android Gradle Plugin Version] を確認します。
  • Gradle のバージョン:

    1. [File] > [Project Structure] を選択します。
    2. [Project] をクリックします。
    3. [Gradle Version] を確認します。
  • Android Studio バージョン:

    1. [Help] > [About] を選択します。
    2. [Android Studio Version] を確認します。

さらに、該当する場合は以下の情報も記載してください。

  • 以前のバージョンから現在のバージョンへの移行により動作に想定外の変化があった場合は、両方のバージョンをお知らせください。
  • ビルドが失敗してエラーが出力される場合は、ビルドをコマンドラインから --stacktrace オプション付き(./gradlew <task> --stacktrace など)で実行し、バグレポートでスタック トレースを提供してください。
  • ビルドに想定外の時間がかかる場合は、次のいずれかを試してください。
    • ./gradlew <task> --scan を実行し、バグレポートで生成された Gradle ビルドスキャンを共有します。
    • ./gradlew <task> -Pandroid.enableProfileJson=true を実行して Chrome トレース <root-project>/build/android-profile ディレクトリの下に生成されたファイルを探します。

Android Emulator のバグの詳細

エミュレータの拡張コントロールを使用して情報を収集し、バグを報告する手順は次のとおりです。

  1. エミュレータ パネルでその他アイコン をクリックします。
  2. [Extended controls] ウィンドウで [Bug Report] を選択します。

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

  3. バグレポートによる情報収集が完了するのを待ってから、[Send to Google] をクリックします。

    バグレポートをフォルダに保存するウィンドウが開きます。またブラウザが開き、Google Issue Tracker のレポート作成画面が、エミュレータに関する必要な詳細情報が入力された状態で表示されます。

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

または、次の詳細を手動で入力します。

  • エミュレータのバージョン

    1. エミュレータで [Extended controls] を開きます。
    2. [Help] をクリックします。
    3. [About] タブをクリックして、[Emulator version] を確認します。
  • Android SDK Tools のバージョン

    1. [Tools] > [SDK Manager] を選択します。
    2. [SDK Tools] をクリックします。
    3. [Android SDK Tools] を確認します。
  • ホスト CPU モデル

    • Linux の場合: /proc/cpuinfo を開きます。
    • Windows の場合: [マイ コンピュータ] を右クリックして、[プロパティ] を選択します。
    • macOS の場合: Apple アイコンを選択し、[この Mac について] をクリックします。
  • デバイス名

    1. AVD Manager で、デバイスの [Actions] 列のメニューをクリックして開きます。
    2. [詳細を表示] を選択します(または $avdname.avd/config.ini ファイルを開きます)。
    3. hw.device.name のエントリを見つけます。例: hw.device.name=Nexus 5