图为Andorid官方给出的整个Android系统的框架图
Andorid的系统源代码数量非常庞大,这些代码主要分为4层,从低到高为Linux内核层、系统库层、应用程序框架层和应用程序层,分别由驱动工程师、系统工程师、框架工程师和应用程序工程师
1、Linux内核层(图中的Linux Kernel)
Linux内核层为Andorid框架层提供了非常核心的支持,比如Camera驱动(Camara Driver)、USB驱动(USB Driver)、WIFI驱动(WIFI Driver)还有Andorid系统自己实现的一些驱动,比如非常重要的进程间通信Binder驱动(Binder(IPC) Driver),Linux内核层就好比房子的地基一样,只有地基稳固房子才会稳固。Linux内核层稳定高效,上层就会运行的更流畅、更稳定、更高效。
2、系统库层(Libraries 和 Android Runtime)
Libraries 主要包括:
SQLite库、Webkit库、OpenGL库。
SQLite库支持数据库,Webkit库支持浏览器,OpenGL库支持3D图像
Android RunTime 包括:
JAVA核心库(Core Libraries )和 虚拟机(Dalvik Virtual Machine)
Android系统4.4以前是Dalvik虚拟机,4.4以后采用ART虚拟机,提高了应用程序启动时间、运行速度、电量消耗更少。
3、应用程序框架层(Application Framework)
它主要实现Android系统的核心服务和提供API来开发应用程序。
这一层可以分为很多模块
- ActivityManager:管理Android四大组件和进程内存
- WindowManger:管理Android窗口
- PackageManager:包管理服务,主要是apk的安装和权限分配
- PowerManager:电源管理
- MultMedia:多媒体
- View System:UI的绘制和UI事件的分发
- ·······
4、应用程序层
包含系统应用和第三方应用
系统应用包含设置、相机、等
第三方应用包含QQ、微信、等
作为一个Android工程师,不管你是负责框架开发还是应用程序开发或者kernel开发,你都可能涉及不是自己这一层,所以有必要理解Android多层,因为只有理解了Android多层之后,你才会对Android系统有个整体的把握。