Android平台架构解析

Android是采用层次化系统架构,官方公布的标准架构图如下图:


Android由底往上分为4层:Linux内核层(Linux Kernel),硬件抽象层(HAL),系统运行时库层(Native C/C++ Libraries和Android Runtime),应用程序框架层(Java API Framework),应用程序层(System Apps)

Linux内核层:

Android平台的基础是Linux内核,例如,Android Runtime(ART)依靠Linux内核来执行底层功能,例如线程和底层内存管理

Android内核对Linux内核进行了增强,增加一些面向移动计算的功能,如:共享内存,低内存管理器,轻量级的进程间通信Binder机制等。下面列举一些Android内核的主要驱动模块:

Android电源管理(Power Management):基于linux电源管理系统的,轻量级的电源管理驱动

音频驱动器(Audio Drivers):音频管理驱动

Binder(IPC):binder属于一个驱动,进程间通信的方式之一

Display Drivers:显示驱动,对图形显示提供桥梁

Keypad Drivers:键盘驱动,对用户输入提供平台

Bluetooth Drivers:蓝牙驱动

Share Memory Drivers:为进程之间提供共享内存资源,同时为内核提供回收和管理内存的机制

USB Drivers:USB驱动

WIFI Drivers:wifi驱动

硬件抽象层(HAL):

根据字面的意思:就是对硬件设备的具体实现加以抽象,硬件抽象层的作用是将android的应用框架层与linxu系统内核的设备驱动隔离,使应用程序框架的开发独立于具体的驱动程序,android减少对linux的依赖。HAL提供标准界面,向更高级别的Java API框架显示设备硬件功能,HAL包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,如相机或者蓝牙模块。当框架API要求访问设备硬件时,Android系统将为该硬件加载库模块。

系统运行库层:
原生C/C++库:

WebKit:Web浏览器的软件引擎

OpenMAX AL:应用级的多媒体回放和记录接口,用在移动式嵌入式设备

Libc:继承BSD的C函数库bionic libc,更适合基于嵌入式Linux的移动设备

Media Framework:基于PacketVideoOpenCore的多媒体库,支持多种常用的音频和视频格式的录制和回放,所支持的编码格式包括MPEG4,MP3,H264,AAC,ARM

OpenGL ES:基于OpenGL ES 1.0API标准实现的3D跨平台图形库

运行时

Core Libraries:核心库,提供Android的核心API,如android.os,android.net,android.media等

Dalvik虚拟机:Dalvik虚拟机基于apache的Java虚拟机,并被改进以适应低内存,低处理器速度的移动设备环境。当然从Android4.4开始出现了ART(android time),这是一种用来代替Dalvik的新型环境

应用程序框架层(JAVA API Framework)

丰富,可扩展的试图系统,可用以构建应用的UI,包括列表,网格,文本框,按钮甚至可嵌入的网络浏览器

活动管理器(Activity Manager):管理各个应用程序生命周期,为所有程序的窗口提供交互的接口

窗口管理器(Window Manager):对所有开启的窗口程序进行管理

内容提供器(Content Provider):提供一个应用程序访问另一个应用程序数据的功能,实现应用程序间数据共享

视图系统(View System):创建应用程序的基本组件,列表,网格,文本框,按钮

通知管理器(Notification Manager):应用程序可以在状态栏显示自定义的客户提示信息

包管理器(Package Manager):对应用程序进行管理,提供的功能如安装应用程序,卸载应用程序

资源管理器(Resource Manager):提供非代码资源提供应用程序使用

位置管理器(Location Manager):提供位置服务

电话管理器(Telephony Manager):管理所有的移动设备功能

应用程序层:

Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用),平时开发中最常接触和用到的一定是application层。

以上就是对Android的基本架构分析。

猜你喜欢

转载自blog.csdn.net/qq_33453910/article/details/80763815