请按照本页上的步骤完成错误报告。修复错误的资源有限,因此具有完整信息的错误将被优先考虑。不完整的错误报告将被关闭。如果发生这种情况,请使用其他信息重新提交您的错误。
为了帮助确保您没有报告已修复的错误,请确保您使用的是最新版本的工具。您也可以在 Android Studio 问题跟踪器 上搜索类似问题,查看您遇到的问题是否已报告。
如何报告错误
要报告错误,请按照以下步骤操作
要从 Android Studio 打开错误报告,请选择 帮助 > 提交反馈。
这是启动错误的最简单方法,因为它会使用您的 Android Studio 版本、Kotlin 或 Java 版本以及系统信息填充错误报告,这些信息是正确重现问题所必需的。
您也可以 在此处提交您的错误 并自己添加版本信息。
附上诊断报告,以便我们调试您的问题。要生成诊断报告 zip 文件,请点击 帮助 > 收集日志和诊断数据。
描述重现问题的准确步骤。提交尽可能多的信息,包括代码片段、可用于重现错误的 GitHub 项目,以及您观察到的截图或录制内容。
详细描述问题。说明您预期的结果以及您实际观察到的结果。
为错误报告选择一个描述性标题。使用更具描述性的标题可以更轻松地按问题进行分类。
对于某些错误,我们需要额外的信息,如以下部分所述
Android Studio 错误的详细信息
要报告特定于 Android Studio 的错误,请包括本节中描述的额外信息。
如果 IDE 挂起
如果 IDE 本身看起来非常迟钝或完全冻结,请 生成几个线程转储,如本页面所述,并将它们附加到错误报告中。线程转储显示了 IDE 导致其变慢的操作。
如果 IDE 迟钝但没有冻结,请将 idea.log
文件附加到您的错误报告中。要附加文件,请选择 帮助 > 收集日志和诊断数据 或 帮助 > 在文件中显示日志(在 macOS 上为 帮助 > 在查找器中显示日志)。此文件显示 IDE 是否将错误抛出到日志中。
使用 CPU 配置文件诊断缓慢
如果您在 Android Studio 中遇到迟钝问题,CPU 配置文件有时可以帮助诊断问题。
按照以下步骤使用 Android Studio 性能测试插件捕获 CPU 配置文件
安装插件。
- 在 Android Studio 中,在插件市场中搜索“性能测试”。
- 或者,您可以从 插件网站 下载与 Android Studio 兼容的版本。
创建 CPU 配置文件。
- 当 Android Studio 似乎很迟钝时,选择 开始 CPU 使用情况分析。
- 重复几个存在延迟问题的操作(代码完成、键入并等待突出显示赶上等等)。
- 点击 停止 CPU 使用情况分析。
共享配置文件。
将出现一个气泡,提供 CPU 快照文件名,其格式为
snapshot-NNN
。在您的错误报告中共享该快照文件。
如果 IDE 内存不足
Android Studio 中的内存问题有时难以重现和报告。为了帮助解决此问题,Android Studio 包含一个内存使用报告,您可以将其发送给 Android Studio 团队,以帮助确定内存问题的根源。
运行内存使用报告
要运行内存使用报告,请按照以下步骤操作
从菜单栏中点击 帮助 > 分析内存使用情况。
Android Studio 转储堆并提示您重新启动 IDE。如果您重新启动 IDE,堆转储分析将立即开始。否则,堆转储分析将在您下次运行 Android Studio 时开始。无论哪种情况,IDE 都会在内存使用报告准备好进行审查时通知您,如图 1 所示。
点击 查看报告。
在您发送报告之前,您可以查看其中包含的信息
完成审查后,将报告内容复制到一个文件中,并在您 提交错误 时将该文件附加。
通过这种方式提交报告信息使 Android Studio 团队能够在调查您的内存问题时使用问题跟踪器与您交流。
如果 IDE 崩溃或抛出异常
对于其他类型的崩溃,请附加通过选择 帮助 > 收集日志和诊断数据 或 帮助 > 在文件中显示日志(在 macOS 上为 帮助 > 在查找器中显示日志)找到的 idea.log
文件。
生成线程转储
线程转储是 JVM 中运行的所有线程的打印输出。对于每个线程,它包括所有堆栈帧的打印输出。这使得查看 IDE 忙于做什么变得容易,尤其是在您在几秒钟内生成几个线程转储时。
当您报告 IDE 非常忙,CPU 被占用或 IDE 似乎已冻结的错误时,线程转储可以精确地指出哪个代码正在执行大量工作,或者哪些线程正在争夺资源并导致死锁。
JDK 附带了一个名为 jstack
的工具,可用于生成线程转储。首先,找到 Android Studio 进程的进程 ID (PID)。为此,请使用 jps
命令
在 Linux 或 macOS 上
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 插件版本
- 选择 文件 > 项目结构。
- 点击 项目。
- 找到 Android Gradle 插件版本。
Gradle 版本
- 选择 文件 > 项目结构。
- 点击 项目。
- 找到 Gradle 版本。
Android Studio 版本
- 选择 帮助 > 关于。
- 找到 Android Studio 版本。
此外,请在适用情况下包含以下信息
- 如果行为从早期版本到当前版本意外发生变化,请指示这两个版本。
- 如果构建失败并出现错误,请使用
--stacktrace
选项(如./gradlew <task> --stacktrace
)从命令行运行构建,并在您的错误报告中提供堆栈跟踪。 - 如果构建花费的时间超过预期,请尝试以下方法之一
- 运行
./gradlew <task> --scan
并在您的错误报告中共享生成的 Gradle 构建扫描。 - 运行
./gradlew <task> -Pandroid.enableProfileJson=true
并在您的错误报告中共享 Chrome-trace 文件,这些文件在<root-project>/build/android-profile
目录下生成。
- 运行
Android 模拟器错误的详细信息
按照以下步骤使用模拟器的扩展控件来收集信息并提交错误
- 在模拟器面板中,点击 更多 。
在 扩展控件 窗口中,选择 错误报告。
这将打开一个屏幕,其中包含错误报告详细信息,例如截图、AVD 配置信息和错误报告日志。您可以在此处输入重现步骤,或者等待并在下一步生成的报告中输入。
等待错误报告完成收集,然后点击 发送到 Google。
将打开一个窗口供您将错误报告保存到文件夹中。您的浏览器也将打开以在 Google 问题跟踪器中创建一个报告,其中包含已填写的必要模拟器详细信息。
在报告中,完成任何剩余的详细信息,例如重现错误的步骤,并附加创建错误报告时保存的文件。
否则,手动输入以下详细信息
模拟器版本
- 在模拟器中,打开 扩展控件。
- 点击 帮助。
- 点击 关于 选项卡以查找 模拟器版本。
Android SDK 工具版本
- 选择 工具 > SDK 管理器。
- 点击 SDK 工具。
- 找到 Android SDK 工具。
主机 CPU 模型
- 在 Linux 上:打开
/proc/cpuinfo
。 - 在 Windows 上:右键点击 我的电脑 并选择 属性。
- 在 macOS 上:选择 Apple 图标并点击 关于本机
- 在 Linux 上:打开
设备名称
- 从 AVD 管理器 中,点击打开设备 操作 列中的菜单。
- 选择 查看详细信息(或打开
$avdname.avd/config.ini
文件)。 - 查找 hw.device.name 的条目。例如:
hw.device.name=Nexus 5
。