1.      Android架构直观图

下图展示了Android系统的主要组成部分:

                               Android框架简要介绍_3d

   总体上而言,Android系统结构由5个部分组成。从上到下,别人是Applications (Android应用层)、ApplicationFramework (Android应用程序框架层)、Libraries、Android Runtime (Anroid执行时)、Linux Kernel (Linux内核)。

当中,Libraries和Android Runtime处于Android框架的同一层。

以下简要介绍这5个部分。

2.      Applications层

Android装配的一个核心应用程序集合,包含电子邮件client、SMS应用程序、日历、地图、浏览器、联系人和其它设置。全部应用程序。无论是用户开发的,还是系统内置的应用程序都在该层。

3.      Application Framework层

Android应用程序的框架层,全部的应用程序都是在该框架的基础上开发出来的。

该框架通过提供开放的开发平台,使开发人员能够编制出极其丰富和新颖的应用程序。

比如,开发人员能够自由地利用设备硬件优势、訪问位置信息、执行后台服务、设置闹钟、向状态栏中加入通知等。同一时候,开发人员能够利用核心应用程序所使用的框架APIs。此外。因为应用程序的体系结构旨在简化组件的重用,不论什么应用程序都能公布它的功能且不论什么其它的应用程序都能使用这些功能。同一时候这一机制还同意用户替换Android的组件。

实际上,全部应用程序是一组服务和系统。它们包含:

      ● 视图(View): 丰富的、可扩展的视图集合,用于构建一个应用程序,包含列表、网络、文本框、button,以及内嵌的网页浏览器。

     ● 内容提供者(ContentProviders): 使应用程序可以訪问其它应用程序的数据,或者共享自己的数据。

      ● 资源管理器(Resource Manager): 使应用程序可以訪问非代码资源。

如本地化字符串、图形图像,以及界面布局文件。

      ● 通知管理器(Notification Manager): 使全部的应用程序可以在状态栏显示自己定义的警告。

      ● 活动管理器(Activity Manager): 管理应用程序的生命周期。提供通用的导航回退功能。

4. Libraries层

   Android包括一个C/C++库的集合。供Android系统的各个组件使用。

这些功能通过Android的应用程序框架(application framework)暴露给开发人员。以下列出一些核心库:

● 系统C库: 标准C系统库(libc)的BSD衍生,调整为基于嵌入式Linux设备

● 媒体库: 基于PacketVideo的OpenCORE。这些库支持播放和录制很多流行的音频和视频格式,以及静态图像文件,包含MPEG4、 H.264、 MP3、 AAC、 AMR、JPG、 PNG

● 界面管理: 管理訪问显示子系统和无缝组合多个应用程序的二维和三维图形层

● LibWebCore: 新式的Web浏览器引擎,驱动Android 浏览器和内嵌的web视图

● SGL: 主要的2D图形引擎

● 3D库: 基于OpenGL ES 1.0 APIs的实现。库使用硬件3D加速或包括高度优化的3D软件光栅

● FreeType: 位图和矢量字体渲染

● SQLite: 全部应用程序都能够使用的强大而轻量级的关系数据库引擎

5. Android Runtime 层

   Android 包括一个核心库的集合。提供大部分在Java编程语言核心类库中可用的功能。每个Android应用程序是Dalvik虚拟机中的实例,执行在他们自己的进程中。

Dalvik虚拟机设计成,在一个设备中能够高效地执行多个虚拟机。Dalvik虚拟机可执行文件格式是.dex。dex格式是专为Dalvik 设计的一种压缩格式,适合内存和处理器速度有限的系统。

大多数虚拟机包含JVM都是基于栈的。而Dalvik虚拟机则是基于寄存器的。两种架构各有优劣。一般而言。基于栈的机器须要很多其它指令,而基于寄存器的机器指令更大。dx 是一套工具,能够將Java.class 转换成 .dex 格式。一个dex文件一般会有多个.class。

Dalvik虚拟机依赖于Linux内核提供基本功能。如线程和底层内存管理。

6.Linux Kernel层

  Android基于Linux 2.6提供核心系统服务。比如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏详细硬件细节而为上层提供统一的服务。

假设你学过计算机网络知道OSI/RM,就会知道分层的优点就是使用下层提供的服务而为上层提供统一的服务,屏蔽本层及下面层的差异。当本层及下面层发生了变化不会影响到上层。也就是说各层各司其职,各层提供固定的SAP(Service Access Point)。专业点能够说是高内聚、低耦合。