兼容性方案概览


安卓的兼容性方案让安卓手机生产商能够很容易就开发中可兼容的安卓设备(天地会珠海分舵注:可兼容什么呢?就是可以兼容标准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

CSDN:http://blog.csdn.net/zhubaitian

转载于:https://www.cnblogs.com/techgogogo/p/4284840.html

安卓CTS官方文档之兼容性方案概览相关推荐

  1. 安卓CTS官方文档之兼容性测试套件简介

    官方英文文档原文:https://source.android.com/compatibility/cts-intro.html Compatibility Test Suite 兼容性测试套件 Ho ...

  2. 【笔记】Android桌面角标Badge官方文档和兼容性解决

    好久没写博客了,这段时间一直在做项目忙得要死啊.然后新需求来了,领导要求做一个像iOS那样能提醒用户未读消息数量的角标.查了下资料出现频率最多的就是ShortcutBadger和ShortcutHel ...

  3. 都在夸官方文档 Vue.js 2021 年度报告出炉!

    整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 作为前端开发框架三剑客之一,Vue 自 2014 年发布以来,成为很多开发者必备的工具. 近日,国外软件开发机构 Monterail 在对 ...

  4. AsyncDisplayKit官方文档个人翻译

    迁移老文章到掘金 文档比较老了,不适用最新的2.0 AsyncDisplayKit 官方文档 最近在拆解学习AsyncDisplayKit这个很知名的轮子,发现这个轮子内容还是非常庞大的,想要分解学习 ...

  5. 一、ShardingSphere简介(来自官方文档)

    官方中文文档地址https://shardingsphere.apache.org/document/current/cn/overview/ 简介(来自上面的官网) Apache ShardingS ...

  6. ExoPlayer详解——高级主题(官方文档)

    ExoPlayer详解系列文章 ExoPlayer详解--入门(官方文档) ExoPlayer详解--媒体类型(官方文档) ExoPlayer详解--高级主题(官方文档) 一.数字版权管理 ExoPl ...

  7. 基于vue的微信小程序开发5分钟上手教程(官方文档转)

    使用手册 mpvue 继承自 Vue.js,其技术规范和语法特点与 Vue.js 保持一致. 注:其实就是官方文档,只是习惯看博文学习才直接copy过来的,详见官方文档 本文档适用于有一定 Vue.j ...

  8. Hyperledger Fabric 2.0 官方文档中文版 第3章 关键概念

    Hyperledger Fabric 2.0 官方文档中文版 第3章 关键概念 总目录 3.关键概念 引言 什么是区块链? 区块链为什么有用? 什么是Hyperledger Fabric? Hyper ...

  9. protocal buffers 官方文档学习

    protocal buffers 官方文档学习 文章目录 protocal buffers 官方文档学习 1.What are protocol buffers? 2.选择你喜欢的语言 3.怎么开始, ...

  10. Android HIDL 官方文档(七,END)—— 网络堆栈配置工具(Network Stack Configuration Tools)

    网络工具封装 网络工具封装过滤器 1 供应商接口与链 2 允许使用的命令 21 ip 22 iptables ip6tables 23 ndc 24 tc 对应的官方文档地址:HIDL(General ...

最新文章

  1. Android LK Bootlaoder启动概览
  2. 页面增加html,为静态页面HTML增加session功能
  3. alembic生成数据库升级脚本
  4. iOS 虚拟GPS 就是为了玩pokemon go 哈哈哈哈
  5. Java——正则表达式
  6. 输出100以内奇数和、偶数和(for和while两种)
  7. spring mvc
  8. html做特效,html特效代码大全
  9. 如何写一个C语言头文件,C语言头文件如何写?.doc
  10. 衣新履靓,智能商业空间的鞋服行业应用
  11. 半双工通信模块碰撞问题
  12. 实体类使用@Builder,导致@ConfigurationProperties注入属性失败
  13. GPS的NMEA码的详细解释定义
  14. 什么是SPOOLing?
  15. Engineering Dynamics 3 --- 转动惯量
  16. RFID仓库管理系统之售后产品的管理-新导智能
  17. ransac直线段拟合
  18. python爬虫采集66代理(66IP)并验证可用性
  19. matlab时域微分,实验一 MATLAB用于时域分析.doc
  20. 系统开发系列 之MyEclipse创建WebService详细教程和调用教程(spring框架+maven+CXF框架)

热门文章

  1. 如何在 Mac 上将 WebP 图像批量转换为 JPG?
  2. 如何在Mac上恢复格式化的相机卡
  3. Python基础之赋值运算符
  4. SpringBoot 2.0.0 注入SpingCloud 有bug(目前只有SpringBoot 1.5+ 版本的支持)
  5. JAVA 模拟瞬间高并发
  6. c++设计一个无法被继承的类
  7. mysql主从同步开启后的iptables的设定问题
  8. 提前祝各位:圣诞节快乐~
  9. 2021 年 7 月程序员工资统计,最赚钱的岗位出炉。。
  10. 产品经理给程序员发了一个“在吗”