Android系统叫一共分为五层:应用程序层(Application)、应用程序框架层(Application Framework)、系统运行库层(Libraries和Android Runtime)和linux内核层(linux kernel)。
目录
1.应用程序层
所有的应用程序都是由java或者kotlin语言来编写的,通过调用应用程序框架层所提供的api来完成。当然也可以通过使用java或者kotlin调研jni的方式,配合android ndk来开发原生的应用程序,这样可以提高应用程序的效率,但是难度也将增大,需要熟悉c/c++语言。
2.应用程序框架层
应用程序框架层为开发人员提高了可以完全访问核心应用程序所使用的api框架。
名称 | 功能描述 |
活动管理器(Activity Manager) | 管理应用程序生命周期并提供常用导航回退功能 |
窗口管理器(window manager) | 管理所有开启的窗口程序 |
内容提供者(content provider) | 使应用程序可以访问另一个应用程序的数据,或者共享他们自己的数据 |
视图系统(view system) | 可以用来构建应用程序,它包括列表,网格,文本框,按钮等, |
通知管理器(notification manager) | 使应用程序可以在状态栏显示自定义提示信息 |
包管理器(package manager) | 管理所有安装在android系统的应用程序 |
资源管理器(resource manager) | 提供各种资源供应用程序使用 |
硬件服务(hardware service) | 电话、地图、蓝牙、wifi、usb、传感器等 |
3.系统运行库层
系统运行库层包括程序库和android运行库。
1.程序库
android包括一些C/C++库,能被android系统的不同组件使用,它们通过应用程序框架为开发者提供服务。
名称 | 功能描述 |
---|---|
surface manager | 对显示子系统进行管理,并且为多个应用程序提供2d和3d图层的融合 |
media framework | 基于packetVideo OpenCore,该库自持多种格式的音频和视频的回放和录制,同时支持静态图像 |
sqlite | 轻型关系数据库引擎 |
opengl es | 硬件3D加速或者高度优化的3D软加速 |
SGL | 底层的2D图像引擎,android使用skia作为其核心图像引擎 |
FreeType | 位图和矢量字体显示 |
webkit | 最新的web浏览器引擎 |
SSL | 安全通信相关技术处理 |
Libe | android没有采用glibc作为C库,而是采用了google自己开发的Bionic libc。它从BSD继承标准C系统函数库,是专门为基于嵌入式Linux设备定制的 |
2.android运行时库
分为核心库和Dalvik虚拟机两部分。核心库提供了java语言的大多数功能,Dalvik虚拟机是为了能同时高效运行多个VMs而实现的。Dalvik虚拟机执行.dex的可执行文件,该格式针对最小内存做了优化。Dalvik虚拟机是基于寄存器的,所有的类经由Java汇编器编译,然后通过sdk的dx工具转化成.dex格式由虚拟机执行。
4.linux内核层
Android依赖于linux2.6版内核提供的核心系统服务如内存管理,进程管理,驱动模块。内核存在于软件栈层和硬件层之间,Android对内核的硬件时钟、内存分配与共享、低内存管理器、kernel调试、日志设备、IPC机制、电源管理进行了增强。