1.1.2 Android平台体系架构
Android平台体系架构如图1-1所示,从下到上依次分为Linux内核层(Linux Kernel)、硬件抽象层(Hardware Abstraction Layer(HAL))、系统运行库层(Native C/C++ Libraries和Android Runtime)、Java API框架层(Java API Framework)和系统应用层(System Apps)。
图1-1 Android平台体系架构
1. Linux内核层
Android系统运行于Linux内核之上,Linux内核层主要包括电源管理和各种启动模块,如显示驱动、键盘驱动、摄像头驱动、Wi-Fi驱动及USB驱动等。
2. 硬件抽象层
硬件抽象层包含多个库模块,为Java API提供标准的设备硬件功能支持。开发人员通过框架API访问设备硬件时,Android系统为硬件加载相应的库模块。
3. 系统运行库层
系统运行库层包含了一系列原生C/C++库,它们通过Android应用框架API为开发者提供各种服务。例如,Webkit库提供浏览器支持,OpenGL ES库提供2D/3D绘画支持,等等。
该层还包含了两个Android运行时库:核心库(Core Libraries)和Android运行时(Android Runtime,ART)。核心库允许开发人员使用Java开发Android应用。运行Android 5.0(API级别21)及更高版本的设备,每个应用运行在自己的进程中,拥有自己的ART实例。ART的主要功能包括预先和即时编译、优化的垃圾回收以及更好的调试支持等。
在Android 5.0之前,Android运行时为Dalvik虚拟机。Dalvik虚拟机是为移动设备定制的,针对手机内存、CPU性能有限等特点做了专门的优化。不管是ART还是Dalvik虚拟机,Android应用都被编译为DEX文件来执行。DEX文件是专门为Android设计的字节码文件,占用内存更少,运行更快。
4. Java API框架层
Java API框架层通过API提供Android系统的全部功能,主要功能如下。
• 内容提供程序:为应用提供数据。
• 视图系统:提供应用UI设计支持,包括文本框、按钮、列表、可嵌入的网络浏览器等。
• 资源管理器:提供非代码资源管理功能,如字符串、图片和布局文件等。
• 通知管理器:为应用提供自定义状态栏通知功能支持。
• Activity管理器:用于管理应用中活动的生命周期,提供导航返回栈。
5. 系统应用层
系统应用层包含了Android系统自带的一套核心应用,包括电子邮件、短信、日历、联系人等。系统自带应用可以为开发者提供功能支持,例如,调用系统自带的短信应用,可在第三方应用中实现短信发送功能。