由底层到外层分别为:
linux内核=>java运行环境及本地框架(又名系统运行库)=>框架层(FrameWork)=>应用程序(Application)
底层为linux内核:该层实现了IPC进程间通讯:linux本身已实现此功能,android再次重新实现了一套符合需求的通讯方式;电源管理:为手持设备省电 等。
系统运行库:
包括一些c/c++库
媒体库(基于PacketVideo OpenCORE)
Surface Manager (用于管理Surface)
Webkit,LibWebCore 浏览器,基于Webkit引擎。
SGL 底层的2D图形引擎
3D libraries (基于OpenGL ES 1.0 APIs实现)
FreeType 位图(bitmap)和矢量(vector)字体显示
SQLite (轻量级的关系型数据库)
另外这里还有一个硬件抽象层。其实Android并非所有的设备驱动都放在linux内核里面,有一部分实现在用户空间,
这么做的主要原因是可以避开Linux所遵循的GPL协议,一般情况下如果要将Android移植到其他硬件去运行,
只需要实现这部分代码即可。包括:显示器驱动,声音,相机,GPS,GSM等等。
android运行库:
Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个 Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。
Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。
同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的 "dx" 工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
框架层:
提供各种Manager,视图等 如:
a.丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。
b.内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
c.资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件(layout files)。
d.通知管理器(Notification Manager)使得应用程序可以在状态栏中显示自定义的提示信息。
e.活动管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。
应用程序:
拥有大量开发者的与用户直接交互的层,属于android开发最外层。