1.0 Android 的历史、版本进化与应用框架
一、Android 的诞生
首先我们就要先来说说Android系统这个名字的来历:Android这一词最先出现在法国作家利尔亚当在1886年发表的科幻小说《未来夏娃》中,作者将外表像人类的机器起名为Android,这也就是Android小人名字的由来。
接下来我们再来看一下Android系统的来历:Android系统一开始并不是由谷歌研发出来的,Android系统原来的公司名字就叫做Android,谷歌公司在2005收购了这个仅成立22月的高科技企业。Android系统也开始由谷歌接手研发,Android系统的负责人以及Android公司的CEO安迪·鲁宾成为谷歌公司的工程部副总裁,继续负责Android项目的研发工作。在2007年11月5日这天,谷歌公司正式向外界展示了这款名为Android的操作系统,并且在这天谷歌宣布建立一个全球性的联盟组织,该组织由34家手机制造商、软件开发商、电信运营商以及芯片制造商共同组成。这一联盟将支持谷歌发布的手机操作系统以及应用软件,将共同开发Android系统的开放源代码。
二、Android 的进化
Android在正式发行之前,最开始拥有两个内部测试版本,并且以著名的机器人名称来对其进行命名,它们分别是:阿童木(AndroidBeta),发条机器人(Android 1.0)。后来由于涉及到版权问题,谷歌将其命名规则变更为用甜点作为它们系统版本的代号的命名方法。
Android 1.5 Cupcake
1.5主要更新:
拍摄/播放影片,并支持上传到Youtube;
支持立体声蓝牙耳机,同时改善自动配对性能;
最新的采用WebKit技术的浏览器,支持复制/贴上和页面中搜索;
主屏幕增加音乐播放器和相框widgets;
应用程序自动随着手机旋转;
短信、Gmail、日历,浏览器的用户接口大幅改进,如Gmail可以批量删除邮件;
相机启动速度加快,拍摄图片可以直接上传到Picasa;
来电照片显示。
Android 1.6 Donut
1.6主要更新:
重新设计的Android Market手势;
支持CDMA网络;
文字转语音系统(Text-to-Speech);
快速搜索框;全新的拍照接口;查看应用程序耗电;
支持虚拟私人网络(VPN);
支持更多的屏幕分辨率;
支持OpenCore2媒体引擎;
新增面向视觉或听觉困难人群的易用性插件。
Android 2.0 Eclair
2.0主要更新:
优化硬件速度;
"Car Home"程序;
支持更多的屏幕分辨率;
改良的用户界面;
新的浏览器的用户接口和支持HTML5;
新的联系人名单;
更好的白色/黑色背景比率;
改进Google Maps3.1.2;
支持Microsoft Exchange;
支持内置相机闪光灯;
支持数码变焦;
改进的虚拟键盘;
支持蓝牙2.1;
支持动态桌面的设计。
Android 2.3 Gingerbread
2.3主要更新:
增加了新的垃圾回收和优化处理事件;
原生代码可直接存取输入和感应器事件、EGL/OpenGLES、OpenSL ES;
新的管理窗口和生命周期的框架;
支持VP8和WebM视频格式,提供AAC和AMR宽频编码,提供了新的音频效果器;
支持前置摄像头、SIP/VOIP和NFC(近场通讯);
简化界面、速度提升;
更快更直观的文字输入;
一键文字选择和复制/粘帖;
改进的电源管理系统;
新的应用管理方式。
Android 3.0 Honeycomb
3.0主要更新:
优化针对平板;
全新设计的UI增强网页浏览功能;
in-app purchases功能。
Android 4.0 Ice Cream Sandwich
4.0主要更新:
全新的UI;
全新的Chrome Lite浏览器,有离线阅读,16标签页,隐身浏览模式等;
截图功能;
更强大的图片编辑功能;
自带照片应用堪比Instagram,可以加滤镜、加相框,进行360度全景拍摄,照片还能根据地点来排序;
Gmail加入手势、离线搜索功能,UI更强大;
新功能People:以联系人照片为核心,界面偏重滑动而非点击,集成了Twitter、Linkedin、Google+等通讯工具;
有望支持用户自定义添加第三方服务;
新增流量管理工具,可具体查看每个应用产生的流量,限制使用流量,到达设置标准后自动断开网络。
Android 4.1 Jelly Bean
4.1新特性:
更快、更流畅、更灵敏;
特效动画的帧速提高至60fps,增加了三倍缓冲;
增强通知栏;
全新搜索;
搜索将会带来全新的UI、智能语音搜索和Google Now三项新功能;
桌面插件自动调整大小;
加强无障碍操作;
语言和输入法扩展;
新的输入类型和功能;
新的连接类型。
Android 4.4 KitKat
4.4系统更加整合了自家服务,力求防止安卓系统继续碎片化、分散化。
Android 5.0 Lollipop
Android 5.0系统使用一种新的Material Design设计风格;
这套设计图对Android系统的桌面图标及部件的透明度进行的稍稍的调整,并且各种桌面小部件也可以重叠摆放;
虽然调整桌面部件透明度对Android系统来说并不算什么新鲜的功能,但是加入了透明度的改进;
界面加入了五彩缤纷的颜色、流畅的动画效果,呈现出一种清新的风格;
采用这种设计的目的在于统一Android设备的外观和使用体验,不论是手机、平板还是多媒体播放器。
新系统的整体设计风格依然保持扁平化的MeterialDesign风格。
Android 6.0 Marshmallow
Android6.0在对软件体验与运行性能上进行了大幅度的优化;
据测试,Android6.0可使设备续航时间提升30%。
三、Android框架
Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆叠(Software Stack),或称为「软件叠层架构」,叠层主要分成三层:操作系统、中间件、应用程序。
Android 框架图
1、Applications( 应用程序 )
Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
2、Application Framework(应用程序框架)
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统,其中包括:
1.丰富而又可扩展的视图(Views):可以用来构建应用程序,它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons),甚至可嵌入的web浏览器。
2.内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
3.资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形和布局文件。
4.通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。
5.活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航回退功能。
3、Libraries(系统运行库)
Android包含一个C/C++库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framework)暴露给开发者。下面列出一些核心库:
1.系统C库:标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备
2.媒体库:基于PacketVideo的OpenCORE。这些库支持播放和录制许多流行的音频和视频格式,以及静态图像文件,包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG
3.界面管理:管理访问显示子系统和无缝组合多个应用程序的二维和三维图形层
4.LibWebCore:新式的Web浏览器引擎,驱动Android浏览器和内嵌的web视图
5.SGL:基本的2D图形引擎
6.3D库:基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包含高度优化的3D软件光栅
7.FreeType:位图和矢量字体渲染
8.SQLite:所有应用程序都可以使用的强大而轻量级的关系数据库引擎
4、Android Runtime(安卓运行时)
Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。
每一个Android应用程序是Dalvik虚拟机中的实例,运行在它们自己的进程中。Dalvik虚拟机设计成在一个设备中可以高效地运行多个虚拟机,其可执行文件格式是.dex(dex格式是专为Dalvik设计的一种压缩格式)适合内存和处理器速度有限的系统。
大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣,一般而言,基于栈的机器需要更多指令,而基于寄存器的机器指令更大。Dalvik虚拟机依赖于Linux内核提供基本功能,如线程和底层内存管理。
5、Linux Kernel(Linux 内核)
Android基于Linux内核提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。
如果你学过计算机网络知道OSI/RM,就会知道分层的好处就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(Service Access Point),专业点可以说是高内聚、低耦合。当然了,如果你只是做应用开发,就不需要深入了解Linux Kernel层。
文/WillTalk
关键字:android, 产品经理
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!