Andriod系统架构
Andriod框架分层:(从高到低)
应用程序层(Applications)、应用程序框架层(Application Framework)、系统程序库层(Libraries)、Android运行库( Android Runtime )、Linux内核层(Linux Kernel)
(一)应用程序层:包括(SMS/MMS短消息通讯、日历、地图、浏览器、联系人管理程序等)的应用程序,使用Java通过应用层序框架提供的API完成,或者通过Java的JNI方式配合Android NDK开发的原生应用程序。
(二)应用程序框架层:提供可以完全访问核心应用程序所使用的API框架,该应用程序架构简化了组件的重用。
提供的组件及其功能:
(1)活动管理器(Activity Manager):管理应用程序生命周期并提供常用的导航回退功能。
(2)窗口管理器(Window Manager):管理所有开启的窗口程序。
(3)内容提供器(Content Providers):使应用程序可以访问另一个应用数据或者共享自己数据。
(4)视图系统(View System):可以用来构建应用程序,包括列表(list)、网格(grid)、按钮(button)、文本框(text)、嵌入式浏览器(webView)等。
(5)通知管理器(Notification Manager):使应用程序可以在状态栏中显示自定义的提示信息。
(6)包管理器(Package Manager):管理所安装在Android系统的应用程序。
(7)资源管理器(Resource Manager):提供各种资源供应用程序使用。
(8)硬件服务(Hard Service):Telephony Manager(电话拨号收听等)、Location Manager(管理地图服务)、Blutooth Sefvice(蓝牙服务)、WIFI Service(WIFI服务)、USB Service(Use服务)、Sensor Service(传感器服务)
(三)系统程序库 :Android包含一些C/C++库,被Android不同组件使用。
(1)Surface Manager:对显示子系统进行管理,并提供2D和3D图层无缝融合。
(2)Media Framework:基于PacketVideo OpenCORE,支持多种格式音视频回放录制和静态图片。
(3)SQLite:轻量级关系型数据库引擎。
(4)Opengl ES:可使用硬件3D加速或者高度优化的3D软加速。
(5)SGL:底层的2D图形引擎。
(6)FreeType:位图(bitmap)和矢量(vrctor)字体显示。
(7)Webkit:最新Web浏览器引擎,支持Android浏览器和一个内嵌的Web视图。
(8)SSL:安全通信相关技术处理,为网络通信提供安全及数据完整性的一种安全协议。
(9)Libc:Android没有使用glibc为C库,Google自己开发的Bionic Libc,从BSD继承标准C系统函数库,专门为基于嵌入式Linux设备定制。
(四)Android运行时库:又分为核心库和Dalvik虚拟机两部分。
核心库提供了Java语言核心库的大多数功能,主要通过JNI方式向应用程序框架提供调用底层程序库接口。
Dalvik虚拟机为了能同时高效的运行多个VMs而实现的,执行.dex文件。每个Android应用程序都在自己进程中运行,拥有一个独立的Dalvik虚拟机实例。
(五)Linux内核层:Android依赖Linux2.6内核提供的核心系统服务:安全、内存管理、进程管理、网络栈、驱动模块等,内核作为一个抽象层,存在于软件栈层和硬件层之间。
Android对内核增强表现方面:
(1)硬件时钟(Alarm)
(2)内存分配和共享(Ashmem)
(3)低内存管理器(Low Memory Killer)
(4)Kernel调试(Kernel debugger)
(5)日志设备(Logger)
(6)Android IPC机制(IBinder)
(7)电源管理(Power Managerment)