最近面试的时候,被问到了对Android系统有什么了解,于是花了一个下午的时间,研究了一下Android的体系结构,下面是我做的一点总结,写的不对的地方还请大神帮忙指正。
如图所示,Android系统架构一共包括四层,从上到下分别是应用程序层、应用框架层、系统运行库层(函数库和Android运行时)和Linux内核层。
1、应用程序层
这是直接面向用户的一层,包含一系列的核心应用程序,如电子邮件、短信、联系人等,也包括开发者自己的应用程序。这些程序通常都是用java编写的。(特殊情况下,也可以调用c/c++:安卓sdk和ndk都是什么?有什么区别)
2、应用框架层
包括了活动管理器、窗口管理器、内容提供者、视图系统、通知管理器、包管理器、电话管理器、资源管理器、位置管理器、XMPP服务十个部分,也就是一个个的功能模块。这些功能模块还是由java编写的。只是其中一些java函数通过jni调用了运行库层的c/c++代码。
3、系统运行库层
分为c/c++函数库和Android运行时(由Android核心库集和虚拟机组成)。
一些核心函数库:系统C库、媒体库、Surface Manage、LibWebCore、SGL、3D libraries、FreeType、SQLite。
4、Linux内核
Android系统建立在Linux2.6之上。Linux内核提供了安全性、内存管理、进程管理、网络协议栈和驱动模型等核心系统服务。同时Linux内核也是系统硬件与软件叠层之间的抽象层(HAL)。
总结
这就是Android四层架构,从架构图中我们可以发现,上层依赖下层或底层提供的各种功能或服务,它们之间相互独立且分工明确,这种分层结构保证了层与层之间的低耦合,当下层的层内或层下发生改变时,上层应用无需任何改变,开发者能专注于应用层的开发。