Android发展历史

Android是一种比较新的操作系统,专为运行在移动智能设备而设计。它基于Linux内核,在其基础上提出少许新的概念,使用大多数Linux设施(进程、用户ID、文件系统、调度等)。

自问世以来Android已经成长为使用最为广泛的智能手机操作系统之一。Android普及的原因之一是搭上了智能手机爆炸式增长的快车,另一个原因是移动设备制造商可以免费获得Android并将其用在自己的设备之中。Android是一种开源平台,它可以定制化,适用于形形色色的设备。Android不但在消费者为中心的设备(例如平板电脑、电视、游戏机以及媒体播放器)上流行,还越来越多的用作需要图形用户界面(Graphical User Interface, GUI)的专用设备的嵌入式OS,例如VOIP电话、智能手表、汽车仪表盘、医疗设备以及家用电器。

Android操作系统的大部分是用高级语言编写的,即Java程序设计语言。内核和大量的底层库是用C和C++编写的。不但系统的大部分是用Java编写的,而且除了少量例外,整个应用程序API也是用Java编写和发布的。Android中用Java编写的部分倾向于遵循完全的面向对象设计,这正是该语言所鼓励的。

Android与Google

Android是一种异于常规的操作系统,它将开源代码和闭源第三方应用程序结合在一起。Android的开源部分称为Android开源项目(Android Open Source Project, AOSP),它是完全开放的,任何人都可以免费使用和修改。

Android的一种重要目标是支持丰富的第三方应用程序环境,这要求Android具有稳定的实现和API,从而使应用程序得以在其上运行。然而,在开源世界中每一个设备厂商都可以随其意愿定制平台,于是兼容性问题很快就产生了,这就需要有某种方法来控制这一冲突。

在Android针对这一问题的解决方案中,有一部分是兼容性定义文档(Compatibility Definition Document, CDD),它描述了为了与第三方应用程序相兼容,Android所必须遵循的行为方式。这一文档本身描述了为了成为兼容的Android设备所必须的条件。然而,因为缺乏某种方法来强制实施这样的兼容性,于是它经常被忽略,因此需要某种额外的机制来做这件事。Android解决这一问题的方法是允许在开源平台之上创建额外的私有服务,以这样的方式来提供平台本身不能实现的服务。因为这些服务是私有的,所以它们可以限制包含在其中的设备,这就要求这些设备具有CDD兼容性。Google实现的Android能够支持多种多样的私有云服务,在Google广泛的服务系列中具有代表性的案例包括Gmail、日程表和通讯录同步,云到设备的消息传递以及许多其它服务,有些服务对用户而言是可见的,有些则不可见。

Google Play是Google的在线Android应用程序商店。一般而言,当开发商创建Android应用程序时,他们会用Google Play来发布。因为Google Play是一种渠道,应用程序通过这一渠道传送到Android设备上,所以私有服务负责确保应用程序在它们所传送到的设备上能够正常工作。Google Play使用了两个主要的机制来保证兼容性。最重要的机制就是要求通过它得以上市的任何设备必须按照CDD的要求具备兼容性。此外Google Play必须了解应用程序要求设备所具备的任何功能特性,这样一来在缺乏这些功能特性的设备上应用程序就是不可用的。

Android的演化

Android作为一家创业公司在其早期发展阶段即被Google收购,在收购Android之后,Google于2005年左右开发了Android。今天市面上的Android平台的几乎全部开发工作都是在Google的管理下完成的。

早期发展

Android有限公司是一家软件公司,创立该公司的目的是为智能移动设备开发软件。Android最初的着眼点是照相机,之后目光很快切换到智能手机,因为智能手机拥有更大的潜在市场。这一最初目标发展的结果是解决了当时在移动设备开发中遇到的难题,方法是引入构建于Linux之上的一个开放平台,这样就有可能获得广泛的应用。

在这一时期实现了平台的用户界面原型,以展示隐含在其背后的理念。平台本身则意在三种重要的语言----JavaScript,Java和C++,以期支持丰富的应用开发环境。

Google于2005年7月收购了Android,之后提供了必要的资源和云服务支持,作为完整的产品继续Android开发。在这一时期,有一个相当小的工程师团队紧密的协同工作,开始开发该平台的核心基础设施以及高级应用开发的基础库。

2006年年初,计划发生了重大的改变:平台不再支持多种程序设计语言,而是将其应用开发完全聚焦于Java程序设计语言。这是一个艰难的改变,因为原有的多语言方法由于拥有“世界最好的一切”而在表面上使每个人都感到高兴,而聚焦于一种语言对于更喜欢其他语言的工程师来说会觉得是大踏步的倒退。然而,试图使每个人感到高兴很容易造成没人有人感到高兴。构建三种不同语言的API比起聚焦于单一的语言需要更多地努力,从而大大降低每一种语言API的质量。聚焦于Java语言的决策对于平台质量具有极高的价值,而且使开发团队能够满足重要的截止期限是至关重要的。

随着开发工作的进展,Android平台与最终会安装在其上的应用一同紧密的进行开发。Google已经拥有多种多样的服务----包括Gmail,Maps,Calendar,YouTube,Search,这些都会发布在Android上。在早期平台上实现了这些应用时获得的经验反馈到设计之中,这一伴随应用的重复过程使得平台中的许多设计缺陷在其开发的早期就能够得到解决。

