Android 开放源代码项目提供了一个公开问题跟踪工具,您可以在其中就 Android 核心软件堆栈报告错误及请求功能。(要详细了解此问题跟踪工具,请参阅报告错误页面。)我们非常欢迎您报告错误(谢谢!),但在提交错误报告后会发生什么呢?本页将说明错误的生命周期。
*请注意:Android 开放源代码项目 (AOSP) 问题跟踪工具仅用于与 Android 核心软件堆栈相关的错误报告和功能请求,同时也是一个供开放源代码社区使用的技术工具。
但它不是一个客户支持论坛。您可以在 Google 的 Nexus 支持网站上找到关于 Nexus 设备的支持信息。其他设备的支持由设备制造商或销售这些设备的运营商提供。
通过 Google 的支持网站可以找到关于 Google 应用的支持信息。涉及第三方应用的支持由各自的应用开发者提供,例如,您可以通过 Google Play 上提供的联系信息与他们联系。
下面简要说明了错误的生命周期:
用户提交一个错误,该错误的状态将为“New”(新)。
AOSP 维护人员定期审核错误并进行分类。错误将划分为 4 个类别中的一个:“新”、“Open”(待解决)、“No-Action”(无需处理)或“Resolved”(已解决)。
每个类别都包括多种状态,可提供有关问题处理的更多详情。
“已解决”类别中的错误最终会在未来版本的 Android 软件中予以修复。
以下是关于每个类别、其含义及处理方式的更多信息。
“新”问题包括尚未进行任何处理的错误报告,具有以下两种状态:
New(新): 错误报告尚未分类(即由 AOSP 维护人员审核。)
NeedsInfo(需要信息): 错误报告的信息不充分,无法予以处理。报告错误的用户需要提供更多详细信息,错误才可以进行分类。如果在规定时间内未提供新信息,该错误默认可能会被关闭,变为“无需处理”类别下的某种状态。
此类别包含需要处理但仍未解决的错误(正在等待我们对源代码进行更改)。
Unassigned(未分配): 错误报告已被认定为细节充分、问题有效,但尚未分配给 AOSP 贡献者进行修复。
Assigned(已分配): 与“未分配”类似,但错误实际上已分配给特定贡献者进行修复。
通常情况下,特定错误一开始会处于“未分配”状态并一直保持该状态,直到有人有意解决该错误,此时该错误会变成“已分配”状态。但请注意,我们并不保证一定会是这样,而错误从“未分配”直接变为“已解决”类别下的某种状态也是很常见的。
一般来说,如果一个错误处于以上“待解决”类别下的某种状态,则表明 AOSP 团队已将其认定为有效问题,该错误很可能会获得贡献者的认可,从而得到高质量的修复。不过,我们无法保证及时修复任何特定版本的错误。
此类别包含由于某种原因而被认定为不需要任何处理措施的错误。
Spam(无关内容): 好心人士给我们送来一些美味的猪肉制品,但是很遗憾,我们并不需要。
Duplicate(重复): 问题跟踪工具中已有相同的报告。类似报告将收到有关任何实际处理措施的消息。
Unreproducible(不可重现): AOSP 贡献者尝试重现所描述的行为,但无法做到。有时,这意味着错误虽然有效但不常见或者难以重现,有时也意味着错误已在更高版本中予以修复。
Obsolete(过时): 与“不可重现”类似,但可以合理认定错误确实存在于所报告的版本中,但已在更高版本中得以修复。
WorkingAsIntended(正常情况): AOSP 维护人员已确定所描述的行为不是错误,而是正常情况。这种状态通常也称为“WAI”。
Declined(遭拒): 除了通常用于功能请求(而非错误)的情况之外,其他与“正常情况”类似。也就是说,AOSP 维护人员已确定相应请求不会在 Android 中予以实现。
NotEnoughInformation(缺少充分信息):报告没有提供充分的信息,导致维护人员无法采取任何处理措施。
UserError(用户错误):报告是用户在使用 Android 时犯错而造成的结果,例如输入错误的密码导致无法连接到服务器。
WrongForum(错误论坛):报告无法在 AOSP 中予以处理,通常是因为报告与定制设备或外部应用相关。
Question(问题):用户误以为问题跟踪工具是帮助论坛而提出的问题。
此类别包含已采取处理措施且现在被视为已解决的错误。
Released(已发布):此错误已修复,且修复方案已纳入一个正式版本中。在设置此状态的同时,我们也会尝试设置一个属性,说明错误在哪个版本中予以修复的。
FutureRelease(未来版本):此错误已经在源代码树中予以修复(或功能已经实现),但修复方案尚未纳入正式版本中。
上述状态和生命周期是我们通常跟踪软件的方式。但是,Android 包含大量软件,相应地也会收到大量错误报告。因此,有时候错误并没有经过正式流程中的所有状态。虽然我们会尽量确保系统保持最新状态,但我们倾向于定期进行“错误清除”- 在此过程中,我们会检查数据库并进行更新。