安卓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
安卓CTS官方文档之兼容性方案概览的更多相关文章
- 安卓CTS官方文档之兼容性测试套件简介-attach
官方英文文档原文:https://source.android.com/compatibility/cts-intro.html Compatibility Test Suite 兼容性测试套件 H ...
- 安卓CTS官方文档之兼容性测试套件简介
官方英文文档原文:https://source.android.com/compatibility/cts-intro.html Compatibility Test Suite 兼容性测试套件 Ho ...
- Kryo官方文档-中文翻译
Kryo作为一个优秀的Java序列化方案,在网上能找到不少测评,但未见系统的中文入门或说明文档.官方文档是最好的学习文档.虽然英文不差,但啃下来毕竟没母语来的舒服.这里抽出时间做些翻译,以方便大家查阅 ...
- Akka Typed 官方文档之随手记
️ 引言 近两年,一直在折腾用FP与OO共存的编程语言Scala,采取以函数式编程为主的方式,结合TDD和BDD的手段,采用Domain Driven Design的方法学,去构造DDDD应用(Dom ...
- 教大家怎么看monaco-editor的官方文档
最近业务中有用到浏览器在线编辑器,用的是monaco-editor,官网文档只在首页介绍了npm安装方式. 但其实还有另外一种<script>的引入方式,但是这种方式体现在API文档中,由 ...
- Spark官方文档 - 中文翻译
Spark官方文档 - 中文翻译 Spark版本:1.6.0 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 引入Spark(Linki ...
- Spring 4 官方文档学习(十二)View技术
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...
- Google Android官方文档进程与线程(Processes and Threads)翻译
android的多线程在开发中已经有使用过了,想再系统地学习一下,找到了android的官方文档,介绍进程与线程的介绍,试着翻译一下. 原文地址:http://developer.android.co ...
- spring官方文档中文版
转 http://blog.csdn.net/tangtong1/article/details/51326887 spring官方文档:http://docs.spring.io/spring/do ...
随机推荐
- c#里listview里如何获取点击的是哪一列
很多时候c#里会用到listview,又会给它添加很多的列,可以设置点击列的标头实现按照这列的内容排序等功能,然而点击不同列排序的方法是不一样的,这时候就需要知道,我到底是点击了哪一列,比如点击名字列 ...
- Android开发之合并文件的几种方式
以下介绍合并文件的几种方式,并通过合并amr文件来举例介绍合并文件的详细流程.amr格式的文件头是6字节,所以在进行文件合并的时候要减去除第一个文件以外的其它文件的文件头. 注意:不同文件的文件头是不 ...
- nginx源代码分析--读请求主体(1)
首先,读取请求体已进入HTTP要求11相,我们需要做的请求正文部分处理一些模块,所以这个模块需要注册功能在这个阶段,在阅读功能要求的身体ngx_http_read_client_request_bod ...
- Android Activity之间通信
package com.example.myapp; import android.app.Activity; import android.content.DialogInterface; impo ...
- Unity3D合并着色器
unity 3d倒每次模型更多的是一种着色器.我可以拥有这些车型共享的地图想分享一个着色器.所以每次删除,然后附加,很麻烦.如何才能合并这些着色器? 采纳TexturePacking对 1.遍历gam ...
- 走向DBA[MSSQL篇] 积跬步行千里
原文:走向DBA[MSSQL篇] 积跬步行千里 不知道大家对SQL系列的感不感兴趣 先在这里探个路 本文针对的读者为SQL菜鸟 欢迎大牛驳论或者补充 既然是探路篇 就先说下数据过滤中的偏门匹配 希望能 ...
- UVA 1364 - Knights of the Round Table (获得双连接组件 + 二部图推理染色)
尤其是不要谈了些什么,我想A这个问题! FML啊.....! 题意来自 kuangbin: 亚瑟王要在圆桌上召开骑士会议.为了不引发骑士之间的冲突. 而且可以让会议的议题有令人惬意的结果,每次开会前都 ...
- 多于ListView同步滚动
简介: 发展过程中可能遇到的2一个或多个其他listview为了用相应的关系保持滚动的情况下一起,本文演示了这种效应为大家. 功效: 实现原理: 在滚动当中不论什么一个ListView的时候,同一时候 ...
- HDU4893:Wow! Such Sequence!(段树lazy)
Problem Description Recently, Doge got a funny birthday present from his new friend, Protein Tiger f ...
- springMVC3得知(五岁以下儿童)--MultiActionController
Spring为了提供一个多动作控制器,您可以使用它的几个行动统一到一个控制器,这可以放在一起功能. 多动作控制器存在在一个单独的包中--org.springframework.web.mvc.mult ...