大多数早期应用程序开发是在没有多少平台实际可供开发者使用的条件下完成的。平台通常是全部在一个进程中运行的,也就是说,通过在宿主计算机上作为单一的进程而运行的“模拟器”来运行全部系统和应用程序。实际上现如今仍然存在某些这种老式实现的残余,例如在Android程序员用于编写应用程序的SDK中依然存在Application.onTerminate方法。

2006年6月,有两款硬件被选中规划产品的软件开发目标。第一款的代码名为Sooner,基于一种已有的智能手机,具有QWERT键盘和不具备触摸输入功能的屏幕。这块设备的目标是借助已有设备的杠杆作用使最初产品尽快上市。第二款目标设备代码名为Dream,它是为Android特别设计的,为的是作为完整的愿景而运行。它包括一块巨大的触摸屏,滑盖式QWERT键盘,3G无线,加速度计,GPS以及罗盘等。随着软件的日程安排变得日益清晰,两款硬件日程安排中的不合理之处日益彰显。到Sooner有可能发行之时,硬件或许早就过时了,并且在Sooner上付出的努力排挤了更为重要的Dream设备。为解决这一问题,Android决定放弃把Sooner作为目标设备,从而把精力全部集中到Dream中。

Android1.0

Android平台首次可用是2007年11月发行的SDK预览版。它包含运行完整Android设备系统映像和核心应用程序的硬件设备仿真器、API文档以及开发环境。此时此刻,核心设计和实现已经准备就绪,并且在许多方面与我们将要讨论的现代Android体系结构极为相似。发布会在Sooner和Dream硬件之上进行视频演示。

Android的早期开发是在一系列按季度演示的里程碑事件下进行的,这样做是为了推动并展示持续的进展。SDK的发行是平台的首次更为正式的发行。发行SDK会要求把刀发行时刻为止的各种部分集成在一起以支持应用程序开发,把平台清理干净,发布平台的文档,并且为第三方开发人员创建统一的开发环境。

此刻,开发工作将沿着两个轨道发展:吸收关于SDK的反馈以进一步改进并最终确定API,以及完成将稳定的Dream设备推向市场所必需的实现工作。这一时期,发生过对SDK的几次公开更新,这些更新以2008年8月发行的0.9版告终,这一版包含了几乎是最终的API。平台本身经历了快速的发展,并且在2008年春季焦点转移到稳定工作之上,从而使Dream能够推向市场。此刻Android包含了作为商业产品上市从未有过的大量代码,完完全全从C库的部分到Dalvik解释器,系统以及应用程序。

Android还包含许多以前从未想到的新颖思想,并且它们如何能够取得成功尚不清楚。所有这一切需要汇集起来成为稳定的产品,开发团队度过了令人寝食难安的几个月,最后在2008年8月,软件稳定下来并且做好了上市的准备。生产工作进入工厂并且开始烧录到设备上。9月,Android1.0在Dream设备上发布,那时它的名字是T-Mobile G1。

持续开发

在Android1.0发行之后,开发工作以快速的步伐持续进行。在接下来的5年时间,对平台大约有15次主要的更新,向最初的1.0版添加了大量各种各种的新功能和改进。

最初的兼容性定义文档基本上只允许与T-Mobile G1非常相似的兼容设备。在接下来的几年,兼容设备的范围得到巨大的扩展,这一过程的关键时间节点如下:
1)2009年,Android 1.5到2.0版引入了软键盘,取消了对物理键盘的要求,支持范围更为广泛的屏幕,包括低端的QVGA设备和新的 大尺寸高清设备,如WVGA Motorola Droid,并且引入了新的“system feature”设施,使设备能够报告它们支持什么硬件功能,应用程序能够指示它们需要哪些硬件功能。system feature 设施是Google Play用来对于特定设备确定其应用程序兼容性的关键机制。
2)2009年,Android 2.0版引入了一种体系结构,使第三方能够将他们自己的同步适配器插入平台API(如通讯录数据库)。Google用于同步各种数据的代码迁移到这个定义明确的SDK API。
3)2010年,Android 2.2版包含了Google专利代码的内部设计与实现工作。这个“伟大的解绑”干净的实现了许多核心Google服务,从交付基于云的系统软件更新,到“云到设备的信息发送”和其他背景服务,这样一来它们就能够单独的从平台得到交付和更新。
4)2011年,Android 3.0到4.0版在平台中引入了新的核心支持,以支持10英寸以及更大的平板电脑。核心平台现在完全支持各种设备屏幕尺寸,从小的QVGA手机到智能手机和大屏“平板手机”,从7英寸平板电脑到超过10英寸的平板电脑。
5)随着平台对更多各种各样的硬件提供内置的支持,出现了更多类型的Android设备,不但有更大的屏幕,而且还有带鼠标或不带鼠标的非触摸设备,其中包括TV设备、游戏设备、笔记本电脑、照相机等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,290评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,399评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,021评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,034评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,412评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,651评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,902评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,605评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,339评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,586评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,076评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,400评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,060评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,851评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,685评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,595评论 2 270