常见问题解答

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

此页面提供了一些常见问题 (FAQ) 的答案。

开源

什么是 Android 开源项目?

Android 开源项目 (AOSP) 是指组成 Android 的人员、流程和源代码。

人们监督项目并开发源代码。流程是我们用来管理软件开发的工具和程序。最终结果是源代码,您可以在手机和其他设备中使用。

我们为什么要开放 Android 源代码?

Google 启动 Android 项目是为了响应我们自己推出移动应用程序的经验。我们希望确保始终有一个开放平台可供运营商、原始设备制造商和开发人员使用,以使他们的创新想法成为现实。我们还希望避免任何中心故障点,因此没有任何一个行业参与者可以限制或控制任何其他人的创新。对于 AOSP,我们最重要的一个目标是确保开源 Android 软件的实施尽可能广泛和兼容,以造福所有人。

Android是一个什么样的开源项目?

Google 监督核心 Android 开源平台的开发,并致力于创建强大的开发人员和用户社区。大多数情况下,Android 源代码是在宽松的 Apache License 2.0 下获得许可的,而不是copyleft许可。我们选择 Apache 2.0 许可证是因为我们相信它会鼓励广泛的 Android 软件采用。有关详细信息,请参阅许可证

为什么谷歌要掌管安卓?

启动软件平台很复杂。开放性对于平台的长期成功至关重要,因为开放性吸引了开发人员的投资并确保了公平的竞争环境。该平台还必须是对用户有吸引力的产品。

Google 已投入必要的专业工程资源,以确保 Android 成为一个完全有竞争力的软件平台。谷歌将 Android 项目视为全面的产品开发业务,并达成必要的商业交易,以确保运行 Android 的优秀设备进入市场。

通过确保 Android 在用户中取得成功,我们帮助确保 Android 作为平台和开源项目的活力。毕竟,谁想要一个不成功产品的源代码呢?

Google 的目标是确保围绕 Android 建立成功的生态系统。我们开放了 Android 源代码,以便任何人都可以修改和分发软件以满足自己的需求。

Google 对 Android 产品开发的总体战略是什么?

我们将出色的设备发布到竞争激烈的市场中。然后,我们将我们所做的创新和增强功能整合到核心平台中,作为下一个版本。

在实践中,这意味着 Android 工程团队专注于少数“旗舰”设备,并开发下一个版本的 Android 软件来支持这些产品的发布。这些旗舰设备吸收了大部分产品风险,并为广大的 OEM 社区开辟了道路,他们会跟进更多利用新功能的设备。通过这种方式,我们可以确保 Android 平台根据实际设备的需求进行演进。

Android软件是如何开发的?

Android 的每个平台版本(如 1.5 或 8.1)在开源树中都有对应的分支。最近的分支被认为是当前的稳定分支版本。这是制造商移植到其设备的分支。该分支始终保持适合发布。

同时,还有一个当前的实验分支,用于开发投机性贡献,例如大型下一代功能。错误修复和其他贡献可以酌情包含在实验分支的当前稳定分支中。

最后,谷歌在开发旗舰设备的同时,也在开发下一个版本的 Android 平台。该分支会根据需要从实验分支和稳定分支中引入更改。

有关代码线、分支和发布的详细信息,请参阅AOSP 代码管理

为什么Android的部分内容是私下开发的?

将设备推向市场通常需要一年多的时间。而且,当然,设备制造商希望发布他们可以发布的最新软件。同时,开发人员在编写应用程序时不希望不断跟踪平台的新版本。两个群体都在运输产品和不想落后之间感到紧张。

为了解决这个问题,包括核心平台 API 在内的下一版 Android 的某些部分是在私有分支中开发的。这些 API 构成了 Android 的下一个版本。我们的目标是在创建平台的下一个版本时将注意力集中在当前稳定版本的 Android 源代码上。这允许开发人员和 OEM 使用单个版本,而无需跟踪未完成的未来工作以跟上进度。 Android系统其他与应用兼容性无关的部分都是开放开发的。我们打算随着时间的推移将更多这些部分转移到开放式开发中。

什么时候发布源代码?

当他们准备好时。发布源代码是一个相当复杂的过程。 Android 的某些部分是公开开发的,并且源代码始终可用。其他部分首先在私有树中开发,并且在下一个平台版本准备好时发布源代码。

在某些版本中,核心平台 API 已经提前准备好,以便我们可以在设备发布之前将源代码推出以便及早查看。在其他版本中,这是不可能的。在所有情况下,当我们认为版本稳定,并且在开发过程允许的情况下,我们都会发布平台源代码。

发布新 Android 版本的源代码涉及什么?

