关于Android系统的基本架构

    作者:课课家教育更新于: 2016-07-26 09:15:30

      作为一名软件研发者,你不可能不知道Android,Android在我们生活中无处不在,最常见的就是手机。那么你知道Android系统的基本架构是怎样的吗?接下来,小编为你一一讲述。

      Android的本质:在标准的Linux系统上增加了java虚拟机Dalvik,并且在Dalvik虚拟机上面搭建了一个JAVA的applicationframework,所有的应用程序都是基于JAVA的applicationframework之上。

      Android主要应用于ARM平台,但不仅限于ARM,我们只要通过编译控制,在X86、MAC等等体系结构的机器上同样也可以运行。如图所示:

    关于Android系统的基本架构_ Android_ JAVA _应用程序_课课家

      Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层、linux核心层。

      蓝色代表的是java程序,黄色的代码为运行Java程序而实现的虚拟机,绿色的部分是C/C++语言编写的程序库,红色的代码内核(linux内核+Driver)。在ApplicationFramework之下,由C/C++的程序库组成,通过JNI完成从Java到C的调用。

      1.应用程序:Applications

      Android所有的应用程序都是使用Java语言编写的,每一个应用程序都是由一个或者多个活动组成的,活动必须以Activity类为超类,活动类似于操作系统上的进程,但是不同的是,活动比操作系统的进程要更加的灵活,与进程类似的是,活动可以在多种状态之间进行切换。

      利用Java跨平台的性质,基于Android框架开发的应用程序可以不用编译运行于任何一台安装有Android系统的平台,这一点正正就是Android的精髓。

      2.应用程序框架:ApplicationFramework

      应用程序的架构设计简化了组件的重用,任何一个应用程序都可以发布它的功能块,并任何其它的应用程序都可以使用其所发布的功能块(不过我们得遵循框架的安全性限制)。帮助程序员快速的开发程序,并且该应用程序重用机制也可以使用户可以更加方便的替换程序组件。

      隐藏在每一个应用后面的是一系列的服务、系统,其中包括:

      ①丰富而又可扩展的视图(Views),视图可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textboxes),按钮(buttons),甚至可嵌入的web浏览器。

      ②内容提供器(ContentProviders),内容提供器使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

      ③资源管理器(ResourceManager),资源管理器提供非代码资源的访问,如本地字符串,图形,和布局文件(layoutfiles)。

      ④通知管理器(NotificationManager),通知管理器使得应用程序可以在状态栏中显示自定义的提示信息。

      ⑤活动管理器(ActivityManager),活动管理器是用来管理应用程序生命周期,并提供常用的导航回退功能。

      3.系统运行库:Libraries

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

      以下是一些核心库:(主要包括基本的C库、以及多媒体库以支持各种多媒体格式、位图和矢量字体、2D和3D图形引擎、浏览器、数据库支持。)

      a)Bionic系统C库。

      b)媒体库,基于PacketVideoOpenCORE。

      c)SurfaceManager顾名思义,用于管理Surface。

      d)Webkit,LibWebCore浏览器,基于Webkit引擎。

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

      f)3Dlibraries基于OpenGLES1.0APIs实现。

      g)FreeType位图(bitmap)和矢量(vector)字体显示。

      h)SQLite一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

      另外这里还有一个硬件抽象层。其实Android并不是所有的设备驱动都放在Linux内核里面,有一部分是实现在用户空间,这样做的主要原因是可以避开Linux所遵循的GPL协议。一般情况下,如果要将Android移植到其他硬件去运行,只需要实现这部分代码即可。包括:显示器驱动,声音,相机,GPS,GSM等等。

      ②Android运行库:Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

      每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。

      Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。

      Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。

      同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的"dx"工具转化成.dex格式由虚拟机执行。

      Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。

      4.Linux内核:Linuxkernel

      Android的核心系统服务依赖于Linux2.6内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。

      Linux内核也同时作为硬件和软件栈之间的抽象层。其外还对其做了部分修改,主要涉及两部分修改:

      ①Binder(IPC):提供有效的进程间通信,虽然linux内核本身已经提供了这些功能,但式Android系统很多的服务都需要用到这个功能,为了某种原因,其实现了自己的一套。

      ②电源管理:为了手持设备节省能耗。

      最后我们再来谈谈Android所采用的语言,它应用开发采用Java语言,我们所说的Java一般包含以下三个部分:

      ①java语言:即其语法,其写代码的程式。

      ②java虚拟机:为了实现可以一次编译到处可以运行的原则,Java在编译连接以后并没有产生目标机器语言,而是采用了Javabytecode这种Java共用指令,这时就需要一个虚拟机来执行改指令。

      ③库:跟我们常用的C语言一样提供一些常用的库。

      后面两者结合就是JavaRuntimeEnvironment。

      小编结语:

      相信你看到这里,都已经熟悉了Android系统的基本架构了吧。Android系统的基本架构包含了应用程序层、应用程序框架层、系统运行库层、linux核心层这四层。小编认为,熟悉了基本架构,能够更好的学习Android。

      课课家会一直更新软件研发的文章,请继续关注我们的网站:课课家教育。谢谢!

课课家教育

未登录