Android系统的整体架构,下图是Android的一个完整系统架构图。
如上如所示,Android的总体架构主要分为五个部分(也就是五层),由底层到高层依次为:内核(Linux Kernel),函数库(Libraries),Android运行机制(Android Runtime),应用层框架(Application Framework),应用层(Application)。下面简单的介绍一下每一层中所包含的内容:
内核层(Linux Kernel):内核主要基于在Linux 2.6的内核,适用于手机操作系统。从上图中可以看出该层主要包括:
Display Driver:常用基于Linux的帧缓冲(Frame Buffer)驱动。
Camera Driver:常用基于Linux的v4l驱动。
Flash Memory Driver:是基于MTD的Flash驱动程序。
Binder(IPC)Driver:Android中一个特殊的驱动程序,具有单独的设备节点,提供进程间通信的功能。
Keyboard Driver:作为输入设备的键盘驱动。
WiFi Driver:基于IEEE 802.11标准的驱动程序。
Audio Driver:常用基于ALSA(Advanced Linux Sound Architecture,高级Linux声音体系)的驱动。
Power Management:管理电池电量等信息。
函数库(Libraries):主要使一些C/C++函数库的集合,提供了音频,图片,三维图形,数据库,浏览器等一些重要的底层库供开发者使用。其中主要包括:
Suface Manager:管理对显示子系统的访问,并可以对多个应用程序2D和3D图层机提供无缝整合。
Media Framework:基于PacketVideo的OpenCORE,这套媒体库支持播放和录制许多流行的音频和视频格式,以及查看静态图片。
SQLite:一个基于文件的轻量级数据库,主要用来搭建小型的关系型数据库,支持SQL查询语句。
OpenGL|ES:基于OpenGL ES 1.0 API实现的3D系统,这套3D库既可以使用硬件3D加速,也可以使用高度优化的软件3D加速。
WebKit:一个Web的浏览器引擎,为Andorid浏览器提供支持,也可以为WebView提供支持(WebView可以完全嵌入开发人员自己的程序中去)。
SGL:底层的2D图形引擎
SSL(Secure Socket Layer):安全套接层,为网络通信提供数据完整性的一种安全协议。
libc:一个从BSD系统派生出来的标准C系统库,并且专门为嵌入式Linux设备调整过。
Android运行机制:其中主要包含了Android核心库的集合以及Dalvik虚拟机。
Core Libraries:该核心库主要提供了Android的运行环境,类似于JRE(Java Runtime Environment)。
Dalvik Virtual Machine:Dalvik虚拟机主要负责运行Android应用程序,每个Android应用程序都是运行在单独的Dalvik虚拟机内(每个Android应用程序对应一个Dalvik进程),Dalvik专门针对同时高效地运行多个虚拟机进行了优化。Dalvik虚拟机和JVM虚拟机的区别在于:
1、Dalvik虚拟机并未完全遵守JVM规范,两者不兼容。
2、JVM虚拟机运行的是Java字节码(通常是.class文件),而Dalvik虚拟机运行的是专有的dex文件(Dalvik Executable)。
3、Dalvik虚拟机是通过DX工具讲应用程序的所有.class文件编译成 .dex文件后,运行其 .dex文件。
Application Framework:应用程序框架提供了很多的API接口供开发人员使用,这套API是Android App开发的一个基础。第三方的应用程序和系统自带的应用程序都是通过这套API进行进行开发。从上图中可以看出,这部分主要有以下几个关键的内容:
Activity Manager(活动管理器):活动管理器是用来管理Android应用程序的生命周期的。Android应用程序的生命周期是指该应用从被启动到关闭的整个过程。对于有JAVA WEB开发经验的朋友来讲,活动管理器类似于JAVA WEB内容中的SESSION内容。SESSION是管理网络中一次会话的生命周期,从发送请求到响应完毕结束。而活动管理器就是管理Android应用程序一次打开到关闭的生命周期。
Window Manager(窗口管理器):Android应用程序的视图界面是显示在一个窗口中,而多个Android应用程序就需要多个窗口。窗口管理器就是来管理所有Android应用程序的窗口的。这有些类似于一个浏览器中可以显示多个页面,每个页面都具有一个Window对象。而用来管理所有页面的Window对象的,就可以理解为窗口管理器。
Content Providers(内容提供器):内容提供器提供了让一个Android应用程序可以访问另一个Android应用程序的数据内容,或者共享两个Android应用程序的数据内容。例如在微信应用中可以访问到Android系统的相册或联系人等内容,就是通过这部分内容来完成的。
View System(视图系统):用来构建Android应用程序的界面,其中包括列表、网络、文本框、按钮及嵌入网页页面等。这个部分也俗称为UI内容,是用户接触Android应用程序第一看到或感受到的内容。视图系统多由UI设计者负责,但Android开发人员有时也需要掌握简单的内容。
Package Manager(包管理器):包管理器是用于获取Android系统中应用程序的信息,查询Application相关信息(application,activity,receiver,service,provider及相应属性等)、查询已安装应用、增加或删除permission、清除用户数据、缓存,代码段等。
Telephony Manager(电话管理器):电话管理器可用于访问Android手机上的电话信息服务。Android应用程序可以通过电话管理器来确定电话服务和状态,以及访问用户信息。Android应用程序还可以通过电话管理器来注册一个监听来接收电话状态变化的通知。
Resource Manager(资源管理器):资源管理器提供了除代码资源的访问内容。例如图片、音频或视频等内容。
Location Manager(本地管理器):本地管理器提供了访问Android系统的定位服务(前提是该部Android手机硬件具有GPS定位功能)。这些服务允许Android应用程序获取Android手机的地理位置的定期更新,或触发Android应用程序获取一个特定地理位置的附近。
Notification Manager(通知管理器):Android系统的智能手机都有一个功能,就是手机系统通知。一般用来显示手机中各个应用的相应提醒内容。例如当有未接电话时,在系统通知中就会显示一个未接电话内容。而通知管理器就可以让第三方软件厂商开发的Android应用程序在状态栏的系统通知中,自定义提示信息。
Application:应用程序主要是提供给Android使用者的App。目前的这些App主要有两类,其中一类就是应用程序,一般是用来完成某些需求的,比如墨迹天气,微信等一系列的应用程序。第二个主要的类别就是游戏产业,想其中比较经典的切水果,愤怒的小鸟等手机端游戏。
Android开发工具以:
目前的Android开发中,主要的开发工具是Ecplice和Android Studio。其中Ecplice也是Java的一个开发环境,而Android Studio就是Google官方推出的一个开发工具。