认识Android的系统架构

2016-11-12  本文已影响0人  人间入画

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 应用程序框架为开发者提供服务。以下是一些核心库:

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

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

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

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

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

总结

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

上一篇 下一篇

猜你喜欢

热点阅读