发布新版 Android 平台的源代码是一个重要的过程。首先,该软件被内置到设备的系统映像中,并通过各种形式的认证,包括手机将要部署的地区的政府监管认证。该代码还经过操作员测试。这是该过程的一个重要阶段,因为它有助于检测软件错误。

当发布得到监管机构和运营商的批准后,制造商开始批量生产设备,我们开始发布源代码。

在量产的同时,谷歌团队开始了几项准备开源版本的工作。这些工作包括进行最终 API 更改、更新文档(例如,以反映在资格测试期间所做的任何修改)、为新版本准备 SDK 以及发布平台兼容性信息。

我们的法律团队会进行最终签署以将代码发布到开源中。正如开源贡献者需要签署一份贡献者许可协议以证明他们对其贡献的知识产权所有权一样,谷歌必须验证来源是否已获准进行贡献。

从量产开始,软件发布过程通常需要一个月左右的时间,因此源代码发布通常与设备到达用户的时间差不多。

AOSP 与 Android 兼容性计划有何关联?

Android 开源项目维护 Android 软件,并开发新版本。因为它是开源的,所以该软件可以用于任何目的,包括开发与基于相同源的其他设备不兼容的设备。

Android Compatibility Program 的功能是定义与开发人员编写的第三方应用程序兼容的 Android 基线实现。与Android 兼容的设备有资格参与 Android 生态系统,包括 Google Play;不符合兼容性要求的设备存在于该生态系统之外。

换句话说,Android 兼容性计划是我们将 Android 兼容设备与仅运行源代码衍生产品的设备区分开来的方式。我们欢迎所有使用 Android 源代码,但要参与 Android 生态系统,设备必须被程序识别为与 Android 兼容。

我如何为 Android 做出贡献?

您可以报告错误、为 Android 编写应用程序或向 Android 开源项目贡献源代码。

我们接受的代码贡献类型是有限的。例如,有人可能想要贡献一个替代应用程序 API,例如一个完整的基于 C++ 的环境。我们会拒绝这种贡献,因为 Android 鼓励应用程序在 ART 运行时中运行。同样,我们不会接受与我们的许可目标不兼容的贡献,例如 GPL 或 LGPL 库。

我们鼓励有兴趣贡献源代码的人在开始任何工作之前通过Android 社​​区页面上列出的渠道与我们联系。有关详细信息,请参阅贡献

如何成为 Android 提交者?

Android 开源项目实际上并没有提交者的概念。所有贡献(包括由 Google 员工撰写的贡献)都通过称为 Gerrit 的基于 Web 的系统进行,该系统是 Android 工程流程的一部分。该系统与 git 源代码管理系统协同工作,以干净地管理源代码贡献。

提交后,更改需要由指定的审批人接受。审批者通常是 Google 员工,但相同的审批者负责所有提交,无论其来源如何。

有关详细信息,请参阅提交补丁

回到顶部

兼容性

什么是安卓“兼容性”?

我们将Android 兼容设备定义为可以运行第三方开发人员使用 Android SDK 和 NDK 编写的任何应用程序的设备。我们使用它作为过滤器来区分可以参与 Android 应用生态系统的设备和不能参与的设备。对于适当兼容的设备,设备制造商可以寻求批准使用 Android 商标。不兼容的设备源自 Android 源代码,不允许使用 Android 商标。

换言之,兼容性是参与Android应用生态系统的先决条件。欢迎任何人使用 Android 源代码。但如果设备不兼容,则不被视为 Android 生态系统的一部分。

Google Play 在兼容性方面的作用是什么?

拥有 Android 兼容设备的设备制造商可以寻求获得 Google Play 客户端软件的许可。许可设备成为 Android 应用生态系统的一部分,使用户能够从所有兼容设备共享的目录中下载开发者的应用。许可不适用于不兼容的设备。

什么样的设备可以兼容安卓?

Android 软件可以移植到许多不同的设备上,包括一些第三方应用程序无法正常运行的设备。 Android 兼容性定义文档(CDD) 详细说明了被视为兼容的特定设备配置。

例如,虽然 Android 源代码可以移植到没有摄像头的手机上运行,​​但 CDD 要求所有手机都有摄像头。这允许开发人员在编写他们的应用程序时依赖一组一致的功能。

CDD 继续发展以反映市场现实。例如,CDD 1.6 版仅支持手机。但 2.1 版允许设备省略电话硬件,从而使平板音乐播放器等非电话设备兼容。在进行这些更改时,我们还将增强 Google Play 以允许开发者保留对其应用程序可用位置的控制权。继续电话示例,管理 SMS 文本消息的应用程序在媒体播放器上没有用处,因此 Google Play 允许开发人员将该应用程序仅限于电话设备。

如果我的设备兼容,它会自动访问 Google Play 和品牌吗?

