[MDIT每天一小时]Android系统架构分析

Android系统架构分析


MDIT教育出品,如需转载,请注明转自http://www.855191.cn


1.Android系统架构图

Android官网提供的Android系统的体系结构

   由上图可以看出来,Android系统架构分为五个部分,下面先对这五个组成部分进行了解。

lApplications:应用程序层

Android系统包含一系列的核心应用程序,例如联系人、日历、浏览器、电话等,这些应用程序都是Android系统自带的。还有一系列的应用程序,例如微信、手机QQ、淘宝等,这些应用程序是由第三方软件厂商提供的。无论是系统自带的还是第三方软件厂商提供的应用程序,都是用Java语言编写的。而我们学习开发Android系统软件主要就是针对这一层的开发应用程序。

lApplicationFramework:应用程序框架

应用程序框架提供了很多API提供给开发人员使用,类似于我们在使用Java语言开发程序时使用Java API。应用程序框架是开发Android应用程序的基础,也是开发应用程序时复用的重要路径。无论是Android系统应用程序还是第三方提供的应用程序都是可以使用应用程序框架提供的API内容。这样来说,Android系统的应用程序都是平等的。

lLibraries:函数库

Android系统包含了一套C\C++库的集合,这些C\C++库可以实现图片、音频和视频的读取或操作,及对Android系统提供的轻量级数据库的操作等内容。但在开发Android应用程序时,是不能直接使用到这些功能的。可以通过应用程序框架来调用这些函数库。

lAndroidRuntime:Android运行机制

Android运行机制包含了两个部分:Android核心库集和Dalvik虚拟机。Android核心库集提供了Java语言和辛苦可以使用的绝大部分功能,而Dalvik虚拟机负责运行Android应用程序。

lLinuxKernel:Linux内核

Android系统是建立在Linux 2.6之上的。Linux内核提供了安全性、内存管理、进程管理、驱动管理等核心系统服务。

2.应用程序层

应用程序层主要就是Android系统智能手机提供给用户可以使用的软件。目前软件主要分成应用和游戏两个部分,而应用又可以分成系统应用和手机应用两个部分。无论是应用或是游戏还可以分成本地软件和联网软件。使用的开发语言主要是以Java语言为主,开发游戏的话可以使用C或C++语言。开发软件主要就是调用应用程序框架层提供的内容,来完成一个特定目标。这部分内容,我们会在后面的内容详细分析。

3.应用程序框架

   由上图可以看出来,Application Framework层包含九个部分,下面对这九个组成部分进行了解。

lActivity Manager:活动管理器

活动管理器是用来管理Android应用程序的生命周期的。Android应用程序的生命周期是指该应用从被启动到关闭的整个过程。对于有JAVA WEB开发经验的朋友来讲,活动管理器类似于JAVA WEB内容中的SESSION内容。SESSION是管理网络中一次会话的生命周期,从发送请求到响应完毕结束。而活动管理器就是管理Android应用程序一次打开到关闭的生命周期。

lWindow Manager:窗口管理器

Android应用程序的视图界面是显示在一个窗口中,而多个Android应用程序就需要多个窗口。窗口管理器就是来管理所有Android应用程序的窗口的。这有些类似于一个浏览器中可以显示多个页面,每个页面都具有一个Window对象。而用来管理所有页面的Window对象的,就可以理解为窗口管理器。

lContent Providers:内容提供器

内容提供器提供了让一个Android应用程序可以访问另一个Android应用程序的数据内容,或者共享两个Android应用程序的数据内容。例如在微信应用中可以访问到Android系统的相册或联系人等内容,就是通过这部分内容来完成的。

lView System:视图系统

用来构建Android应用程序的界面,其中包括列表、网络、文本框、按钮及嵌入网页页面等。这个部分也俗称为UI内容,是用户接触Android应用程序第一看到或感受到的内容。视图系统多由UI设计者负责,但Android开发人员有时也需要掌握简单的内容。

lPackage Manager:包管理器

包管理器是用于获取Android系统中应用程序的信息,查询Application相关信息(application,activity,receiver,service,provider及相应属性等)、查询已安装应用、增加或删除permission、清除用户数据、缓存,代码段等。

