• 报告错误
    • 如何报告错误
    • Android Studio 错误详情
      • 如果 IDE 挂起
      • 如果 IDE 耗尽内存
      • 如果 IDE 崩溃或引发异常
      • 生成线程转储
    • Instant Run 错误详情
      • 我们收集的信息
      • 启用记录附加信息
      • 报告问题
  • 构建工具和 Gradle 错误详情
  • Android Emulator 错误详情

    报告错误

    我们希望修复您遇到的错误!但是许多错误报告未提供必要的信息。因此,我们将有限的资源集中用于修复包含完整报告的错误。为提高您报告的错误得以修复的机率,请花时间认真阅读此文档。

    如果您未遵循相关步骤,我们将关闭您报告的错误。 如果出现此情况,只需提供补充信息并重新提交错误报告即可。

    另请注意,Issue Tracker 不是一个支持论坛。 如果您有关于如何使用工具或如何让 Android 应用上线的问题,请访问 stackoverflow.com 或 Android 开发者支持资源之一。

    如何报告错误

    • 确保您使用的是最新版本工具。我们耗费了大量时间来检查报告的错误是否已修复。如果我们关闭了您的问题,并指明需要阅读此文档,请重新开立一个问题,前提是您可以使用最新版本工具重现此问题。

    • 描述重现问题的准确步骤。 请具体说明。 如果我们第一次尝试就可以重现问题,修复的机率会大大增加。如果可能的话,请列出代码片段(或者,最好注明可用于重现此错误的 GitHub 项目)。屏幕截图也有助于说明您观察到的问题。

    • 描述您期望发生的结果以及实际观察到的结果。

    • 列出版本信息。 对于 Android Studio,您可以在 About 对话框(点击 Help > About)(或者,在 Mac 上,点击 Android Studio > About Android Studio)中查找此信息。您无需突出显示要复制的文本,只需按 Ctrl + C(在 Mac 上,则按 Command + C),然后将它粘贴到错误报告中即可。

    • 如果适用,列出您正在使用的 Java 版本(对于 Android Studio,此信息包含在 About 框中)。

    • 列出您所使用的操作系统。

    • 选择一个概括性的短语来描述错误。 令人惊讶的是,提交的错误报告当中有很多都是使用“错误”、“问题”、“异常”、“不工作”这样的概括性短语。

    • 对于某些类型的错误,我们还需要其他信息:

      • Android Studio 错误详情
      • Instant Run 错误详情
      • Gradle 错误详情
      • Emulator 错误详情
        再强调一次,清楚说明如何重现错误至关重要。 如果可能的话,分享文件或项目,以帮助重现问题(当然,您不必在错误报告中附加任何专有源代码)。屏幕截图也有助于说明您正讨论的问题。

    收集此信息后,在此处提交您的错误

    Android Studio 错误详情

    列出以下特定于 Android Studio 错误的其他信息。

    如果 IDE 挂起

    如果 IDE 本身运行非常缓慢或完全挂起,请生成几个线程转储并将它们附加到错误报告中。 这些转储告诉我们 IDE 正在忙于执行什么操作(或在等待什么争用资源)。

    如果 IDE 运行缓慢但未挂起,则同时附加 idea.log 文件(选择 Help > Show Log in Finder)。 它会告诉我们是否因 IDE 持续将错误记录到日志中而导致它运行缓慢。

    如果 IDE 耗尽内存

    如果 IDE 耗尽内存,请执行以下命令,生成堆的直方图:

    1. jmap -histo:live <pid>

    如果 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 中:

    1. jps -mv | grep studio

    对于 Windows:

    1. jps -mv | findstr studio

    例如,这将打印输出如下一行长长的信息:

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

    左侧的第一个数字(在本例中为 37605)是进程 ID。

    然后,您可以生成一个线程转储,并将它保存到文件 dump.txt 中,操作如下:

    1. jstack -l pid >> dump.txt

    如果这不起作用,您可以尝试其他一些特定于平台的方式来生成线程转储,有关详细说明,请参阅 IntelliJ 支持。

    Instant Run 错误详情

    要报告 Instant Run 问题,请执行以下步骤:

    • 启用 Android Studio 记录有关 Instant Run 会话的附加信息。
    • 如果您要在完成上一步之前提交有关您遇到的问题的反馈,请尝试重现问题。
    • 遇到 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 使用此文件协调运行 Instant Run 功能和 Android Plugin for Gradle。
    • build.log:此日志采集 Gradle 版本号信息。 通过 —info 命令行选项运行 Gradle 并点击 View > Tool Windows > Gradle Console(或在工具窗口栏中点击 Gradle ConsoleReport a bug - 图1),显示的输出与此类似。
    • Logcat 输出:在应用运行时从目标设备或模拟器采集 Instant Run 运行时事件(即,带 InstantRun 标记的事件)。 如需了解有关 Logcat 输出的更多信息,请阅读通过 Logcat 记录和查看日志。
    • profile.log:此日志提供 Gradle 处理每个构建任务的进度概况。
    • TARGET-*:这是一个 Android Studio 以您的目标设备命名的空白文件(例如,TARGET-MOTOROLA-NEXUS6)。

    启用记录附加信息

    要授予 Android Studio 采集和发送此信息的权限,请执行以下步骤:

    • 打开 Settings 或者 Preferences 对话框。
    • 导航至 Build, Execution, Deployment >Instant Run
    • 选中 Log extra info 复选框。 您可以随时停用此选项。
    • 点击 OK

    报告问题

    启用记录附加信息后,重现您之前遇到的任何 Instant Run 问题。 重现问题后,按照如下步骤立即提交报告:

    • 从菜单栏中选择 Help > Report Instant Run Issue。 此时将出现一个如图 4 所示的对话框。Report a bug - 图2
      图 4. 您可以在文本字段中提供额外的详情,检查 Android Studio 将连同您的报告一起发送的日志。

    • 在此文本字段中提供一些其他信息,描述您遇到的问题,例如重现问题的步骤或实际行为与您预期行为之间的差异。

    • 操作完成后点击 OK

    构建工具和 Gradle 错误详情

    列出项目构建问题或 Gradle 同步问题的以下特定信息:

    • Gradle 版本。选择 File > Project Structure,点击 Project,然后找到 Gradle version

    • Android 插件版本。在 Gradle 版本页面上,找到 Android Plugin Version

    • 模块编译 Sdk 版本。在以上页面的左侧窗格中选择您的模块,并找到 Compile Sdk Version

    • 模块构建工具版本。在以上页面中,找到 Build Tools Version

    • Android SDK 工具版本。选择 Tools > Android > SDK Manager,点击 SDK Tools,然后找到 Android SDK Tools

    Android Emulator 错误详情

    列出 Emulator 错误的以下特定信息:

    • Emulator 版本。在 Emulator 中,打开 Extended controls,点击 Help,然后点击 About 标签,找到 Emulator version
    • Android SDK 工具版本。选择 Tools > Android > SDK Manager,点击 SDK Tools,然后找到 Android SDK Tools
    • 主机 CPU 型号。
      • 在 Linux 上:打开 /proc/cpuinfo
      • 在 Windows 上:右键点击我的计算机,选择属性
      • 在 Mac 上:点击 Apple 图标,然后点击关于此 Mac
    • 设备名称。在 AVD 管理器中,在该设备的操作列中点击打开下拉菜单,然后选择查看详情(或打开 $avdname.avd/config.ini 文件)。查找 hw.device.name 对应的条目。例如:“hw.device.name=Nexus 5”