Android体系结构
- 体系架构解析
- Linux系统层(Linux kernel)
- 类库(Libraries) 和Android 运行环境(Runtime)
- 应用程序框架(Application Framework)
- 应用程序(Applications)
体系架构解析
Android体系结构如图。从下往上分别是Linux系统层,Android库和运行环境,应用程序框架层和应用程序层。
Linux系统层(Linux kernel)
Android底层是Linux系统,是基于kernel内核的。Android对操作系统内的使用主要是核心和驱动程序两部分。随着Android不断地升级,Linux版本也在缓慢提升。而对于驱动,他的主要作用就是跟硬件交互,常见的主要有:
- 显示驱动(Display Driver):主要是用于提供显示的驱动接口。
- 照相机驱动(Camera Driver):常用基于Linux的v4l(Video for )驱动。
- 蓝牙驱动(Bluetooth Driver)
- Flash内存驱动(Flash Memory Driver)
- Binder IPC驱动: Binder Driver是Android Framework IPC机制的核心,主要是提供进程间通讯的功能。
- USB驱动(USB Driver):USB接口的驱动,包括传输数据,充电等。
- 键盘驱动(KeyBoard Driver)
- WiFi驱动(Camera Driver):基于IEEE 802.11标准的驱动程序。
- Power Management(能源管理)。
类库(Libraries) 和Android 运行环境(Runtime)
本层主要提供安卓常用的类库和Android的运行环境。类库主要是以C实现的。
常见的类库有:
- OpenGL ES:三维绘图引擎。
- SGL:二维绘图引擎。
- Media Framework:多媒体框架,是Android多媒体的核心部分,基于PacketVideo(即PV)的OpenCORE,分为音频,视频的回放(PlayBack)和记录(Recorder)。
- SQLite:数据库,安卓下一种通用的嵌入式数据库。
- WebKit:浏览器的内核。
- FreeType:矢量字体和位图。
- SSL:安全协议(Secure Socket Layer),它位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。
- libc:C语言标准库。
- Surface Manager:界面显示管理器。
在Android中,他的库程序一般以中间件的形式提供。
而Android运行环境主要指的虚拟机技术——Dalvik。DVM是基于寄存器的,它没有基于栈的虚拟机在拷贝数据而使用的大量的出入栈指令,同时指令更紧凑更简洁。但是由于显示指定了操作数,所以基于寄存器的指令会比基于栈的指令要大。
DVM和JVM的区别。
在Jdk中,每一个.class文件都会有一个Header,这个Header主要是记录这个文件的打包版本(jdk版本,与运行环境版本匹配)。而在Android中,这么做是比较浪费空间的,所以,DVM会重新编译一个dex文件。另外在dex文件中,采用了字符串池,方法池,这里通过索引去搜索。
应用程序框架(Application Framework)
应用框架层主要是为程序开发者 提供API,所以作为基础的Android开发者,最常见的就是该层的API。
应用程序框架层提供的常见的API有:
- Activity Manager: 活动管理器。为系统中所有运行的Activity提供了接口,比如进程信息,任务信息,服务信息等。
- Package Manager: 管理应用程序包,通过它就可以获取应用程序信息。
应用程序(Applications)
应用程序层就是我们开发的应用,比如打电话,天气等等。一般通过Java编写,因为技术的发展,现在有很多实现方式。