Andriod系统架构

12年前
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)