当前位置: 首页 > news >正文

[转]Android 分裂的多面性

By Andreas Constantinou from Visionmobile.com | Echokou 译,Lordhong 校,转载请注明 ifanr.com 译文链接。文章来自http://www.ifanr.com/12719。

Print

关于 Android 分裂的讨论很多,却很少有分析提到分裂的意义和影响。

从定义上看,API 并不是观察分裂现象的最好的角度,最好的角度是应用程序。看一下 Android Market 上面排名前一万个应用程序(免费和收费),有多少是能支持所有 Android 机型的?

对于 Google 的 Android 团队来说,分裂让他们彻夜难眠。分裂削弱了本来可观的应用程序市场,增加了开发成本,最终可能成为负面影响开发者的最重要因素。

Google 的 CTS(兼容性测试规范)预计会保证 Android Market 上的应用程序能运行在每一部 Android 手机上。Android 手机必须通过 CTS 测试,才能获得使用私有程序代码的权限,还有 Market 和 Android 这个商标的使用权。Android Market 和 Android 这两个品牌会受到 Google 的紧密控制(参考ifanr译文::最封闭的开源系统,话说 Android的八宗罪 ),没错,Google 会控制合作伙伴对 Android 的改动,和瘾科技文章 的说法不同。

Android 分裂的三面

很多观察人士都把分裂的出现看作是开源(APL2)授权依附于 Android 公共源代码 造成的结果。事实上问题更复杂。Android 的分裂有三面。

1.Codebase 分裂。 在 APL2 授权允许下,极少公司采用公开的 Android 的 Codebase。Google 更新太快了(12个月内有5个重要版本),一旦分裂,要跟上Google 更新的脚步就要付出很高的成本(诺基亚分裂的Webkit之路上就困难重重,后来也后悔了)。

中国移动把 Android 开发外包给软件公司 Borqs(播思通讯),诞生了 Android codebase 一个主要的分支。中国移动不太关心是否能跟上 Android 系统最新的功能,反正在中国便宜的山寨手机占据主要市场。

手机芯片公司 Mediatek (联发科)每年出货的芯片用在 2-3 亿部手机里,他们打算把 Android 纳入计划,这意味着另一个主要的分支。Cyanogen 和 GeeksPhone 也是Android 公开 codeline 的分支,不过针对的是利基市场——小部分懂技术的资深 Android 爱好者。

2. 发布版本的分裂。 Google 在 12 个月里发布了 5 次主要的升级(1.5,1.6,2.0,2.1以及最近的 2.2)。每一次都有主要功能的更新,通常还有 API 的变化。可以对比 Android Market 上的应用程序,从 1.6 的手机上看到的,和从 2.1 的手机上看到的应用程序是不同的一套内容,前向兼容性不好。发布版本的分裂是 Google 快速创新造成的结果,Andy Rubin 还暗示说接下来的 6 个月里还会有更多的重要版本发布。对于那些年轻、灵活的互联网公司来说,这是一个信号,让他们知道如何在时间滞后的情况下更好地开发软件;相比 较,Symbian 主要的版本升级周期是 12-18 个月。

由于和 iPhone 一样缺少自动升级机制,版本发布的分裂问题变得异常严重。我们把这个现象称作“运行环境衰老(runtime aging)”,这直接造成了应用程序开发成本的提高。一级网络运营商看到他们运营的 Android 手机里运行着过时1-6年的浏览器,对于移动内容和软件开发公司来说也很棘手。

Google 本身也报告说 Android 用户分裂地使用 1.5、1.6 和 2.1版本的手机(至少对使用 Android Market 的手机来说是如此)。2010 年 5 月中旬的报告如下:

chart

发布版本的分裂也出现在与 Google 合作的 OEM 伙伴上。Google 根据商业标准选定那些哪些 OEM 可以使用私哪些私有的代码(和 Michael Gartenberg 的说法不同)。 Sony Ericsson 的 X10(运行Android 1.6)面市时间就要比 Nexus One (Android 2.1) 晚。

