Android系统架构

 Android的系统架构采用了分层架构的思想,如图1所示。从上层到底层共包括四层,分别是应用程序程序层、应用框架层、系统库和Android运行时和Linux内核。

Android系统架构_第1张图片

      图1:Android系统架构图

      每层功能简要介绍如下:

      一 应用程序层

      

      该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。

     二 应用程序框架层


     该层是Android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。

      Android系统架构_第2张图片

          a) Activity Manager(活动管理器)

              管理各个应用程序生命周期以及通常的导航回退功能

         b) Window Manager(窗口管理器)

              管理所有的窗口程序

         c)  Content Provider(内容提供器)

              使得不同应用程序之间存取或者分享数据

         d) View System(视图系统)

              构建应用程序的基本组件

         e) Notification Manager(通告管理器)

              使得应用程序可以在状态栏中显示自定义的提示信息

         f) Package Manager(包管理器)

              Android系统内的程序管理

         g)Telephony Manager(电话管理器)

              管理所有的移动设备功能

         h)Resource Manager(资源管理器)

              提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等

         i)Location Manager(位置管理器)

             提供位置服务

         j)XMPP Service(XMPP服务)

             提供Google Talk服务

 

     三 系统库和Android运行时

     系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGLEState、FreeType、WebKit、SGL、SSL和libc。Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.net、android.media等等。后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。

            Android系统架构_第3张图片

 a)系统库

              系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。其主要分为如:


              Ø  Surface Manager:

                  执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。

             Ø  Media Framework:

                  多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。

              Ø  SQLite:

                  小型的关系型数据库引擎

              Ø  OpenGL|ES:

                  根据OpenGL ES 1.0API标准实现的3D绘图函数库

              Ø  FreeType:

                  提供点阵字与向量字的描绘与显示

              Ø  WebKit:

                  一套网页浏览器的软件引擎

              Ø  SGL:

                  底层的2D图形渲染引擎

              Ø  SSL:

                  在Andorid上通信过程中实现握手

              Ø  Libc:

               从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制 


  b)Android运行时

             Android应用程序时采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。

 

             Ø  核心库

                 核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。


             Ø  Dalvik虚拟机

                 Android程序不同于J2me程序,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一 个Dalivik虚拟机的实例,并在该实例中执行。Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化          以及支持多个虚拟机的特点。需要注意的是,不同于J2me,Android程序在虚拟机中执行的并非编译后的字节码,而是通过转换工具dx将Java字节码转成dex格式的中间码。

  

     四 Linux内核

  Android核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、蓝牙驱动、 Flash内存驱动、Binder IPC驱动、USB驱动、键盘驱动、WiFi驱动音频驱动、能源管理 等。

              

显示驱动(Display Driver): 常用基于Linux的帧缓冲(Frame Buffer)驱动。

Flash内存驱动(Flash Memory Driver)

照相机驱动(Camera Driver): 常用基于Linux的v4l(Video for )驱动。

音频驱动(Audio Driver): 常用基于ALSA(Advanced Linux Sound Architecture,高级Linux声音体系)驱动。

WiFi驱动(Camera Driver): 基于IEEE 802.11标准的驱动程序

键盘驱动(KeyBoard Driver)

蓝牙驱动(Bluetooth Driver)

Binder IPC驱动: Andoid一个特殊的驱动程序,具有单独的设备节点,提供进程间通讯的功能。

Power Management(能源管理)



 总结:

     1 Android的系统架构采用分层架构的思想,架构清晰,层次分明,协同工作。

     2 Android的系统架构不仅从宏观上认识了Android系统,同时,也给我们的学习与实践指明了方向。若是从事Android应用开发,那应该研究Android的应用框架层和应用程序层;若是从事Android系统开发,那应该研究Android的系统库和Android运行时;若是从事Android驱动开发,那应该研究Android的Linux内核。总之,找准切入点,实践出真知。



开发者需要知道的Android库

Android也提供了大量的API开发应用程序。所以在这个列表中,将帮助开发者了解哪些是可用的核心API。所有的Android设备将提供至少这些API支持:

  • android.util:核心工具包中包含底层类,字符串格式化和XML解析工具、底层类​​。
  • android.os:操作系统包提供了访问基本的操作系统服务,如消息传递、进程间通信、时钟功能和调试。
  • android.graphics:图形API提供了支持画布、颜色和绘制图元的低级别的图形类并且支持绘制画布。
  • android.text:用于显示和解析文本的文本处理工具。
  • android.database:在数据库处理游标时提供底层类支持。
  • android.content:content API管理数据访问,提供服务来管理资源、内容提供者(content provider)和包。
  • android.view:视图是核心的用户接口类。所有用户界面元素使用的是一系列视图,以构成用户交互的组件。
  • android.widget:内置在View包内,小部件类是“这里是我们前面创建的”用户界面元素,可以在自己的应用程序中使用。包括列表、按钮和布局。
  • com.google.android.maps:高级的API,它提供了访问本地地图控件,可以在自己的应用程序中使用。包括MapView的控制、用于标注和控制您的嵌入式地图的叠加以及MapController类。
  • android.app:一个高层次的包,允许访问应用程序模型。该应用程序包包括ActivityService的API等是Android应用程序的基础。
  • android.provider:方便开发者访问标准的内容提供者(比如联系人数据库),provider包提供类给开发者访问标准的数据库。
  • android.telephony:telephony API让开发者直接接触电话底层,开发者可以打电话、接电话、显示通话记录、通话状态和短消息。
  • android.webkit:WebKit的软件包功能的API与基于Web的内容的工作,其中包括一个WebView控件在您的活动中嵌入浏览器和cookie管理器。

同样,你刚才看到的是Android的库可以帮助您快速构建应用程序的简化列表!除了在Android API,Android栈还包括一组的C/C++库,可通过应用程序框架发布出来。它们包括:

  • OpenGL:用于支持基于OpenGL ES1.0 API、3D图形库。
  • ** FreeType**:这支持位图和矢量字体渲染。
  • ** SGL**:用于提供2D图形引擎的核心库。
  • ibc:标准C库,为基于Linux的嵌入式设备进行了优化。
  • SQLite:用于存储应用程序数据的轻量级的关系数据库引擎。
  • SSL:支持使用安全套接字层加密协议进行安全互联网通信。

注意:到此,要介绍的就太多了,我将在这里结束。只是多一个部分,你可以做自己的事情。如果你不能看完整个帖子,可以将其加入书签,以备将来参考。因为,这里的大多数内容不会有太大变化!

高级Android开发库

我们所看到的核心库,到目前为止提供所有开发Android应用程序需要的功能。然而钻研高级API将会使用更高级的功能并带来额外的乐趣。

尽管如此,值得注意的是,由于Android希望针对移动硬件有更广泛的适应性,因此要注意下列API适用的场合和以及使用时装置是否具备条件。

  • android.location:基于位置的服务的API,使应用程序访问设备的当前物理位置。基于位置的服务提供通用的访问使用任何位置固定的硬件或技术设备上可用的位置信息。
  • android.media:媒体API提供了用于播放音频和视频媒体文件,包括流媒体和录制的支持。
  • android.opengl:Android提供使用的OpenGL ES API,你可以用它来创建动态3D用户界面为你的应用程序的强大的3D渲染引擎。
  • android.hardware:如有可能,硬件API公开的传感器硬件,包括摄像头、加速计和指南针传感器。
  • android.bluetooth,android.net.wifi,android.telephony:Android也提供了硬件平台,包括蓝牙、Wi-Fi和电话硬件的低级别的访问。


你可能感兴趣的:(系统架构,android平台)