ARTICLE · 1143135
安卓演化史 · 02|2.x:从追赶者到出货量第一
2009–2011:Eclair、Froyo、Gingerbread 三个版本,安卓怎么赶上来,碎片化又是怎么开始的

2009 年底到 2011 年,安卓只发布了 2.0 到 2.3 几个版本,却完成了从追赶者到全球智能手机出货量第一的转变。这一篇讲 2.x 做对了什么:大屏触控、JIT 提速、统一推送;也讲碎片化是怎么开始的。

图1|一年半:从追赶者到出货量第一
2009 年底:第一台让人记住的安卓手机
到 2009 年秋天,安卓手机已经有了十几款,但大多数人还是没听说过它。前几款机型屏幕小、分辨率低,系统也比较粗糙,很难和 iPhone 正面比较。
转折出现在 2009 年 10 月 26 日。安卓 2.0 发布,代号 Eclair。几天后,摩托罗拉在美国推出 Droid,由运营商 Verizon 销售。这台手机有一块 3.7 英寸、854×480 的屏幕,分辨率比 iPhone 当时的 480×320 高出一截;它还第一次带上了 Google 自己做的免费语音导航。
Droid 卖得好,有一部分原因不在手机本身。当时在美国,iPhone 只能通过 AT&T 购买,其他几家运营商都需要一台能和它抗衡的手机。Verizon 为 Droid 投入了大规模的广告,安卓第一次进入了普通消费者的视野。这也是开放手机联盟那套打法第一次明显见效:运营商有动力替安卓花钱。
2.0 和 2.1 在系统层面补上了不少基础能力:同时登录多个账号并同步,支持企业常用的 Exchange 邮箱;框架开始支持多点触控;浏览器支持 HTML5;相机加入闪光灯、数码变焦等设置;2.1 又加入了动态壁纸和语音输入。
2010 年 1 月 5 日,Google 推出 Nexus One。这是第一台由 Google 主导设计、以 Google 名义销售的安卓手机,由 HTC 代工,搭载安卓 2.1、3.7 英寸 AMOLED 屏和 1GHz 处理器。Google 尝试绕开运营商,在自己的网站上直接卖手机,但这个销售方式并不成功,网店在当年年中就关了。不过 Nexus 这个名字留了下来,此后很多年里,Nexus 手机一直是新版本安卓最先运行的参考机型。

图2|2.0 到 2.3 版本对照
2.2 Froyo:先把速度提上来
2010 年 5 月 20 日,安卓 2.2 发布,代号 Froyo。如果说 2.0 解决的是能用,2.2 解决的就是好用,其中最重要的改动是速度。
第一篇讲过,Dalvik 虚拟机早期是逐条解释执行字节码的:程序每运行一次,虚拟机就要把每条指令重新翻译一遍。2.2 给 Dalvik 加上了 JIT,也就是即时编译。
JIT 的思路是只编译最常跑的部分。虚拟机在运行时统计哪些代码段被反复执行,比如一个循环体,把这些热点代码段编译成处理器能直接执行的机器码并缓存起来,下次再跑到这里就直接用机器码。不常用的代码仍然解释执行,这样既提速,又不用为全部代码付出编译的时间和内存。按 Google 当时公布的数据,计算密集型的代码能快 2 到 5 倍。
JIT 也有代价:每次启动应用,热点要重新识别、重新编译,编译结果不能跨次保留,还要占一块内存。这个问题要到 4.4 和 5.0 换成新的运行时才彻底解决,本系列第三、第四篇会讲到。

图3|解释执行与 JIT
2.2 的其他改动,大多和联网有关。浏览器换上了 Chrome 的 V8 JavaScript 引擎,网页脚本运行速度明显提升;手机可以通过 USB 或 Wi-Fi 热点把网络共享给电脑;应用可以安装到 SD 卡上,缓解当时手机内置存储普遍很小的问题。
还有一项改动当时不太起眼,影响却很长远:云到设备消息推送服务 C2DM。
在此之前,一个应用想及时收到新消息,通常要自己在后台和服务器保持一条连接,定时去问有没有新消息。装的应用越多,后台连接就越多,手机就越难进入休眠,电量消耗也越快。C2DM 的做法是由系统统一维护一条到 Google 服务器的连接,各个应用的服务器把消息发给 Google,再由这条连接送到手机,手机收到后唤醒对应的应用。
这个统一推送通道后来改名为 GCM,又演变为今天的 FCM,一直是安卓推送的基础设施。在 Google 服务不可用的地区,各手机厂商和应用后来只能各自建设推送通道,这又是另一段故事了。

