
1.2 Android平台架构和特点
Android系统的底层是建立在Linux系统之上的,它采用软件叠层(Software Stack)的方式进行构建。这一方式使得层与层之间相互分离,明确了各层的分工,保证了层与层之间的低耦合,当下层发生改变的时候,上层应用程序无需做任何改变。Android 系统分为4个层,从高到底分别是:应用程序层(Application)、应用程序框架层(Application Framework)、系统运行库层(Libraries)和Linux内核层(Linux Kernel)。
1.应用程序层(Application)
Android系统包含了一系列核心应用程序,包括电子邮件、短信SMS、日历、拨号器、地图、浏览器、联系人等,这些应用程序都是用Java语言编写。本书仅讲解如何编写Android系统上运行的应用程序,它们与系统核心应用程序类似。
2.应用程序框架层(Application Framework)
Android应用程序框架提供了大量的API供开发人员使用,Android应用程序的开发,就是调用这些 API,根据需求实现功能。应用程序框架是应用程序的基础。为了便于软件的复用,任何一个应用程序都可以开发Android系统的功能模块,只要发布的时候遵循应用程序框架的规范,其他应用程序也可以使用这个功能模块。
3.系统运行库层(Libraries)
Android系统运行库是用C/C++语言编写的,是一套被不同组件所使用的函数库组成的集合。一般来说,Android 应用开发者无法直接调用这套函数库,都是通过它上层的应用程序框架提供的API来对这些函数库进行调用。
下面对一些核心库进行简单的介绍。
Libc:从BSD系统派生出来的标准C系统库,在此基础之上,为了便携式Linux系统专门进行了调整。
Media Framework:基于PacketView的OpenCORE,这套媒体库支持播放与录制硬盘及视频格式的文件,并能查看静态图片。
Surface Manager:在执行多个应用程序的时候,负责管理显示与存取操作间的互动,同时负责2D绘图与3D绘图进行显示合成。
WebKit:Web浏览器引擎,该引擎为Android浏览器提供支持。
SGL:底层的2D图像引擎。
3D libraries:基于OpenGL ES 1.0API,提供使用软硬件实现3D加速的功能。
FreeType:提供位图和向量字体的支持。
SQLite:轻量级的关系型数据库。
Android 运行时由两部分完成:Android 核心库和 Dalvik 虚拟机。其中核心库集提供了 Java语言核心库所能使用的绝大部分功能,Dalvik 虚拟机负责运行 Android 应用程序。虽然 Android应用程序通过Java语言编写,而每个Java程序都会在Java虚拟机JVM内运行,但是Android系统毕竟是运行在移动设备上的,由于硬件的限制, Android应用程序并不使用Java的虚拟机JVM来运行程序,而是使用自己独立的虚拟机Dalvik VM,它针对多个同时高效运行的虚拟机进行了优化。每个Android应用程序都运行在单独的一个Dalvik虚拟机内,因此Android系统可以方便对应用程序进行隔离。
4.Linux内核层(Linux Kernel)
Android系统是基于Linux 2.6之上建立的操作系统,它的Linux内核为Android系统提供了安全性、内存管理、进程管理、网络协议栈、驱动模型等核心系统服务。Linux内核帮助Android系统实现了底层硬件与上层软件之间的抽象。