概述
- Android基于Linux Kernel,但不是Linux,是Linux的一个变种;
- Android系统框架整体分为五层:Linux内核层,硬件抽象层,系统运行库层,应用程序框架层和应用程序层;
分层
Linux Kernel
- Android依赖于Linux 2.6版内核提供的核心系统服务,例如安全,内存管理,进程管理,网络栈,驱动模块等;
- Android对内核进行了增强
- 硬件时钟(Alarm)
- 内存分配与共享(Ashmeme)
- 低内存管理器(Low Memory Killer)
- Kernel调试(Kernel Debugger)
- 日志设备(Logger)
- Android IPC机制(Binder)
- 电源管理(Power Management)
HAL
Native Libraries & Android Runtime
- 系统运行库层包括程序库和Android运行时两部分;
- 程序库
- 包含一些C/C++库,可以被Android系统中的不同组件使用,通过应用程序框架为开发者提供服务;
- Surface Manager:对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的无缝融合;
- Media Framework:基于PacketVideo OpenCORE,该库支持多种格式的音频和视频的回放和录制,同时支持静态图像文件,包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG;
- SQLite:功能强劲的轻型关系型数据库引擎;
- Opengl ES:支持OpenGL ES1.x和OpenGL ES2.0,该库可以使用硬件3D加速或者使用高度优化的3D软加速
- SGL:底层的2D图形引擎,Android使用skia作为其核心的图形引擎;
- FreeType:位图(bitmap)和矢量(vector)字体显示;
- Webkit:Web浏览器引擎;
- SSL:安全通信相关技术处理,为网络通信提供安全及数据完整性的一种安全协议;
- Libc:Android并没有使用标准的glibc作为C库,而是采用了Google自己开发的Bionic Libc,专门为基于嵌入式Linux设备定制的;
- Android运行时
- Android运行时又包括核心库和虚拟机两部分;核心库提供了Java语言核心库的大多数功能,主要通过JNI向应用程序框架提供调用底层程序库的接口;虚拟机为应用程序的运行环境;
Java API Framework
- 应用程序框架层提供了可以完全访问核心应用程序锁使用的API框架;
- Activity Manager:管理应用程序生命周期并提供常用的导航回退功能;
- Window Manager:管理所有开启的窗口程序;
- Content Providers:使应用可以访问另一个应用程序的数据;
- View System:视图系统;
- Notification Manager:使应用程序可以在状态栏中显示自定义的提示信息;
- Package Manager:管理所有安装在Android系统中的应用程序;
- Resource Manager:提供各种资源供应用程序使用;
- 硬件服务
- Telephony Manager:电话拨打和接口等相关功能;
- Location Manager:管理地图服务的相关功能;
- Blutooth Service:蓝牙服务的相关功能;
- WIFI Service:WIFI服务的相关功能;
- USB Service:USB服务的相关功能;
- Sensor Service:传感器服务的相关功能;
Applications
- Android系统会包含一些系统App;
- 用户可以安装第三方App;
Linux
- Linux优势
- 强大的内存管理和进程管理;
- 基于权限的安全模式
- 支持共享库;
- 经过认证的驱动模型;
- Linux是开源项目;