不,访问不是自动的。 Google Play 是由 Google 运营的服务。实现兼容性是获得对 Google Play 软件和品牌的访问权限的先决条件。在设备被认定为 Android 兼容设备后,设备制造商应填写Google 移动服务许可中包含的联系表,以寻求访问 Google Play。如果我们可以帮助您,我们会与您联系。

如果我不是制造商,如何获得 Google Play?

Google Play 仅授权给手机制造商运送设备。有关特定案例的问题,请联系android-partnerships@google.com

如何访问适用于 Android 的 Google 应用程序,例如 Google 地图?

适用于 Android 的 Google 应用程序(例如 YouTube、Google Maps 和 Gmail)是不属于 Android 的 Google 资产,需要单独获得许可。联系android-partnerships@google.com查询与这些应用程序相关的问题。

兼容性是强制性的吗?

不可以。Android 兼容性计划是可选的。 Android 源代码是开放的,因此任何人都可以使用它来构建任何类型的设备。但是,如果制造商希望在他们的产品中使用 Android 名称,或者想要访问 Google Play,他们必须首先证明他们的设备是兼容的

兼容性认证的费用是多少?

为设备获取 Android 兼容性无需任何费用。兼容性测试套件是开源的,任何人都可以使用它进行设备测试。

兼容需要多长时间?

该过程是自动化的。兼容性测试套件会生成一份报告,可提供给 Google 以验证兼容性。最终,我们打算提供自助服务工具,将这些报告上传到公共数据库。

谁确定兼容性定义?

Google 负责 Android 作为一个平台和产品的总体方向,因此 Google 为每个版本维护了兼容性定义文档 (CDD)。我们与提供意见的各种 OEM 协商,为新的 Android 版本起草 CDD。

新设备将支持每个 Android 版本多长时间?

Android 的代码是开源的,因此我们无法阻止有人使用旧版本启动设备。相反,Google 选择不许可 Google Play 客户端软件用于被认为已过时的版本。这允许任何人继续发布旧版本的 Android,但这些设备不会使用 Android 名称并且存在于 Android 应用生态系统之外,就好像它们不兼容一样。

设备可以具有不同的用户界面并且仍然兼容吗?

Android 兼容性计划确定设备是否可以运行第三方应用程序。设备附带的用户界面组件(例如主屏幕、拨号器和配色方案)通常不会对第三方应用程序产生太大影响。因此,设备制造商可以自由定制用户界面。兼容性定义文档限制了允许 OEM 更改影响第三方应用程序的区域的系统用户界面的程度。

何时发布新 Android 版本的兼容性定义?

我们的目标是在相应的 Android 平台版本收敛到足以允许发布新版本的 Android 兼容性定义文档 (CDD) 时。虽然我们无法在第一台旗舰设备随附该软件之前发布 Android 软件版本的 CDD 最终草案,但最终 CDD 总是在第一台设备之后发布。但是,只要可行,我们就会发布 CDD 的草稿版本。

如何验证设备制造商的兼容性声明?

Android 设备兼容性没有验证过程。但是,如果设备要包含 Google Play,Google 通常会在同意授予 Google Play 客户端软件许可之前验证设备的兼容性。

如果后来发现声称兼容的设备存在兼容性问题会怎样?

通常,Google 与 Google Play 被许可方的关系允许我们要求设备制造商发布更新的系统映像以解决问题。

回到顶部

兼容性测试套件

CTS 的目的是什么?

兼容性测试套件是设备制造商用来帮助确保其设备兼容并报告测试结果以进行验证的工具。 CTS 旨在由 OEM 在整个工程过程中频繁运行,以及早发现兼容性问题。

CTS 测试哪些内容?

CTS 当前测试所有受支持的 Android 强类型 API 是否存在且行为正确。它还测试其他非 API 系统行为,例如应用程序生命周期和性能。我们计划在未来的 CTS 版本中添加支持,以测试 Intents 等API。

CTS 报告会公开吗?

是的。虽然目前尚未实施,但 Google 打算为 OEM 提供基于 Web 的自助服务工具来发布 CTS 报告,以便任何人都可以查看它们。制造商可以与尽可能多的受众共享 CTS 报告。

CTS 是如何获得许可的?

CTS 根据大部分 Android 使用的相同 Apache 软件许可证 2.0 获得许可。

CTS 接受捐款吗?

是的,请! Android 开源项目接受对改进 CTS 的贡献,就像对任何其他组件一样。事实上,提高 CTS 测试用例的覆盖率和质量是帮助 Android 的最佳方法之一。

任何人都可以在现有设备上使用 CTS 吗?

兼容性定义文档要求兼容设备实现adb调试实用程序。这意味着任何兼容设备(包括零售设备)都必须能够运行 CTS 测试。

编解码器是否经过 CTS 验证?

是的。所有强制性编解码器均由 CTS 验证。

回到顶部