Android平台架构

来源:互联网 发布:济宁seo 编辑:程序博客网 时间:2024/06/04 18:03

Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件四层组成,它采用一种被称为软件叠层(software stack)的方式进行构建。这种软件叠层结构使得之间相互分离,明确各层的分工。这种分工保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用程序无需任何改变。

Android系统主要由五部分组成,下面分别对这5部分进行介绍:

1.应用程序层

Android系统将会包含系列的核心应用程序,这些程序包括电子邮件客户端、SMS程序、日历、地图、浏览器、联系人等、这些应用程序都是用JAVA编写的。

2.应用程序框架

    当我们开发Andorid应用程序时,就是面向底层的应用程序框架进行的。从这个意义上看,Android系统上的应用程序时完全平等的,不管是Andorid系统提供的程序,还是普通开发者提供的程序,他们都可以访问Andorid提供的API框架。

     Android应用程序框架提供了大量API供开发者使用。应用程序框架可作为应用程序开发的基础之外,也是软件复用的重要手段,任何一个应用程序都可发布它的功能模块----只要发布时遵守了框架的约定,那么其他应用程序也可使用这个功能模块。

3.函数库

     Andorid包含一套被不同组件所使用的C/C+库的集合。一般来说,Android应用开发者不能直接调用这套C/C库集合。一般来说,Android应用开发者不能直接调用这套C/C+库集,但可以通过它上面的应用程序框架来调用这些库。

下面列出一些核心库:

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

2) 媒体库:基于PacketVideo的OpenCORE,这套媒体库支持播放和录制许多流行的音频和视频格式,以及查看静态图片。主要包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等多媒体格式。

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

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

5)SGL:底层的2D图形引擎。

6)3D libraries:基于OpenGL ES 1.0 API 实习的3D系统,这套3D库既可以使用硬件3D加速(如果硬件系统支持),也可以使用高度优化的、软件3D加速。

7)FreeType:位图和向量字体显示。

8)SQLite:供所有应用程序使用的、功能强大的轻量级关系数据库。

4.Android运行时

Android运行时由两部分组成:Android核心库集和Dalvik虚拟机。其中核心库提供了Java语言核心库所能使用的绝大部分功能,而虚拟机则负责运行Android应用程序。

每个Andorid应用程序都运行在单独的一个Dalvik虚拟机内,因此Dalvik专门针对同时高效地运行多个虚拟机进行了优化,因此Andorid系统可以方便地实现对应用程序进行隔离。

实际上,JVM虚拟机运行的是Java字节码(通常是.class文件),但Dalvik运行的是其专有的dex(Dalvik Executable)文件。JVM直接从.class文件或JAR包中加载字节码然后运行;而Dalvik则无法直接从.class文件或JAR包中加载字节码,它需要对DX工具将应用程序的所有.class文件编译成.dex文件,Dalvik则运行该.dex文件。

Dalvik虚拟机非常适合在移动终端上使用,相对于在PC或服务器上运行的虚拟机而言,Dalvik虚拟机不需要很快的CPU计算速度和大量的内存空间,它主要有如下两个特点:

1)运行专有的.dex文件。专有的.dex文件减少了.class文件中冗余信息,而且会把所有.class文件整合到一个文件中,从而提高运行性能;而且DX工具还会对所有文件进行一些性能的优化;

2)基于存储器实现。大多数虚拟机包括JVM都是基于栈的,而Dalvik虚拟机则是基于寄存器的。一般来说,基于寄存器的虚拟机具有更好的性能表现,但在硬件通用性上略差。

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

5.Lniux内核

Android系统建立在Linux 2.6之上,Linux内核提供了安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务。除此之外,Linux内核也是系统硬件和软件叠层之间的抽象层。

0 0
原创粉丝点击