3. 产品类型分裂 。Android 是为有一定出货量的智能手机设计的。但他到来的时间很合适——iPhone 刚发布,消费电子厂商正在研究怎样开发互联设备。这带来了 Google 没有预料到的两个影响:

-所有的一级运营商和许多二级运营商看中了 Android,希望借此能以更低成本、更高的差异化开发 iPhone 类似设备,这意味着运营商在 Android 成长阶段(2008-2010)投入资金的时候,他们希望借 Android 手机以智能手机的价格提供高端功能。

-现在有十几个消费电子厂商生产 Android 设备,从车载系统到机顶盒再到平板,甚至还有 DECT 无绳电话和数码相框。Archos 网络平板只是开始,上面的这些设备对系统的需求各不相同,而且平台规格也有差异。

Android 进入市场的时机决定了它的分裂暗示了两点:

首先,Android 的官方 codebase 并不适合针对大众市场的设备(想想 ARM 9 或 ARM 11, 200-500MHz)。为了进入大众市场(每年一亿台以上),Google 需要第二类产品支持大众的 Android 设备。这是个“二十二条军规(自相矛盾)”,作为进入大众市场的第二类产品,它也会打破 Android 的开发模式。

第二,每个为不同的产品类型(车载、机顶盒、平板等等)设计的平台都会产生不同的 API,管理上很困难,这也是 Google TV initiative 和开放嵌入式软件基金会 (OESF) 存在的原因。然而即使是 Google 也无法快速行动以协调或管理十几个不同 Android 产品和不同的硬件规格。

总之,Android 分裂会更加严重,阻碍着自身的发展。但你又是否愿意在你的电视、电话和汽车里看到同样的(单一 codebase)应用程序呢?

所以,工具厂商的机会来了,他们可 以提供移植工具、兼容性测试工具和 SDK,在每一个分裂版本中间建立起跨越鸿沟的桥梁。对分裂的问题你怎么看?有什么分裂的感受和故事吗?请和我们分享。

相关文章:我的产业生态链和杂谈文章

相关文章:

  • 请确认在您的电脑的BIOS中已启用VT-x/AMD-V支持
  • [转]多平台世界中,移动手持的未来在何处
  • TimerTask(Timer)使用入门
  • .net与java建立WebService再互相调用
  • Session的使用与管理
  • 基于Spring可扩展Schema提供自定义配置支持
  • oracle创建job方法
  • java.util.Date转java.sql.Date, 以及区别
  • 记住的小知识点
  • GIServer 2.1 发布,增加新工具,修正中文问题
  • Linux命令全称
  • MyEclipse里面怎样避免光标乱跳
  • ILNumerics项目的应用之线性方程
  • 怎样防止jdk出现版本不一致而导致控制台或Tomcat的出错?
  • Novikoff定理
  • (三)从jvm层面了解线程的启动和停止
  • 0基础学习移动端适配
  • android 一些 utils
  • Centos6.8 使用rpm安装mysql5.7
  • CSS3 变换
  • Java编程基础24——递归练习
  • LintCode 31. partitionArray 数组划分
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • mysql常用命令汇总
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • Rancher如何对接Ceph-RBD块存储
  • socket.io+express实现聊天室的思考(三)
  • SpringCloud集成分布式事务LCN (一)
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • 阿里云Kubernetes容器服务上体验Knative
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 从PHP迁移至Golang - 基础篇
  • 力扣(LeetCode)22
  • 聊聊flink的TableFactory
  • 那些年我们用过的显示性能指标
  • 数据可视化之 Sankey 桑基图的实现
  • 我建了一个叫Hello World的项目
  • 怎么把视频里的音乐提取出来
  • 1.Ext JS 建立web开发工程
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • ###项目技术发展史
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (六)c52学习之旅-独立按键
  • (强烈推荐)移动端音视频从零到上手(上)
  • (三十五)大数据实战——Superset可视化平台搭建
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (新)网络工程师考点串讲与真题详解
  • (转)德国人的记事本
  • (转)项目管理杂谈-我所期望的新人
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