lTelephony Manager:电话管理器

电话管理器可用于访问Android手机上的电话服务信息。Android应用程序可以通过电话管理器来确定电话服务和状态,以及访问用户信息。Android应用程序还可以通过电话管理器来注册一个监听器来接收电话状态变化的通知。

lResource Manager:资源管理器

资源管理器提供了除代码资源的访问内容。例如图片、音频或视频等内容。

lLocation Manager:本地管理器

本地管理器提供了访问Android系统的定位服务(前提是该部Android手机硬件具有GPS定位功能)。这些服务允许Android应用程序获取Android手机的地理位置的定期更新,或触发Android应用程序获取一个特定地理位置的附近。

lNotification Manager:通知管理器

Android系统的智能手机都有一个功能,就是手机系统通知。一般用来显示手机中各个应用的相应提醒内容。例如当有未接电话时,在系统通知中就会显示一个未接电话内容。而通知管理器就可以让第三方软件厂商开发的Android应用程序在状态栏的系统通知中,自定义提示信息。

4.函数库

   由上图可以看出来,Libraries层包含九个部分,下面对这九个组成部分进行了解。

lSurface Manager:管理对显示子系统的访问,并可以对多个应用程序2D和3D图层机提供无缝整合。

lMedia Framework:基于PacketVideo的OpenCORE,这套媒体库支持播放和录制许多流行的音频和视频格式,以及查看静态图片。

lSQLite:提供所有应用程序使用的、功能强大的经良机关系型数据库。

lOpenGL | ES:基于OpenGL ES 1.0 API实现的3D系统,这套3D库既可以使用硬件3D加速,也可以使用高度优化的软件3D加速。

lFreeType:位图和向量字体显示。

lWebkit:一个Web浏览器引擎,该引擎为Android浏览器提供支持,也为WebView提供支持(WebView完全可以嵌入开发人员自己的应用程序中)。

lSGL:底层的2D图形引擎。

lSSL:SSL全称为Secure Sockets Layer,中文为安全套接层,是为网络通信提供安全及数据完整性的一种安全协议。

llibc:一个从BSD系统派生出来的标准C系统库,并且专门为嵌入式Linux设备调整过。

5.Android运行机制

AndroidRuntime分为Android核心库集和Dalvik虚拟机,下面来进行了解一下。

lAndroid核心库集:

提供了Java语言和辛苦可以使用的绝大部分功能,类似于开发Java语言使用的JRE(Java Runtime Environment)。相对来讲,Android核心库集应该叫做Android Runtime Environment(ARE)啦。

lDalvik虚拟机:

Dalvik虚拟机负责运行Android应用程序。每个Android应用程序都是运行在单独的Dalvik虚拟机内(每个Android应用程序对应一个Dalvik进程),Dalvik专门针对同时高效地运行多个虚拟机进行了优化。

Dalvik虚拟机和JVM虚拟机的区别在于:

1)Dalvik虚拟机并未完全遵守JVM规范,两者不兼容。

2)JVM虚拟机运行的是Java字节码(通常是.class文件),而Dalvik虚拟机运行的是专有的dex文件(Dalvik Executable)。

3)Dalvik虚拟机是通过DX工具讲应用程序的所有.class文件编译成 .dex文件后,运行其 .dex文件。

6.Linux内核

   由上图可以看出来,Linux Kernel层包含八个部分,下面对这八个组成部分进行了解。

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

lCamera Driver:常用基于Linux的v4l驱动。

lFlash Memory Driver:是基于MTD的Flash驱动程序。

lBinder(IPC)Driver:Android中一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。

lKeyboard Driver:作为输入设备的键盘驱动。

lWiFi Driver:基于IEEE 802.11标准的驱动程序。

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

lPower Management:管理电池电量等信息。

通过这八个部分我们可以看出,关于Linux 内核主要都是硬件驱动。这也是硬件手机厂商推出Android系统手机必需的步骤。


本文出自 “一直在路上” 博客,请务必保留此出处http://longestory.blog.51cto.com/8549020/1357884

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。