应用程序
是用java语言开发的,开发人员一般位于这一层。
应用程序框架
- 视图
包括列表,按钮,网格,文本框等 - 内容提供器
使得一个应用程序可以访问另一个应用程序的数据 - 通知管理器
使得应用程序可以在通知栏中显示自定义信息 - 资源管理器
用于访问非代码资源,如本地字符串,图形,布局文件 - 活动管理器
用来管理应用程序的生命周期和导航栏的回退功能
系统运行库
- Bonic系统C库,专门为嵌入式linux定制的系统c库
- 媒体库,支持多种常用的是音频视频
- Surface Manager: 对于显示子系统的管理
- Webkit,LibWebCore: web浏览器引擎
- SGL:底层的2D图形引擎
- 3D libraries: 3D的硬件加速
- FreeType: 位图和矢量图字体显示
- SQLite: 轻量级的数据库引擎
Android的运行时环境
每个Android 应用都是运行在自己的进程当中,都拥有一个Dalvik虚拟机实例,Dalvik被设计成一个设备可以运行多个虚拟机系统,Dalvik运行dex的可以执行文件,该文件对于小内存进行了优化,同时虚拟机是基于内存器的,所有的类都经过java编译器编译,然后通过SDK中的dx工具转换为可执行的dex文件
硬件抽象层
并不是所有的驱动都在linux内核里面,有些驱动是在userspace的空间上, 这是由于linux遵守GPL协议,在linux内核中为这些驱动开辟了后门程序,一般情况下,将android移植到其他硬件,只需要移植这些后门程序即可。
Linux内核
Linux内核同时作为硬件和软件之间的抽象层,主要做了两部分的修改:
- binder:提供了自己的进程间通信的手段
- 电源管理。