欢迎来到风尚网
风尚网首页 > 首页 > 阅读 > Android碎片化与兼容性问题的元凶

Android碎片化与兼容性问题的元凶

作者:匿蟒 2016-02-19 03:12 来源:简书 编辑:美朵

文章摘要
Android碎片化是其发展中的一个计划内的必然结果,也从来就不是什么问题。真正的问题是不同Android系统的应用兼容性。Android的碎片化Android的碎片化,是指它在发展的过程中,随着自身版本的更迭,以及硬件厂商的自行定制,而带来的一个版本数量爆炸的问题。...

Android碎片化是其发展中的一个计划内的必然结果,也从来就不是什么问题。

真正的问题是不同Android系统的应用兼容性。

Android的碎片化

Android的碎片化,是指它在发展的过程中,随着自身版本的更迭,以及硬件厂商的自行定制,而带来的一个版本数量爆炸的问题。

碎片化的Android

本来Google的Android自身就有版本更迭的需求,这是当代大多数主流软件的做法。流行的Android版本有2.2、2.3、3.2、4.0.3、4.2.2、4.4、5.0、5.1等,近期6.0也发布了。

但是,和大多数软件不同的是,Android是手机的操作系统,不是说更新就更新的。很多改动不能保证系统层面的向前兼容,因此不能像普通软件那样推送了就更新。Android更新既有风险,也有限制

例如,Android 4.0.3一共就100M,而Android 5.1.1有700M,这还仅仅是原生ROM的大小,厂商定制的往往更大一些。

对部分高端的Android 4.0时代的手机来说,也许仅仅需要更改System分区的大小。但是磁盘分区,通用做法是先格式化——所以有数据丢失的风险。而对部分低端的手机来说,根本就没那么大的容量来装系统,谁知道它会暴涨7倍——所以还有根本更新不了的限制情况。

这一点,Android类似Windows。

但是,这也就是一个线性增长而已。真正的麻烦来自于每一个厂商都自己做Android与手机硬件的适配,其中大的那些还做定制,例如小米的MIUI、华为的EMUI、联想的VIBEUI等。这就是N个厂商乘以M个版本,导致的版本数量爆炸。

开放手机联盟与Android的哲学

开放手机联盟的历史

每一本写Android相关的书,第一章提到发展历史时,都会提到一个开放手机联盟( Open Handset Alliance )。

算上初创和后来加入的,从2007年至2015年,已有84个成员。

The OHA was established on 5 November 2007, led by Google with 34 members, including mobile handset makers, application developers, some mobile carriers and chip makers.

成员中,由开发Android的Google领衔,既包含手机制造商如HTC、Motorola、LG等,也包含了移动通信主要专利持有者及芯片提供商如高通(Qualcomm)、联发科(MediaTek)、爱立信(ST-Ericsson)等,也有其它手机芯片提供商德州仪器(Texas Instruments)、Marvell、博通(broadcom)、英伟达(NVIDIA)等,还有移动运营商如T-Mobile、中国移动等。更有三星(Samsung)、华为这种什么都沾边的巨无霸。

这可以说是囊括了手机壳子里面所有相关软硬件的一个全球性大联盟。

这是Google为了推出Android与Apple部落的iOS抗衡而组建的联盟,而现在回头,也明显看到了效果。Android超越了iOS,成为了市场份额第一。

Android必须碎片化

Android设备的屏幕分布。矩形代表屏幕大小,颜色深浅代表数量多少。

虽然没有详查相关协议,但是Android作为联盟中连接各方的软件实体,其地位非同一般。如果哪天Google不再开源Android,那么联盟立刻瓦解。

Android从一开始,就肩负了拯救世界……呃呸,兼容不同硬件配置的手机设备的责任。Google与中游的移动通讯芯片提供商、下游的手机厂商,以及各种其它芯片、传感器的解决方案提供商,共同努力,才能补全一个完整的Android。

Google一家,造不出一台Android手机(Nexus不仅代工,还代研)。

现在,一台Android手机的系统软件,开发流程通常是:

Google发布Android -> Qualcomm(or MediaTek)-> 手机厂商集成其它芯片的驱动 -> 手机厂商定制

为了让厂商能够闭源,Android不遵循GPL协议。这是一个“我开放,你基于我就必须开放”的传染式协议,是一些厂商不能接受的。尤其是一些解决方案提供商,把驱动的源码公开给竞争对手,基本上老底全泄光了。

Android不仅换成了允许商业闭源的Apache协议,还用各种方式把厂商需要修改的底层驱动,放到不会受Linux的GPL协议传染的地方。

开源Android,然后给手机厂商进行闭源再开发,这本就是题中应有之义。Android碎片化是一个计划内的必然结果。

其实碎片化不是问题,真正的问题是兼容性——明明是一个Android应用,却仍然无法正常运行;在那台手机好好的,换这台就不行。

Android的哲学

与iOS的封闭相对,Android的哲学核心就是开放

不仅代码开源,而且实际运行的应用之间也有多种方式进行通信、协作,与iOS的隔离沙箱完全不同。

其次是替换

除了Android kernel本身,任何应用都是可以替换的。

桌面系统Launcher的抽屉式设计如果你不喜欢,可以换成各种其它桌面;图标看不惯,可以换各种其它主题。你可以用多款相机软件来使用同一个相机硬件,也可以用不同的通讯录软件来管理通讯录。理论上,除了【设置】以外(毕竟Google不可能知道下游的厂商在手机里安了什么硬件、需要怎么设置),其它软件都是可替换的。

什么都是可以选择的,这体现了一种自由的精神,一种软件之间开放竞争的理念。

当然,一些需要系统权限的功能,必须在System分区预置。

手机厂商的定制,从来就不是问题。与普通开发者相比,厂商无非就是通过预置在System分区可以获取系统权限。其它不需要系统权限的功能,Google、定制厂商、普通开发者,都在同一起跑线,可以自由竞争。

兼容性问题出在哪儿?

Google的问题

先说源头的Google。

CTS

为了保证Android在开放并且碎片化的前提下,能够有同样的兼容性,Google设计了CTS这样一个自动化测试。

CTS全称Compatibility Test Suite,兼容性测试工具,其实是指Google发布的一组测试Android手机兼容性的工具,仅支持Linux平台。

这套工具只是给系统平台开发者用的,也就是手机厂商的软件研发人员,所以相关资料不多。

这是一种自上而下,测试全套Android API及其系统资源是否有效的测试。如果某个API无法在调用后达成特定效果、返回正确的值,或者某张系统图片被改动了一个像素,都会导致测试失败。

每一台Android手机,即使是厂商定制的,都要通过CTS测试。只有在Google公司里,通过了全套CTS测试的手机,才被Google官方认可为Android的手机,才能显示“Powered by Android”并挂牌销售。

可以说,这套测试系统是Google对Android兼容性的最大努力。也正是因此,无论手机厂商做出了怎样的定制修改,都能支持正常的Android应用。

v4、v7、v13……

Android开发者对Android Support v4这个jar包都不会陌生,这是为了让Android v1.6及以后的一些低版本,能够使用一些高级版本才有的特性,而特别加入的。

4、7、13等,这些不是版本号,而是API Level,是与版本不同的另一套编号。

小主,按键盘右方向键 → 翻页可以跳过片头呢

  

上一篇:Mac连接远程Linux管理文件(samba)

  

下一篇:这些年,你坚持下来的有哪些东西?

  

本文标题:Android碎片化与兼容性问题的元凶

原文链接:http://i.she.vc/27652.html

和本文相似的内容:

    点击排行