Android 的系统架构
Android的系统架构
要深入学习Android,首先要学习Android的系统架构,Android的系统架构和其操作系统一样,采用了分层的架构,层次非常清晰,因此要掌握他的架构并不难,下图为android
的系统架构图:接下来将从上到下解读这图:
一.应用程序层(Applications)
Android会与核心应用程序抱一起发布,该应用程序包包括上图中的主屏(Home),联系人(Contacts),电话(Phone)及Browser(浏览器)等,所有应用程序都是用Java语言编写的,通过调用应用程序框架层(ApplicationFramework)所提供的API来完成相应功能,当然,也可以使用Java通过JNI的方式,配合Android NDK(native development kit(本地开发包))来开发原生的应用程序,这样可以提高应用程序效率,但难度也大大增加,------你需要精通C和C++等语言,并且对Android Ndk所提供的为数不多的功能有很深的认识,因为Android NDK提供的功能不是太多,为了避免做了很久之后才发现-----原来NDK不支持某项功能,综上要根据自己的需求来选择是否采用NDK方式来开发原生应用程序。一般的通过调用应用程序框架API完成功能的应用程序属于非原生应用程序,开发较容易(应用程序框架层提供的API功能齐全)。
二.应用程序框架层
应用程序框架层为应用程序开发人员提供了可以完全访问核心应用程序所使用的API框架,这种应用程序的架构设计简化了组建的重用,任何一个应用程序都可以发布自己的功能模块(在遵循框架的安全性限制的前提下)。同样,该应用程序重用机制也使用户可以方便的替换程序组件,下表列出应用程序框架层每一个模块为我们提供的组件
应用框架层提供的组件及其功能描述
名称 | 功能描述 |
活动管理器 Activity Manager | 管理应用程序生命周期并提供常用的导航回退功能,比如:开启应用程序需要的资源和退出应用程序时需要释放资源 。 |
窗口管理器 Window Manager | 管理所有开启的窗口 |
内容提供者 Content Providers | 使应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享他们自己的数据。 |
视图系统 View System | 可以用来构建应用程序,它包括列表,网格,文本框,按钮,图形绘制以及可嵌入的web浏览器 |
通知管理器 Notification Manager | 使应用程序可以在状态栏中显示自定义的提示信息 |
包管理器 Package Manager | 管理所有安装在Android系统中的应用程序,比如:应用程序信息查看和卸载应用程序等。 |
资源管理器 Resource Manager | 提供各种资源供应用程序使用,比如:字符串资源,图像资源,音频资源等。 |
硬件服务 Hardware Service | Telephone Manager 电话拨打和接听等相关功能 Location Manager 管理定位服务的相关功能 Bluetooth Service 有关蓝牙服务的相关功能 WIFI Service WIFI 服务相关功能 USB Service USB服务相关功能 Sensor Service 传感器服务相关功能 |
三 。系统 运行库层
系统运行库层包括程序库和android 运行库两部分,
(1)程序库
Android包含一些C/C++库,这些库能被Android系统中不同组件使用,它们通过应用程序框架为开发者提供服务,下表是对这些库(非核心库)的功能介绍:
名称 | 功能描述 |
Surface Manager | 对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的无缝融合 |
Media Framework | 基于Packet Vidio OpenCORE ,该库支持多种格式的音频和视频的回访和录制,同时支持静态图像文件,编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG. |
SQLite | 对于所有应用程序可用,功能强大的轻型关系数据库引擎 |
OpenGL ES | 支持OpenGl ES1.x和OpenGl ES 2.0 ,该库可以使用硬件3D加速或者使用高度优化的3D软加速 |
SGL | 底层的2D图形引擎,Android使用skia作为其核心的图形引擎 |
FreeType | 位图(bitmap)和矢量(vector)字体显示 |
Webkit | 最新的web浏览器引擎,支持Android浏览器和一个可嵌入的web视图 |
SSL | 安全通信相关技术处理,为网络通信提供安全及数据完整性的一种安全协议 |
Libc | Android 并没有采用glibc作为c库,而是采用了Google自己开发的Bionic Libc 。它从BSD继承了标准的C系统函数库,是专门为基于嵌入式linux设备定制的。 |
(2).Android运行时库
从Android 系统架构图中 ,可以看到Android运行时库又分为核心库和Dalvik虚拟机两部分,核心库提供了Java语言核心库的大多数功能,这里主要通过JNI的方式向应用程序框架层提供调用底层程序库的接口,Dalvik虚拟机是为了能同时高效地运行多个VMS而实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式的文件针对最小内存使用做了优化,Dalvik虚拟机是基于寄存器的,所有的类都经由java汇编器编译,然后通过SDK中的dx工具转化成.dex格式并由虚拟机执行。Dalvik虚拟机以来Linux的一些功能,比如线程机制和底层的内存管理机制。每一个Andoid 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例。这里先简单介绍Dalvik虚拟机,后面会详细分析。
三.Linux 内核层
Android依赖于linux2.6版本内核提供核心的系统服务,例如安全,内存管理,进程管理,网络栈,驱动模块等。内核作为一个抽象层,存在于软件站层和硬件层之间,Android对内核进行了增强,主要表现在以下几个方面:
硬件时钟(Alarm)
内存分配与共享(Ashmem)
低内存管理器(Low Memory Killer)
Kernel调试
日志设备(Logger)
Android IPC机制
电源管理(Power Management)
到这里,Android系统架构的分析就告一段落了,你现在至少明白整个Android系统的架构和每个模块的功能,以后的博文都会按这个架构进行分析,细化。
下一篇 Android 启动过程
更多相关文章
- android完全退出应用程序
- Android 应用程序请求Vsync
- Android 时间同步功能 NTP NITZ
- Android 开发框架
- 打包Android应用程序
- Android 图表开源框架之MPAndroidChart LineChart折线图(六)实现翻
- android 仿微信聊天界面,以及语音录制功能