想必大家接触Android的时候最早接触的图就是下面这张吧,它是Android整个架构图,虽然Android 系统已经发展到Android M,并且Android N 也快发布,但是整个架构还是不变的。

  • Linux内核 Android核心系统服务依赖于Linux内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。Linux内核也是作为硬件与软件栈的抽象层。驱动:显示驱动、摄像头驱动、键盘驱动、WiFi驱动、Audio驱动、flash内存驱动、Binder(IPC)驱动、电源管理等。
  • 系统库和Android运行时

系统库包括九个子系统,分别是图层管理、媒体库、SQLite、OpenGL ES、FreeType、WebKit、SGL、SSL和libc。
Android运行时包括核心库和Dalvik虚拟机,前者既兼容了大多数Java语言所需要调用的功能函数,又包括了Android的核心库,比如android.os、android.net、android.media等等。
后者是一种基于寄存器的java虚拟机,Dalvik虚拟机主要是完成对生命周期的管理、堆栈的管理、线程的管理、安全和异常的管理以及垃圾回收等重要功能。

系统库:

libc            C语言标准库
Surface Menager 主要管理多个应用程序同时执行时,各个程序之间的显示与存储
Media Framework 系统多媒体库
SQLite 关系型数据库
OpenGL ES 3D效果支持
FreeType 位图及矢量库
WebKit Web 浏览器引擎
SGL 2D图形引擎
SSL 位于TCP/IP与各种应用层协议之间,为数据通信提供支持
  • 应用程序框架层

该层是Android应用开发的基础,开发人员大部分情况是在和它打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和XMPP服务十个部分。在Android平台上,开发人员可以完全访问核心应用程序所使用的API框架。并且,任何一个应用程序都可以发布自身的功能模块,而其他应用程序则可以使用这些已发布的功能模块。基于这样的重用机制,用户就可以方便地替换平台本身的各种应用程序组件。

Activity Manager 活动管理器用于管理应用程序生命周期
View System 视图管理器,用来构建应用程序如列表,表格,文本框,按钮等
Window Manager窗口管理者
Content Provider 内容提供者
Notification Manager 通知管理者,用来设置在状态栏中显示的提示信息
Package Manager 包管理者,用来对Android系统内的应用程序进行管理
Telephony Manager 电话管理者,用来对联系人及通话记录等信息进行管理
Resource Manager 资源管理者,用来提供非代码资源的访问
Location Manager 位置管理者,用来提供使用者的当前位置等信息
XMPP Service Service服务
  • 应用程序层

该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。

对于Android系统架构推荐如下两篇博客:
http://developer.51cto.com/art/201001/180207.htm
http://mobile.51cto.com/android-235496.htm

Delvik虚拟机以及ART

这篇博客将会在以后的时间添加这一部分,先占个坑!

Contents
  1. 1. Delvik虚拟机以及ART