概要
Android是基于Linux的开放式操作系统,该操作系统一共分4层,分别是:Linux内核层,库与运行环境层,应用程序框架层,应用程序层,如下图所示:
Android Linux内核
操作系统的最底层是Linux内核,包含了一系列的硬件底层驱动,电源管理。
Android库
Android 包含一套C/C++库, 被用于Android 系统中的各种组件中. 这些功能通过Android 应用框架展现给开发人员. 下面列出一些核心库:
-
- System C library - 实现了BSD-derived 的标准C系统库(libc), 用于嵌入式的基于Linux的设备,启动引导等。
-
- Media Libraries - 基于PacketVideo的 OpenCORE; 该库提供了对许多流行的音频和视频格式的播放回放和录制功能, 同样包括静态图片文件, 包括MPEG4, H.264, MP3, AAC, AMR, JPG, 和 PNG 等
-
- Surface Manager - 用于管理不同应用对图形显示子系统和2D和3D图形层的访问
-
- LibWebCore - 一个时尚的web浏览器引擎, 为Android浏览器和内嵌的web view提供实现
-
- SGL - 隐藏的2D图形引擎
-
- 3D libraries - 基于OpenGL ES 1.0 APIs实现的库; 该库用于3D图形加速或提供高优化的3D软件光栅器
-
- FreeType - 位图和向量模式的字体绘制
-
- SQLite - 一个强大的, 轻量的关系型数据库引擎, 用于所有的应用
Android 运行环境
Android的所有应用程序采用Java语言编写,应用程序运行在虚拟机里。但Android并不是采用Java虚拟机,而是优化了的Dalvik虚拟机。
Android包含一组核心库, 提供了Java语言核心库内的大部分功能.
每一个Android应用运行在自己的进程里, 用该应用自己的Dalvik 虚拟机实例. Dalvik 可以让一个设备高效的运行很多个VM. Dalvik 虚拟机执行Dalvik Executable (.dex)格式的文件, 该格式的文件经过优化 占用很小的内存. 该虚拟机是基于存储器的, 运行经过Java语言编译器的类, 这些类通过"dx"工具被转换成.dex格式.
Dalvik 虚拟机依赖Linux kernel 来实现一些潜在功能, 例如线程和底层内存管理.
开发人员可以跟那些核心应用一样, 拥有访问框架APIs的全部权限. 应用的系结构设计简化了各组件之间的重用;任何应用都可以分发自己的组件, 任何应用也可以使用这些分发的组件(应用的使用方法需遵循框架的安全性约束)。这个机制对用户来说同样适用, 他们也可以替换组件.
隐藏在每个应用后面的是一套服务和系统, 其中包括:
-
- 一套表现丰富,扩展性很强的View, 通过这些View您可以创建包括list, grid, 文本框, 按钮, 甚至一个嵌入浏览器的应用
-
- Content Providers, 通过它可以在某个应用内访问其他应用的数据(例如通讯录), 或者共享自己的数据
-
- Resource Manager, 提供对静态资源的访问能力, 例如国际化文本和layout文件
-
- Notification Manager, 通过该机制, 所有的应用都可以在状态栏显示自己的提醒信息
-
- Activity Manager, 用于管理应用的生命周期, 并且提供了通用的向后导航功能
应用程序
Android的应用程序全部采用Java语言编写。操作系统会附带一些核心的应用程序, 包括一个email客户端, 短信程序, 日历, 地图, 浏览器, 通讯录等等. 所有的应用程序都是由Java语言完成的.