开篇 Android系统的体系结构

1、APPLICATIONS (应用程序层)

2、APPLICATION FRAMEWORK(应用程序框架)  android应用程序提供了大量应用程序供开发者使用,当我看开发android应用程序时就是面向底层的框架进行的。

3、LIBRARIES(函数库)  android包含一套被不同组件所使用的C/C++的集合,android应用开发者可以通过上面的应用程序框架来调用这些库。

  • 系统C库:    一个从BSD系统派生出来的标准C系统库(libc),并专门为嵌入式Linux设备调整过。
  • 媒体库:基于PacketVideoOpenCORE,这套媒体库支持播放和录制许多流行的音频和视频格式,以及查看静态图片。主要包括MPEG4H.264MP3AACAMRJPGPNG等多媒体格式。
  • Surface Manager:管理对显示子系统的访问,并可以对多个应用程序的2D和3D图层机提供无缝整合。
  • L.ibWebCore:一个全新的Web浏览器引擎,该引擎为Android浏览器提供支持,也为WebView提供支持,WebView完全可以嵌入开发着自己的应用程序中。
  • SGL:底层的2D图形引擎。
  • 3D libraries:基于OpenGL ES 1.0 API实现的3D系统,这套3D库既可使用硬件3D加速(如硬件系统支持),也可使用高度优化的软件3D加速。
  • Free Type:位图和向量字体显示。
  • SQLite:供所有应用程序使用的、功能强大的轻量级关系数据库。

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

  • Dalvik虚拟机对Android应用程序的管理:每个Android应用程序都运行在单独的Dalvik虚拟机内(即每个Android应用程序对应一个Davlik进程),Dalvik专门针对同时高效的运行多个虚拟机进行了优化,因此Android系统以方便的实现对应用程序进行隔离。
  • Dalvik和JVM的区别:由于Android应用程序的编程语言是Java,因此有些人会把Dalvik虚拟机和JNM搞混,但实际上二者存在差别:Dalvik并未遵守JVM规范,两者也不兼容。实际上,JVM虚拟机运行的是Java字节码(通常就是.class文件),但Dalvik运行的是器专有的dex(Dalvik Executable)文件。JVM直接从.class文件或JAR包中加载字节码然后运行;而Dalvik则无法从.class文件或JAR包中加载字节码,它需要通过DX工具将应用程序的所有.class文件编译成.dex文件,Dalvik运行该.dex文件。
  • Dalvik的优点:Dalvik虚拟机非常适合在移动终端上使用,相对于PC或服务器上运行的虚拟机而言,Dalvik虚拟机不需要很快的CPU计算速度和大量的内存,它主要有如下两个特点。
  1. 运行专有的.dex文件。专有的.dex文件减少了.class文件中的冗余信息,而且会把所有.class文件整合到一个文件中,从而提高运行性能;而且DX工具还会对.dex文件进行一些性能的优化。
  2. 基于寄存器实现。大多数虚拟机(包括JVM)都是基于栈的,而Dalvik虚拟机则是基于寄存器的。一般来说,基于寄存器的虚拟机具有更好的性能表现,但在硬件通用性上略差。

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

 

posted @ 2013-07-24 19:48  TealerProg  Views(311)  Comments(0Edit  收藏  举报