mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-29 21:41:00 +08:00
2ce6257f93
@alim0x 开始发布了,翻译的真不错,文章很长,辛苦啦!
200 lines
22 KiB
Markdown
200 lines
22 KiB
Markdown
安卓编年史(1)
|
||
================================================================================
|
||
|
||
> 让我们跟着安卓从0.5版本到4.4的无尽迭代来看看它的发展历史。
|
||
|
||
![这些年来历代安卓的主屏幕。](http://cdn.arstechnica.net/wp-content/uploads/2014/03/its-been-quite-a-journey1.jpg)
|
||
|
||
*这些年来历代安卓的主屏幕* [图片提供:Ron Amadeo]
|
||
|
||
安卓已经以不止一种形式陪伴了我们六年以上。在这段时间内,我们已经看到了不同于任何已有开发周期的,绝对惊人的变化速度。当Google卷入智能手机的战场中时,它拿出了它的快速迭代,Web风格的更新周期,把它们应用到了开发这个操作系统之中,而结果就是突击式的持续改进。近来,安卓项目甚至以前所未闻的六个月开发周期在运行,这可比它之前的开发周期慢。在安卓的第一年商业运作时,Google每两个半月就会发布一个新版本。
|
||
|
||
Google在2007年11月时对安卓最初的介绍:http://www.youtube-nocookie.com/embed/1FJHYqE0RDg?start=0&wmode=transparen (墙外)。
|
||
|
||
同行业的其它公司和之相比,只能是以蜗牛的步伐在缓慢前进。微软每三到五年升级它的桌面操作系统,苹果对OS X和iOS以一年为一个更新周期。另外不是每个更新都是同等地位的。iOS在七年内有一个主要的设计上的大变动,而最新的Windows Phone 8看起来和Windows Phone 7十分相似。但在安卓上,如果用户能看到今年的任何东西看起来和去年一样,那简直是中彩票了一样。比如Play商店,五年内有五次的重新设计。对安卓来说那更是家常便饭。
|
||
|
||
回头看看,安卓的存在是很模糊的。从其历史来看,现在它是个使用量巨大的操作系统。近十亿的设备销量,以及每天一百五十万左右的激活量——但Google是如何达到这种地步的?安卓现在如此水平的规模和成功,可能会让你觉得安卓从零开始到万众瞩目的英雄,覆盖到了方方面面。但事实上不是这样的。安卓在早期并不流行,以及直到安卓4.0屏幕截图还只能通过开发者工具实现。这两个因素意味着你无法轻易找到许多安卓早期版本的图片或信息。
|
||
|
||
对于早期版本的缺乏覆盖问题现在称作*安卓早期版本正在消亡*。尽管像Windows 1.0这样的系统可以永远在你身边——只要找台旧电脑把它装上去就好了——安卓可以被认为是第一个基于云的操作系统。许多功能严重依赖Google的服务来实现。随着越来越少的人使用老版本的安卓,那些服务被逐渐关闭。当一个依赖云的应用其服务支持停止之后,它再也不能正常运作——应用崩溃并显示空白的屏幕,或直接无法启动。
|
||
|
||
正是由于这种“[云腐烂][1]”现象,安卓回顾展在几年内不可能出现。早期版本的安卓没有了云的支持会是一个不能正常工作的破碎的空壳。尽管可以简单地认为这是早期版本安卓渐渐消失的一种方法,但这就是正在发生的。就在写到这里的时候,正有无数的应用因为服务器支持被关闭而失去作用。例如早期的谷歌地图和安卓市场客户端,已经不能和Google服务器交互。它们会弹出错误消息并崩溃或者是显示一个空白的界面。有些应用甚至在前一个星期正常运行,然后下个星期就宣告死亡,因为就在我们写下这篇文章的时候谷歌正在积极地关闭服务器!
|
||
|
||
为了防止在滚滚历史里丢失掉更多关于安卓的过去,我们做了需要完成的工作。这里有20+个版本的安卓,七台设备,以及无数的屏幕截图被集合到一起。这就是安卓编年史,从最早的公开版本到最新的KitKat。
|
||
|
||
----------
|
||
|
||
### 目录 ###
|
||
|
||
(以下各篇正在翻译中,链接会逐步更正过来)
|
||
|
||
- [Android 0.5 Milestone 3——第一个公开版本][10]
|
||
- [Android 0.5 Milestone 5——报废接口的领地][11]
|
||
- [Android 0.9 Beta——嘿,这看起来很眼熟!][12]
|
||
- [Android 1.0——谷歌应用的引入和实体硬件][13]
|
||
- [Android 1.1——第一个真正的增量更新][14]
|
||
- [Android 1.5 Cupcake——虚拟键盘打开设备设计的大门][15]
|
||
- ----[谷歌地图———登陆安卓市场的第一个内置应用][16]
|
||
- [Android 1.6 Donut——CDMA支持将安卓带给了各个运营商][17]
|
||
- [Android 2.0 Éclair——带动GPS产业][18]
|
||
- [The Nexus One——迎来Google Phone][19]
|
||
- [Android 2.1——动画的大发现(以及滥用)时代][20]
|
||
- ----[Android 2.1, update 1——无尽战争的开端][21]
|
||
- [Android 2.2 Froyo——更快更华丽][22]
|
||
- ----[语音操作——口袋里的超级电脑][23]
|
||
- [Android 2.3 Gingerbread——第一个UI大变][24]
|
||
- [Android 3.0 Honeycomb——平板和设计的新生][25]
|
||
- ----[Google Music Beta——云存储的内容库][26]
|
||
- [Android 4.0 Ice Cream Sandwich——摩登时代][27]
|
||
- ----[Google Play以及直接面向消费者销售设备的回归][28]
|
||
- [Android 4.1 Jelly Bean——Google Now指明未来][29]
|
||
- ----[Google Play服务——碎片化以及让系统版本(几乎)过时][30]
|
||
- [Android 4.2 Jelly Bean——新Nexus设备,新平板界面][31]
|
||
- ----[周期外更新——谁需要一个新系统?][32]
|
||
- [Android 4.3 Jelly Bean——为可穿戴设备做好准备][33]
|
||
- [Android 4.4 KitKat——更完美;更少的内存占用][34]
|
||
- [今日安卓无处不在][35]
|
||
|
||
----------
|
||
|
||
### Android 0.5, Milestone 3——第一个公开版本 ###
|
||
|
||
在我们开始在实体硬件上研究安卓之前,我们要从很早,很早以前的安卓时光开始说起。尽管1.0是第一个运行在实体硬件上的版本,但在那之前其实还有若干个只随SDK发布的模拟器beta版本。这些模拟器只用于开发的目的,所以它们不含任何谷歌应用,甚至只是一些核心系统应用。但它们仍然是回顾安卓的发布前时光的最好渠道。
|
||
|
||
![模拟器默认的qwerty布局并运行Milestone 3。](http://cdn.arstechnica.net/wp-content/uploads/2013/11/blackberrrry.png)
|
||
|
||
*模拟器默认的qwerty布局并运行Milestone 3* [Ron Amadeo供图]
|
||
|
||
在异想天开的糖果版本代号和[与跨国食品公司跨界合作][2]之前,第一个安卓的公开发布版本的标签是“m3-rc20a”——“m3”代表“Milestone 3(里程碑3)”。尽管谷歌可能不会公布版本号——这个版本甚至没有一个设置应用来查看——浏览器用户标识被识别为“Android 0.5”。
|
||
|
||
在2007年11月,谷歌获得安卓两年、iPhone发布五个月之后,[安卓正式发布][3],第一个模拟器正式释出。回到那时候看,这个系统才刚处于起步阶段。它很容易就被认为“只是个黑莓的山寨而已”。模拟器使用了一个qwerty布局的皮肤以及320×240的显示屏,是一台[原型设备][4]的复制品。这台设备由HTC制造,通过一些早期的安卓账户可以得知这台设备的代号似乎是“Sooner”。但是Sooner从未正式上市。
|
||
|
||
通过安卓早期[开发账号][5]得知,当苹果在2007年1月最终发布它革命性的智能手机后,谷歌不得不对安卓“从头来过”——包括放弃Sooner。考虑到Milestone 3模拟器在苹果的iPhone后近一年才推出,设备界面看起来还是那么像黑莓的模型是在是令人惊奇的事情。尽管在iPhone发布后的开发里任务毫无疑问地在优先保障下完成了,但模拟器仍然以被认为是“旧学院风”的界面发布。这使得它没能给人留下一个好的第一印象。
|
||
|
||
在早期阶段,安卓按键布局看起来并没有最终确定下来。尽管第一台商业安卓设备使用了“主屏幕”,“后退”,“菜单”以及“搜索”作为标准的按键套件,模拟器上有一个空白的标记为“X”的键,你可能会认为是那是搜索键应该在的地方。“Sooner”原型机看起来更奇怪——它在第四个键上有个星形标记。
|
||
|
||
![从左到右:主屏幕,一个打开的通知,以及“应用”文件夹。](http://cdn.arstechnica.net/wp-content/uploads/2013/11/noti3.png)
|
||
|
||
*从左到右:主屏幕,一个打开的通知,以及“应用”文件夹* [Ron Amadeo供图]
|
||
|
||
在这里没有可以配置的主屏幕或小插件,仅仅只是简单的在底部有聚合图标的dock,可以循环或是点击。尽管已经有一些特性支持触摸屏,Milestone 3主要还是使用五向十字键——一个时至今日安卓仍然支持的不合时宜的设计。甚至早期的安卓都能够实现动画效果。图标在进入dock的中心窗口时会变大或缩小。
|
||
|
||
在这时候同样也还没有通知栏。通知图标显示在顶部状态栏(上面图片中的微笑标志),打开它的唯一方法是在主屏幕按下十字键的上键。你无法通过点击微笑的图标来打开它,也无法从除主屏幕以外的地方打开通知。当通知被打开的时候,状态栏扩展开些许,通知文本会显示在一个聊天气泡中。一旦你阅读完通知,你无法手动清除它——应用本身负责清除它的通知消息。
|
||
|
||
应用抽屉的职责由托盘左侧简单的“应用程序”文件夹负责。尽管有着不少标志性的功能,Milestone 3模拟器应用图标还不是十分完善。只有“浏览器”,“联系人” ,以及“地图”是这里面真正的应用。奇怪的是,“最近通话”被提升为一个独立的图标。因为这仅仅只是个模拟器,像闹钟,日历,拨号,计算器,照相机,相册,以及设置这样的智能手机核心功能的图标统统没有。硬件原型倒是有[其中的大部分][6],它还有一套谷歌应用出现并运行着。不幸的是我们没办法看到它们了。它们已经老到无论如何都连不上谷歌的服务器了。
|
||
|
||
![Milestone 3的浏览器菜单系统,壁纸界面,以及音量控制。](http://cdn.arstechnica.net/wp-content/uploads/2013/11/menu.png)
|
||
|
||
*Milestone 3的浏览器菜单系统,壁纸界面,以及音量控制* [Ron Amadeo供图]
|
||
|
||
这套现在已经过时的菜单系统出现并运行在Milestone 3上。点击实体菜单键会打开一个灰色带有蓝色梯度高亮的列表,通过实体键盘完成操作。在上面的截图中,你可以看到在浏览器中打开的菜单。进入二级菜单,像缩放菜单,一级菜单这些变成有些奇怪的透明状态。
|
||
|
||
令人惊喜的是,多任务及后台应用在Milestone 3上已经可以运作了。离开应用而不关闭它——应用会保存状态,甚至写入文本保存。这个特性iOS直到2010年推出iOS 4才能与其相比,这就真正显示出了这两个平台的不同。iOS最初是作为一个封闭的平台而没有第三方应用,所以平台的鲁棒性并没有得到很大的关注。安卓是从头开始被构建成一个强大的应用软件平台,轻松开发应用是它创造出来背后的推动力之一。
|
||
|
||
在安卓之前,谷歌已经通过[WAP网站][7]和[J2ME手机应用][8]向移动端开始迁移,这使得它们强烈地意识到移动开发的难度。据[The Atlantic][9],拉里.佩奇曾这么描述公司在移动端的努力“我们有一系列超过100台的手机,我们在每一台设备上都要构建一次我们的应用”。开发者们现在经常抱怨安卓的碎片化,但在安卓出现之前,问题要比现在糟糕很多。
|
||
|
||
谷歌的平台战略实际上胜出了,iOS最终在不久后开始慢慢加入这些围绕应用的特性——多任务,跨应用分享,以及应用切换。
|
||
|
||
![当你在主屏幕按数字键弹出的拨号界面,来电,以及电话会议界面。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/call10000.png)
|
||
|
||
*当你在主屏幕按数字键弹出的拨号界面,来电,以及电话会议界面* [Ron Amadeo供图]
|
||
|
||
尽管没有拨号图标,Milestone 3模拟器还是有办法拨号。按键盘上的任意键会打开上图左侧的界面,这是拨号/联系人搜索混合界面。仅输入数字并点击绿色的实体拨号键来开始通话,输入字母会搜索联系人。但是联系人无法通过数字搜索。甚至直接点击一个号码也不会打开联系人。
|
||
|
||
来电被显示成一个几乎全屏的令人愉快的透明背景弹窗。一旦进入通话,背景会变成深灰色,Milestone 3展现给用户一些令人惊奇的高级特性:静音,扬声器,通话保持,以及电话会议按钮。多方通话会显示成重叠,半透明的卡片状,用户有切换或者合并通话的选项可以选择。切换通话会触发一个漂亮的小卡片洗牌动画。
|
||
|
||
![联系人列表,打开一个联系人,编缉联系人,以及最近通话界面。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/recent100.png)
|
||
|
||
*联系人列表,打开一个联系人,编缉联系人,以及最近通话界面* [Ron Amadeo供图]
|
||
|
||
联系人是一个质朴的,黑色和蓝色的姓名列表。联系人卡片中有个联系人头像的位置但是没办法设置一张图像上去(至少在模拟器中不行)。这里唯一的装饰是每个联系人名字左侧的XMPP状态点。就传统来说,一个保持在线的XMPP连接是安卓的核心,它的深度集成从Milestone 3就已经开始了。安卓使用XMPP来驱动一个24/7在线的与谷歌服务器之间的连接,以驱动Google Talk的云到端消息推送,以及应用的安装和卸载信息。
|
||
|
||
![浏览器的假Google首页,地址栏,浏览历史界面。](http://cdn.arstechnica.net/wp-content/uploads/2013/11/browser3.png)
|
||
|
||
*浏览器的假Google首页,地址栏,浏览历史界面* [Ron Amadeo供图]
|
||
|
||
浏览器运行Webkit 419.3,它也被用在相同时代的像Mac OS X 10.4的Safari 2上。浏览器主页并不是Google.com,而是一个包含在安卓里的硬编码的home.html文件。它看起来就像是千年之前的Google.com。浏览器的OS X遗留还可以辨认出来,用了光滑的,Aqua风格的搜索按钮来渲染浏览器按钮。
|
||
|
||
这个小小的黑莓风格的屏幕需要一个分离的地址栏,可以通过浏览器菜单里的“前往”选项打开。尽管自动补全不起作用,地址栏会在你输入的时候实时搜索你的浏览历史。右侧图片显示的是历史界面,它使用了略缩图来显示各个站点。当前的略缩图在其它两个缩略图之前,滑动它们会触发一个俯冲动画效果。但在早期阶段,浏览器不支持多标签或窗口——你可以看到当前站点,那就是全部了。
|
||
|
||
![一个视频屏幕抓取导出的谷歌地图界面,方向界面,相册测试界面。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/maps.png)
|
||
|
||
*一个视频屏幕抓取导出的谷歌地图界面,方向界面,相册测试界面* [Ron Amadeo供图]
|
||
|
||
在开始的时候,谷歌认识到在移动端地图将会非常重要,甚至在Milestone 5模拟器中内置了地图客户端。那个版本的谷歌地图是我们遇到的第一个死于云腐烂的!这个客户端无法从谷歌的服务器上载入信息,所以地图显示为一片空白,灰色的网格。没有什么能够工作。
|
||
|
||
幸运的是,因为上面的第一张截图,我们能够从安卓启动视频中拼凑出准确的界面。旧的谷歌地图看起来完全是为非触摸设备准备的,实体键快捷方式列表排列在屏幕底部。这样在看地图时,或是在如果仅仅显示该点的地址的时候就不大清楚。
|
||
|
||
隐藏在菜单之后的是搜索选项,路线,以及卫星和交通图层。中间的截图是获取路径的UI之一,你可以选择一个联系人的地址作为起点或者终点。但地图缺乏任何种类的集成GPS,你在哪都找不到“我的位置”这个按钮。
|
||
|
||
尽管没有合适的相册,不过在右边是相册的测试界面,隐藏在“API Demos”应用里。图片可以向左向右滚动,但无法以全屏的方式打开一张照片。同样它也没有照片管理选项。它本质上就是个图片滚动界面的测试视图。
|
||
|
||
![时间设置和日历,有点字间距问题,以及以Ars为特色的垂直列表测试。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/datetimeshoutout.png)
|
||
|
||
*时间设置和日历,有点字间距问题,以及以Ars为特色的垂直列表测试* [Ron Amadeo供图]
|
||
|
||
同样模拟器中也没有设置应用,但是通过API Demos我们可以看到最初的日期时间设置界面。这个示例暴露出很多安卓没来得及处理的问题:到处都有的字间距问题,分钟数字间巨大的间隔,以及日历中星期日间不均等的间隔。尽管时间设置允许你单独更改每个数字,但除非你将当前日期移出本月到前一个或下一个月,否则你无法改变月份或年份。
|
||
|
||
别忘了尽管这看起来像是一些被遗忘时代的恐龙级别遗留物,但这仅仅是六年前发布的。我们总趋向与适应科技的脚步。我们很容易将这样的东西看作是20年前的东西。比较一下2007年晚些时候这个时间段的桌面操作系统,微软尝试将Windows Vista售往全世界快要一年了,而苹果刚刚发布了OS X 10.5 Leopard。
|
||
|
||
最后一个关于Milestone 3的细节:谷歌在Milestone 3模拟器中给了Ars Technica一个快捷方式。打开“API Demos”应用并打开"Views," "Focus,",然后"Vertical"显示一个*this very Website*的头条测试列表。
|
||
|
||
![随Milestone 3,RC37a发布的更加现代,全触控风格的模拟器。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/bigscreen.png)
|
||
|
||
*随Milestone 3,RC37a发布的更加现代,全触控风格的模拟器* [Ron Amadeo供图]
|
||
|
||
两个月后,2007年12月,谷歌放出了一个Milestone 3的更新,带来了更大的480×320设备设置。这个更新的标签是“m3-rc37a”。软件看起来还是像黑莓一样,仅仅是带来了更多的屏幕分辨率支持。
|
||
|
||
----------
|
||
|
||
![Ron Amadeo](http://cdn.arstechnica.net/wp-content//uploads/authors/ron-amadeo-sq.jpg)
|
||
|
||
[Ron Amadeo][a] / Ron是Ars Technica的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。
|
||
|
||
[@RonAmadeo][t]
|
||
|
||
--------------------------------------------------------------------------------
|
||
|
||
via: http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/
|
||
|
||
译者:[alim0x](https://github.com/alim0x) 校对:[wxy](https://github.com/wxy)
|
||
|
||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||
|
||
[1]:http://arstechnica.com/gadgets/2014/06/how-we-found-and-installed-every-version-of-android/
|
||
[2]:http://arstechnica.com/gadgets/2013/09/official-the-next-edition-of-android-is-kitkat-version-4-4/
|
||
[3]:http://arstechnica.com/gadgets/2007/11/its-official-google-announces-open-source-mobile-phone-os-android/
|
||
[4]:http://www.zdnet.com/blog/mobile-gadgeteer/mwc08-hands-on-with-a-working-google-android-device/860
|
||
[5]:http://www.theatlantic.com/technology/archive/2013/12/the-day-google-had-to-start-over-on-android/282479/
|
||
[6]:http://www.letsgomobile.org/en/2974/google-android/
|
||
[7]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/%E2%80%9D
|
||
[8]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/%E2%80%9D
|
||
[9]:http://www.theatlantic.com/technology/archive/2013/12/the-day-google-had-to-start-over-on-android/282479/
|
||
[10]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/1/#milestone3
|
||
[11]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/2/#milestone5
|
||
[12]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/3/#0.9
|
||
[13]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/6/#1.0
|
||
[14]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/7/#1.1
|
||
[15]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/8/#cupcake
|
||
[16]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/9/#Mapsmarket
|
||
[17]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/9/#donut
|
||
[18]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/10/#2.0eclair
|
||
[19]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/11/#nexusone
|
||
[20]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/12/#2.1eclair
|
||
[21]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/13/#alloutwar
|
||
[22]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/13/#froyo
|
||
[23]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/14/#voiceactions
|
||
[24]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/14/#gingerbread
|
||
[25]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/16/#honeycomb
|
||
[26]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/19/#music
|
||
[27]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/19/#ics
|
||
[28]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#googleplay
|
||
[29]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#4.1jellybean
|
||
[30]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/21/#playservices
|
||
[31]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/22/#4.2jellybean
|
||
[32]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/23/#outofcycle
|
||
[33]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/24/#4.3jellybean
|
||
[34]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/25/#kitkat
|
||
[35]:http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/26/#conclusion
|
||
[a]:http://arstechnica.com/author/ronamadeo
|
||
[t]:https://twitter.com/RonAmadeo
|