Android平台架构及特性

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

从架构图来看,Android分为四层,从高级到低级分别是:

应用程序层

Android会同一系列核心应用程序一起打包发布,该应用程序包括客户端,SMS短信程序,日历,地图等等,所有的应用程序都是使用Java语言编写的。

应用程序框架层

开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统,
其中包括:

  • 丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(Lists),网格(Grids),文本框(Text Boxes),按钮(Buttons),甚至可嵌入的web浏览器。
  • 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据
  • 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files)。
  • 通知管理器(Notification Manager)使得应用程序可以在状态栏中显示自定义的提示信息。
  • 活动管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。

函数库

Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。以下是一些核心库:

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

Android运行时(和函数库同一层)

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

Android 5.0以前的Android运行时由Dalvik虚拟机和Android核心库集组成,但由于Dalvik虚拟机采用了一种被成为JIT(just-in-time)的解释器进行动态编译并执行,因此导致Android App运行时比较慢;而ART模式则是在用户安装App时进行预编译(Ahead-of-time,简称AOT)的,将原本在程序运行时的编译动作提前到应用安装时,这样使得程序在运行时可以减少动态编译的开销,从而提升Android App的运行效率。

反过来,由于ART需要在安装App时进行AOT处理,因此ART需要占用更多的存储空间,应用安装和系统启动时会延长不少。

除此之外,ART还支持ARM、x86和MIPS架构,并且能完全兼容64位系统,Android 5.0必然会带来更好的用户体验。

Linex内核

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

转自:《疯狂Android讲义 第三版》

Copyright© 2020-2022 li-xyz 冀ICP备2022001112号-1