第2章 开启行程——认识你的开发环境
2.1 Android简介
Android(安卓)是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由谷歌公司和开放手机联盟领导及开发。Android操作系统最初由Andy Rubin开发,主要支持手机。2005年8月由谷歌公司收购注资。2007年11月,谷歌公司与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后谷歌公司以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年9月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。
Android一词的本义指“机器人”,最早出现于法国作家利尔亚当(Auguste Villiers de l′Isle-Adam)在1886年发表的科幻小说《未来夏娃》(L'ève future)中。他将外表像人的机器起名为Android。Android的图标是由Ascender公司设计的,是一个全身绿色的机器人,诞生于2010年,它的躯干就像锡罐的形状,头上还有两根天线是Android操作系统的品牌象征,如图2-1所示。
图2-1 Android图标
2.1.1 Android版本
2008年9月,谷歌正式发布了Android 1.0系统,这也是Android系统最早的版本。从Android 1.5版本开始,谷歌开始将Android的版本以甜品的名字命名,分别为纸杯蛋糕(Cupcake,Android 1.5),甜甜圈(Donut,Android 1.6),松饼(Éclair,Android 2.0和Android 2.1),冻酸奶(Froyo,Android 2.2),姜饼(Gingerbread,Android 2.3),蜂巢(Honeycomb,Android 3.0),冰激凌三明治(Ice Cream Sandwich,Android 4.0),果冻豆(Jelly Bean,Android 4.1和Android 4.2),奇巧(KitKat,Android 4.4),棒棒糖(Lollipop,Android 5.0),棉花糖(Marshmallow,Android 6.0),牛轧糖(Nougat,Android 7.0)。截至2017年6月,各版本分布数据见表2-1。
表2-1 Android版本市场份额
续上表
2.1.2 Android系统架构
Android系统架构如图2-2所示,为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层。
图2-2 Android系统架构
1.应用程序层(Application)
Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。这些应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。
2.应用程序框架层(Application Framework)
应用程序框架层是我们从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提供的组件如活动管理器(Activity Manager)、窗口管理器(Window Manager)、内容提供器(Content Provider)、视图系统(View System)、通告管理器(Notification Manager)、包管理器(Package Manager)、电话管理器(Telephony Manager)、资源管理器(Resource Manager)等来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。
3.系统运行库层(Libraries)
系统运行库层可以分成两部分,分别是系统库和Android运行时,分别介绍如下:
(1)系统库
系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要分为如下几个:
Surface Manager:执行多个应用程序时,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。
Media Framework:多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。
SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
OpenGL|ES:根据OpenGLES 1.0API标准实现的3D绘图函数库。
WebKit:一套网页浏览器的软件引擎。
Libc:从BSD继承来的标准C系统函数库,专门为基于Embedded Linux的设备定制。
(2)Android运行时
Android应用程序时采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。
核心库Core Libraries:核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.NET、android.media,等等。
Dalvik虚拟机Dalvik VM:Android程序不同于J2ME程序,每个Android程序都有一个Dalivik虚拟机的实例,并在该实例中执行。
4.Linux内核层(Linux kerned)
Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网络协议以及驱动模型都依赖于内核。