安卓CTS官方文档之兼容性方案概览

兼容性方案概览


安卓的兼容性方案让安卓手机生产商能够很容易就开发中可兼容的安卓设备(天地会珠海分舵注:可兼容什么呢?就是可以兼容标准google提供的安卓系统可以支持的功能,以防手机生产商把开源的安卓系统修改得面目全非后,开发者开发的应用都安装不上了,所以才有了CTS来要求手机开发上必须测试通过才能上google play)。

方案目标


安卓的兼容性方案兼顾了整个安卓社区各个团体的利益,包括用户,开发人员和手机生产商。其中这些团体之间互相依赖,用户希望在广大范围内对手机类型和优秀应用进行选择;而优秀的应用的开发者又会受到一个广大的市场所激励而去开发出更多优秀的应用,因为他们的应用可以通过这个广大的市场到达使用不同类型手机的用户手上;而设备生产商又依赖这些广泛的优秀的应用来提升它们的产品对用户的价值。(天地会珠海分舵注:其实整一段话google的意义就是想表达我的google play是一个多么强大的应用市场。你安卓设备生产商设备想赚钱,想更多的开发者可以开发适合你的机型的应用,想更多的用户使用你的手机,那么你就要用我的google play,而你要用我的google play,那么你阉割修改后的安卓操作系统就必须满足一定的规则,不然用户在我的google play下载了个应用到你手上竟然用不了就对大家都没有好处了)

我们的目的是为了让以下这部分人受惠而设计的:

  • 为应用开发人员提供一个一致的应用开发环境和硬件环境:如果没有一个兼容性标准的话,各种设备将会五花八门,而开发人员就必须为每个不同的设备开发不同版本的应用。兼容性方案以一套预先规定好的APIs和capabilities(天地会珠海分舵注:capabilities可以理解成手机的一些特性)的形式为开发人员预期能从一个兼容性设备可以获得的功能提供了一个精准的定义。这样开发人员就可以利用这些信息来很好的对如何设计他们的应用做一个决定,且这样他们就非常有信心他们开发的应用可以在任何兼容的设备上良好的运行。

  • 为消费者提供一个一致的应用体验:如果一个应用在一个兼容性设备上可以很好的运行,那么它就应该可以在所有同安卓版本的兼容性设备上很好的运行。各种安卓设备无论在硬件和软件特性上都会有所不同,所以这个兼容方案会为如Google Player等的各种应用分发平台提供相应的工具来开发对应的过滤功能,什么意思呢?意思就是用户在该分发平台上只会看到他们的手机可以运行的应用。

  • 让设备生产商可以在可兼容的同时又可独树一帜:安卓的兼容性方案关注的方面是安装在设备上的安卓系统是否可以很好的运行第三方应用(天地会珠海分舵注:除生产商自己提供的应用外的第三方应用),这就允许设备生产商在考虑到兼容性的同时怎么创建一个独特的别具一格的的设备提供了很大的弹性空间(天地会珠海分舵注:因为手机生产商只需要保证能满足安卓的兼容性方案,那么就可以对设备做任何其他的事情了)

  • 最小化兼容性所带来的附加成本:保证设备的兼容性对设备生产商来说应该是很容易且不昂贵的事情。安卓兼容性方案提供的工具是免费的,开源的,可下载的。它设计出来本身就是为了让设备生产商在在设备开发过程中进行持续的自测,这样设备生产商就可以消除开发流程变化或者把设备送到第三方机构进行兼容性检测所带来的附加成本。同时,安卓兼容性方案不需要任何的认证,所以不会产生相应的费用和账单。

安卓兼容性方案由以下3个关键部分组成:

  • 安卓软件栈中的源代码
  • 兼容性定义文档(CDD),代表了安卓兼容性的“策略"定义
  • 兼容性测试套件(CTS),代表了安卓兼容性的”机制“

正如不同版本的安卓平台的源码会从源码树中分出不同的对应的分支一样,不同版本的CTS和CDD也会有不同的分支(天地会珠海分舵注:不同版本的安卓系统会有对应版本的CTS和CDD与其对应)。上面描述的CDD,CTS和源码,再加上你作为手机生产商提供的自身的硬件和软件定制,这就是你创造一个兼容性设备所需要的所有东西了。

 

兼容性定义文档(CDD)


每当一个安卓操作系统平台发布的时候都会提供一个详尽的CDD文档,该文档代表了安卓兼容性的“策略”定义。

有些情况下,包括CTS在内,是没有任何测试套件是可以全能的对所有兼容性方面都做到详尽的自动测试的。比如,在CTS中有一个测试时用来检查OpenGL图形库APIs在屏幕上的正确呈现和正确行为的,但是没有任何软件测试可以验证对应的图形是真的呈现在屏幕上的(天地会珠海分舵注:包括该CTS的测试用例也只是调用OpenGL的API而已,而该测试是不能检测到屏幕是否有显示对应图形,只能靠肉眼去观测。这个也就是在软件测试行业所共知的不是所有功能都是可以实现测试自动化的)。更通俗的来说,(用测试工具)去测试硬件呈现方面的功能是不可能的,比如去测试按键物理键盘(是否可用),屏幕密度,Wi-Fi硬件功能,蓝牙硬件功能。

CDD所处的角色就是去定义和澄清具体的需求,并且消除模棱两可的有歧义的情况。CDD不会去尝试做到无所不包含,因为安卓自身就是一个开源的代码集合,代码自身就是对安卓平台和它提供的APIs的一个全方位的”说明文档“(天地会珠海分舵注:了解过敏捷开发和重构等相关知识的应该都清楚一个说法--去文档化,优秀代码就是最好的文档)。CDD扮演的就是一个”集线器“角色,(把进来的对兼容性的需求)重新分发引用到其他对应的内容(比如SDK API 文档),该内容提供了一个安卓源码会用到的框架,这样整个系统就自然会成为一个兼容的系统了。(天地会珠海分舵注:这一段应该有更好的翻译方式,如果看官有的请提供出来,本人会选择性采纳

如果你想在一个已定的安卓版本中创建一个兼容性设备,请从把该版本的安卓系统源码下载下来开始,然后仔细的阅读该版本源码对应的CDD文档并遵循它的指引。更多额外的相关内容,请查看最近的CDD文档

 

兼容性测试套件


CTS是一个免费的,商业级别的测试套件,且可供下载。CTS代表了安卓兼容性的”机制“。

CTS是跑在你的桌面系统上面来驱动连接上桌面系统主机的设备或者模拟器去运行相应的测试用例(脚本)的。CTS是一套单元测试的集合,是设计来让我们来集成到我们的日常工作流程(比如通过集成到我们的持续集成系统构建系统)来帮助工程师构建一个安卓设备系统的。它的本意就是去在早期把不兼容的地方给暴露出来,去保证在整个安卓设备系统开发的流程中该设备是一直保持兼容的。

兼容性测试套件验证器


兼容性测试套件验证器(CTS 验证器)是CTS的一个附件功能(天地会珠海分舵:其实就是一个APK),可以在这里进行下载。CTS验证器提供了针对一些在没有户输入等交互动作就完成不了的APIs和功能测试(比如:音频质量,加速计,等等)

关于CTS的详细信息,请查询”CTS简介“。

作/译者:天地会珠海分舵

微信知识共享公众号TechGoGoGo

CSDNhttp://blog.csdn.net/zhubaitian



原文地址:https://www.cnblogs.com/techgogogo/p/4284840.html