Android的四层架构
Linux内核层
Android系统是基于Linux内核的,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。这一层为Android设备的各种硬件提供了底层的驱动,如
显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。
系统运行库层
这一层主要通过C/C++库来给Android提供一些特性支持,如SQLite库提供数据库的支持,OpenGL|ES库提供3D绘图,WebKit提供浏览器内核。这一层还有Android运行时库,其中包含ART运行环境
ART能够把应用程序的字节码转换为机器码,是Android所使用的一种新的虚拟机,改善了性能、垃圾回收(Garbage Collection)、应用程序除错以及性能分析。ART引入了AOT这种预编译技术,在应用程序安装的过程中,ART就已经将所有的字节码重新编译成了机器码。应用程序运行过程中无需进行实时的编译工作,只需要进行直接调用。因此,ART极大的提高了应用程序的运行效率,同时也减少了手机的电量消耗。
主要由类库 Libraries 和Android运行时 Android Runtime 两部分组成:
类库 Libraries 由一系列的二进制动态库构成,大部分来源于优秀的第三方类库,另一部分是系统原生类库,通常使用c/c++语言开发。(因为java代码无法直接调用c/c++驱动代码,所以在这一层,系统通过封装了一系列的函数库供上层使用.)以下列举一些比较重要的类库的功能,以供了解:
- Surface Manager: 负责管理显示与存取操作间的互动,另外也负责将2D绘图与3D绘图进行显示上的合成
- Media Framework: 一个开源的多媒体框架,允许我们创造出更高质量与全新的播放器效果
- SQLite: 安卓自带的数据库,是一个嵌入式的数据库
- OpenGL ES: 是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计。3D效果库
- FreeType: 一个完全免费(开源)的、高质量的且可移植的字体引擎。支持位图、矢量、字体等
- SGL: 2D图形引擎库
- SSL: 位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。是安全数据通信的支持。
- WebKit: 是一个开源的浏览器引擎。
- Libc: c层中最基本的函数库
2.Android运行时 Android Runtime 是由Java核心类库(Core Libraries)和Android虚拟机(Dalvik)共同构成
Java核心类库包括框架层和应用层所用到的基本Java库。
Dalvik是为Android量身打造的Java虚拟机,它与标准Java虚拟机JVM的差别在于Dalvik是基于寄存器设计的,而JVM是基于栈结构设计的;JVM通过解码class文件(java编译生成的的:.java—.class 的class文件)中的内容来运行程序;而Dalvik运行时是由java字节码文件进一步转化而来的文件,,并被打包成一个DEX可执行文件,Dalvik虚拟机通过解释DEX文件来执行这些字节码 ,即android的class 文件实际上只是编译过程中的中间目标文件,需要链接成dex 文件后才能在dalvik 上运行;Dalvik能够更快的编译较大的应用程序,允许在有限的内存空间中同时运行多个虚拟机的实例,每一个Dalvik应用作为一个独立的Linux进程执行,这样可以防止某一虚拟机崩溃时所有的应用都被关闭。
应用框架层
这一层主要提供了构建应用时会用到的一些各种API。
- View System 主要用于UI设计,包括List、Grid、Text、Button、Webview等。
- Activity Manager Service -AMS 负责管理应用程序中的activity的生命周几以及提供activity之间切换功能等 Intent相关。
- Windows Manager Service-WMS 用于管理所有的窗口程序,如Dialog、Toast等。
- Recource Manager 提供非代码资源的管理 如布局文件、图形、字符串资源文件等。
- Location Manager 负责与定位功能相关功能
- Content Providers 提供了一组通用的数据访问接口,可用于应用程序间的内容交互,比如获取手机联系人数据等。
- Notification Manager 用户管理手机状态栏中的自定义信息等。
- Telephony Manager 手机底层功能管理模块,可用于获取手机串号或者调用短信功能
- Pacakage Manager Android系统内的包管理模块,负责管理安装的应用程序。
- XMPP Service 用于主持XMPP协议的服务,比如与Google Talk通信等
应用层
Android安装的所有程序,无论是自带的还是下载的或是自己开发的应用程序都属于这一层。