Android 开放源代码项目维护着一个公开的问题跟踪器,您可以在其中针对 Android 核心软件堆栈报告错误及请求功能。(要详细了解此问题跟踪器,请参阅报告错误页面。)报告错误意义重大(谢谢!),但在您提交错误报告后它们会经历些什么?本页将介绍错误的生命周期。
Android 开放源代码项目 (AOSP) 问题跟踪器仅适用于与 Android 核心软件堆栈相关的错误和功能请求,是一款面向开放源代码社区的技术工具。
它不是一个客户支持论坛。要获取支持信息,请参阅 Nexus 和 Pixel 帮助中心。对于其他设备,则由设备制造商或销售这些设备的运营商提供支持。
通过 Google 的支持网站,可以获得 Google 应用方面的支持。对于第三方应用,则由每个应用的开发者提供支持,例如,您可以通过 Google Play 上提供的联系信息与他们联系。
下面简要说明了错误的生命周期:
- 用户提交一个错误,该错误的状态将为“New”(新)。
- AOSP 维护人员定期审核错误并将其进行分类。错误将被划分为以下 4 个类别之一:“New”(新)、“Open”(待解决)、“No-Action”(无需处理)或“Resolved”(已解决)。
- 每个类别都包括多种状态,这些状态能够提供有关问题处理情况的更多详细信息。
- 标记为“已解决”的错误最终将在未来版本的 Android 软件中予以修复。
类别详细信息
我们使用问题跟踪器中的 Status(状态)字段来指定问题处于解决过程中的什么状态。这与问题跟踪器文档中指定的定义一致。
“新”问题
“新”问题包括尚未进行任何处理的错误报告,具有以下两种状态:
- New(新):错误报告尚未被分类(即 AOSP 维护人员尚未审核。)
- New + Hotlist:NeedsInfo(新 + Hotlist:需要信息):错误报告中的信息不充分,我们无法予以处理。报告错误的人员需要提供更多详细信息,然后我们才能对其进行分类。如果报告错误的人员在规定的时间内未提供新信息,相应错误默认可能会被关闭,变为“无需处理”类别下的某种状态。
“待解决”的问题
此类别包含需要处理但仍未解决的错误(正在等待我们对源代码进行更改)。
- Assigned(已分配):错误报告已被认定为细节充分、问题有效,且相应错误已被分配给特定贡献者进行评估和分析。
- Accepted(已接受):被指派的人员已确认并已着手解决相应问题。
通常情况下,错误一开始的状态为已分配且一直保持该状态,直到有人有意解决它,此时错误的状态会变为已接受。不过请注意,我们并不保证一定会是这样,而错误直接从已分配变为“已解决”类别下的某种状态也是很常见的。
一般来说,如果错误处于“待解决”类别下的某种状态,则表明 AOSP 团队已将其认定为有效问题,并且贡献者贡献的高质量修复方案很可能会被接受。不过,我们无法保证及时修复任何特定版本的错误。
“无需处理”的问题
此类别包含被视为不需要任何处理的错误。
- Won't Fix (Not reproducible)(无法修复(不可重现)):AOSP 贡献者尝试重现所描述的行为,但无法做到。有时,这意味着错误虽然有效但不常见或难以重现,或因信息不充分而无法解决问题。
- Won't Fix (Intended behavior)(无法修复(正常情况)):AOSP 维护人员已确定所描述的行为不是错误,而是正常情况。这种状态通常也称为“正常情况”(WAI)。如果是功能请求,则 AOSP 维护人员已确定在 Android 中将不会实现相应请求。
- Won't Fix (Obsolete)(无法修复(过时)):由于产品有所变化,相应问题已无关紧要。
- Won't Fix (Infeasible)(无法修复(不可行)):解决问题所需进行的更改不可能实现。该状态还用于表示报告的问题无法在 AOSP 中予以处理,通常是因为问题与定制设备或外部应用相关,或者报告者误认为此跟踪器是帮助论坛。
- Duplicate(重复):问题跟踪器中已有相同的报告。如有任何实际处理措施,都将针对相同报告予以报告。
“已解决”的问题
此类别包含已被处理且现在被视为已解决的错误。
- Fixed (verified)(已修复(已通过验证)):相应错误已被修复,且修复方案已被纳入到一个正式版本中。在设置此状态的同时,我们也会尝试设置一个属性,说明错误是在哪个版本中修复的。
- Fixed(已修复):相应错误已经在源代码树中予以修复(或功能已经实现),但修复方案尚未被纳入到正式版本中。
其他事项
上述状态和生命周期是我们通常在尝试跟踪软件时采取的方式。不过,由于 Android 包含大量软件,相应地也会收到大量错误报告。因此,有时候错误并没有经过正式流程中的所有状态。虽然我们会尽量确保系统保持最新状态,但我们倾向于定期进行“错误清除”- 在此过程中,我们会检查数据库并进行更新。