Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

バグの報告

Google は、報告されたバグを修正する必要があります。しかし、その多くは修正に必要な情報を欠いています。 そのため、限られたリソースは、十分な情報が報告されているバグに集中的に投入されることになります。 報告したバグが修正される可能性を高めるため、ぜひこのドキュメントをお読みください。

ここに記載された手順で報告されていないバグはクローズされます。その場合の対応は、不足していた情報を追加して再送信することのみです。

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

バグを報告する手順

  1. ご使用のツールが最新バージョンであることを確認します。これにより、すでに解決されたバグをレビューしなくても済むようになります。可能であれば、さらに Android Studio の Issue Tracker で同様の問題を検索し、その問題がすでに報告されていないかどうか確認します(通常、エラー メッセージを検索キーワードにすることで確認できます)。

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

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

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

  5. バグの概要に必要最小限の説明を記述します。概要に「バグ」、「問題」、「例外」、「動作不良」といった言葉しか記されていないバグレポートが驚くほど多く、そのことが問題の特定を困難にしています。

  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] > [Analyze Memory Usage] をクリックします。

    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 をビジー状態にしている処理の把握が容易になります。特に、数秒おきに生成された複数のスレッドダンプは有用です。

IDE がビジー状態で CPU に大きな負荷がかかっている場合や、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 のバグの詳細

問題を再現できる実際のプロジェクトまたはサンプル プロジェクトを添付してください。これが、必要な情報をすべて取得できるようにするための最善の方法です。共有する前に、必ず機密情報をすべて削除してください。

プロジェクトを共有できない場合は、使用しているツールのバージョンをお知らせください(その前に、最新の安定版またはプレビュー版をお試しください)。

  • Android Gradle プラグインのバージョン: [File] > [Project Structure] を選択し、[Project] をクリックして、[Android Gradle Plugin Version] を確認します。
  • Gradle のバージョン: 上記のページで [Gradle Version] を確認します。
  • Android Studio のバージョン: [Help] > [About] を選択して、Android Studio のバージョンを確認します。

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

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

Android Emulator のバグの詳細

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

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

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

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

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

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

  • エミュレータのバージョン。 エミュレータで [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)。