认识Android的系统架构

Android 系统架构由 5 部分组成,分别是:Linux Kernel、Android Runtime、Libraries、Application Framework、Applications。Android 的系统架构采用分层架构的思想,架构清晰,层次分明,协同工作。Android 的系统架构不仅从宏观上认识了 Android 系统,同时,也给我们的学习与实践指明了方向。

Android负责人Dan Morrill:
** “Android并不是传统的Linux风格的一个规范或分发版本,也不是一些列可重用的组件集成,Android是一个用于连接设备的软件块。”**


Paste_Image.png

从上面那张图我们就可以简单的看出Android系统架构的组成部分以及其简单的运作方式,下面给出Android系统架构的详细架构图:

android系统架构图.jpg

蓝色的代表java程序,黄色的代码为运行JAVA程序而实现的虚拟机,绿色部分为C/C++语言编写的程序库,红色的代码内核(linux内核+drvier)。

1、Linux内核(Linux Kernel)

Android 的核心系统服务依赖于 Linux 2.6 内核 ,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层,隐藏底层硬件细节为上层提供统一服务。其外还对其做了部分修改,主要涉及两部分修改:
1)Binder (IPC):提供有效的进程间通信,虽然linux内核本身已经提供了这些功能,但Android系统很多服务都需要用到该功能,为了某种原因其实现了自己的一套。
2)电源管理:主要是为了省电,毕竟是手持设备嘛,低耗电才是我们的追求。
如果你只是做应用开发,就不需要深入了解Linux Kernel层。

2、Android运行时(Android Runtime)

Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己的进程中。

Dalvik虚拟机是Google专为Android开发的,比SunJava虚拟机的效率更高,功能也更为复杂,以更好的支撑Android平台,并拥有独立的版权。每一个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例, Dalvik虚拟机执行.dex的可执行文件,该格式文件针对小内存的使用进行了优化,同时虚拟机是基于寄存器实现的,所有的类由Java编译器编译,然后通过SDK中的相应工具转化成.dex格式,最后由虚拟机执行。dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。

与大多虚拟机(jvm)不同的是,Dalvik是基于寄存器的,而不是基于栈的。这使得Dalvik支持的机器指令更大(基于栈的需要更多指令)。dx是一套工具,可以将.class文件转化为.dex,通常为多对一关系。由于dex进行最佳化,文件大小增加1-4倍,以ODEX结尾。需要提出的是Dalvik虚拟机依赖于Linux内核提供基本功能(线程、底层内存管理)。

3.运行库(Libraries)

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

  • Bionic系统 C 库:一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。
  • MediaFramework:基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。
  • Surface Manager:对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。这部分代码
  • Webkit,LibWebCore: 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。鼎鼎大名的 Apple Safari背后的引擎就是Webkit
  • SGL:底层的2D图形引擎
  • 3D libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。
  • FreeType:位图(bitmap)和矢量(vector)字体显示。
  • SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
    还有部分上面没有显示出来的就是硬件抽象层。

4.Android应用程序框架(Application Framework)

Application Framework也许是大部分开发者接触的最多的部分了,因为Android应用的开发都是通过框架与Android底层进行交互来实现的。 应用开发层是Android提供给开发者一个框架开发平台,开发者在遵循框架原则的基础上,对框架进行扩展从而开发出各式各样的app应用。

应用程序的体系结构简化了组件的重用,使得开发者开发也更加的灵活。

  • 视图(View) ——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按 钮,甚至是内嵌的网页浏览器。
  • 内容提供者(Content Providers) ——使应 用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据。
  • 资源管理器(Resource Manager) ——提供访问非代码资源,如本地化字符串、图形和布局文件。
  • 通知管理器(Notification Manager ) ——使所有的应用程序能够在状态栏显示自 定义警告。
  • 活动管理器(Activity Manager ) ——管理应用程序生命周期,提供通用的导 航回退功能。

5.Android应用程序和小部件(Applications)

Android系统发布时,会同一系列核心应用程序和常用程序一起发布,如常用的手机功能程序,包括语音电话、通讯录、短信收发、照相、话机设置等;数据应用程序,包括邮件工具,日程表,浏览器,地图导航等,以及Android Market上的各种应用程序,所有的应用程序都是使用Java语言编写。

总结

Android的系统架构不仅从宏观上认识了Android系统,同时,也给我们的学习与实践指明了方向。若是从事Android应用开发,那应该研究 Android的应用框架层和应用程序层;若是从事Android系统开发,那应该研究Android的系统库和Android运行时;若是从事 Android驱动开发,那应该研究Android的Linux内核。总之,找准切入点,实践出真知。

你可能感兴趣的:(认识Android的系统架构)