图4|统一推送:一条连接代替很多条
2.3 Gingerbread:最长寿的一个版本
2010 年 12 月 6 日,安卓 2.3 发布,代号 Gingerbread,首发机型是三星代工的 Nexus S。
2.3 的界面换了一套更简洁的配色,文字选择和复制粘贴更好用了,但更多的改动在底层。
一是并发垃圾回收。Java 程序的内存由虚拟机自动回收,回收时如果暂停整个应用,界面就会出现短暂卡顿。2.3 让垃圾回收的大部分工作和应用同时进行,暂停时间大幅缩短,滑动列表、玩游戏时的卡顿减少了。
二是对原生代码的支持更完整。开发者可以用 C 和 C++ 直接编写整个应用的主体,直接处理输入事件和传感器数据,这对游戏开发者尤其重要,许多游戏引擎因此开始正式支持安卓。
三是新硬件的支持:NFC 近场通信、陀螺仪、气压计等更多传感器,前置摄像头,以及系统内置的网络电话。
2.3 之后几个月,安卓 3.0 发布了,但它只给平板电脑用,手机没有升级的版本。接下来大半年,手机上最新的就一直是 2.3。再加上 2.3 发布时正赶上安卓手机销量爆发,大量中低端机型出厂就装着 2.3,此后再也没升级过。结果是,直到 2013 年年中,2.3 都是用户数量最多的安卓版本,前后持续了两年半左右。
出货量第一:免费系统和整个产业链
2010 年第四季度,据市场研究机构 Canalys 的统计,安卓手机的出货量第一次超过诺基亚的 Symbian,成为全球出货量最大的智能手机平台。另几家研究机构对超过的具体时间点有不同看法,但到了 2011 年,安卓领先已经没有争议。
从第一款手机上市算起只用了两年多。原因大致有三层。
第一,厂商多,价格覆盖广。HTC、摩托罗拉、三星、LG、索尼爱立信等厂商同时在做安卓手机,从旗舰机到入门机都有,价格档位远比单一厂商的产品线宽。
第二,运营商愿意推。对运营商来说,安卓手机是 iPhone 之外的选择,而且可以按自己的需要定制和补贴。
第三,系统本身追上来了。从 2.0 到 2.3,大屏、触控、速度、联网这几个关键短板基本补齐,普通用户用起来已经不觉得比别的系统差太多。
碎片化:同一套开放策略的另一面
出货量增长的同时,一个新问题开始显现,后来被概括为一个词:碎片化。它至少有三个层面。
第一层是版本碎片化。Google 发布新版本源代码之后,到用户手机上收到升级,中间要经过好几道环节:芯片厂商为新版本适配驱动,手机厂商把自己的定制界面移植上去并做测试,很多机型还要经过运营商的测试和审核。每一环都要花时间,也都要花钱,而厂商更愿意把资源投在下一款新机上。结果是不少手机发布后只升级过一两次,有的一次都没有。

图5|一次系统升级要经过谁
第二层是界面碎片化。为了做出差异,各厂商都在安卓上加了自己的界面,比如 HTC 的 Sense、三星的 TouchWiz、摩托罗拉的 MOTOBLUR。它们给了厂商品牌辨识度,也让同一个版本的安卓在不同手机上看起来、用起来都不一样,还进一步拖慢了升级。
第三层是硬件碎片化。屏幕尺寸和像素密度越来越多,处理器、图形芯片、内存配置差别很大,有的有实体键盘,有的没有。开发者要让应用在所有机型上都正常运行,测试量成倍增加。
Google 并不是没有应对。2009 年起,安卓有了兼容性定义文件和兼容性测试套件,想预装 Google 应用的机型必须通过测试,保证基本接口行为一致。Google 也开始公开各版本的占比数据,方便开发者决定最低兼容到哪个版本。2011 年 5 月,Google 还和多家厂商、运营商一起承诺,新机发布后 18 个月内会升级到最新版本,但这个承诺后来没有真正落实。
碎片化的根源其实就在第一篇讲过的那套设计里:系统免费、上层代码可以闭源修改、厂商各做各的。这让安卓迅速铺开,也让它很难像单一厂商的系统那样统一升级。真正从结构上缓解这个问题,要等到 2017 年的 Project Treble 和 2019 年的模块化系统更新,那是本系列第五篇的内容。

图6|碎片化的三个层面与应对
回头看:2.x 的得与失
把 2.x 这两年连起来看,安卓做成了几件事:
产品上,大屏全触控的安卓手机成为主流,Nexus 系列建立起参考机型的传统。
技术上,JIT 和并发垃圾回收让性能追了上来;统一推送通道、Wi-Fi 热点、应用装到存储卡,这些和日常使用关系最密切的能力都在这一时期补齐。
市场上,安卓成为全球出货量最大的智能手机平台。
同时留下的问题也很清楚:版本、界面和硬件三个层面的碎片化开始积累;手机和平板走了两条不同的路,系统一分为二。
写在最后
2.x 是安卓从能用变成好用、从小众变成主流的两年。它证明了开放手机联盟那套打法能把一个系统迅速推到全世界,也让人第一次看清这套打法的代价。
下一篇讲 2011 到 2013 年:只给平板的 3.0 Honeycomb,把手机和平板重新统一起来的 4.0 Ice Cream Sandwich,专门解决卡顿的 4.1 Jelly Bean,以及让低端手机也能流畅运行的 4.4 KitKat。
· · ·
免责声明
本文为公开资料的科普梳理,事实与时间主要来自公开的百科资料、官方发布信息与行业公开报道。市场份额相关表述引自公开发布的第三方研究机构统计,不同机构的口径和结论存在差异;性能提升数据为当时官方公布的典型值,实际效果因机型和应用而异。具体以官方最新披露为准。
本文涉及的公司名称、产品名称仅用于说明历史事实,不代表对任何公司或产品的评价,也不构成任何购买或投资建议。