Android是Google于2007年11月05日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成。它采用软件堆层(SoftwareStack,亦称软件叠层)的构架,主要分为三部份。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机VirtualMachine,由C++开发。最下层是各类应用软件,包括通话程序,邮件程序等,应用软件则由各公司自行开发,以Java作为编撰程序的一部份。
Android一词的本义指“机器人”,最初的Android主要支持手机,后来经过开发改良,逐步扩充到平板笔记本及其他一些领域上,是首个为联通终端构建的真正的开放和完整的联通软件。
系统构架:
Android的系统构架和其操作系统一样红旗linux,采用了分层的构架。Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
一、应用程序
Android会同一系列核心应用程序包一起发布,该应用程序包包括顾客端,SMS短消息程序,月历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编撰的。
二、应用程序框架
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的构架设计简化了组件的重用;任何一个应用程序都可以发布它的功能块而且任何其它的应用程序都可以使用其所发布的功能块(不过得遵守框架的安全性)。同样,该应用程序重用机制也使用户可以便捷的替换程序组件。
三、系统运行库
Android包含一些C/C++库,这种库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。
四、Linux内核层
Android内核是基于Linux内核的更改的内核版本,它提供了用于支持Android平台的设备驱动。
系统结构:
一、系统内核
Android是运行于Linuxkernel之上,但并不是GNU/Linux。由于在通常GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic代替Glibc、以Skia代替Cairo、再以opencore代替FFmpeg等等。Android为了达到商业应用android操作系统发展史,必须移除被GNUGPL授权证所约束的部分,比如Android将驱动程序移到Userspace,致使Linuxdriver与Linuxkernel彻底分开。Bionic/Libc/Kernel/并非标准的Kernelheaderfiles。Android的Kernelheader是借助工具由LinuxKernelheader所形成的,这样做是为了保留常数、数据结构与宏。
二、硬件抽像层
Android的HAL(硬件抽像层)是能以封闭源码方式提供硬件驱动模块。HAL的目的是为了把Androidframework与Linuxkernel隔开,让Android不至过度依赖Linuxkernel,以达成Kernelindependent的概念,也让Androidframework的开发能在不深究驱动程序实现的前提下进行发展。
三、中介软件
操作系统与应用程序的沟通桥梁,应用分为两层:函数层(Library)和虚拟机(VirtualMachine)。Bionic是Android改良libc的版本。Android同时包含了Webkit,所谓的Webkit就是AppleSafari浏览器背后的引擎。Surfaceflinger是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的BionicLibc。
Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideoMultimediaFramework(PVMF)、OperatingSystemCompatibilityLibrary(OSCL)、Common、OpenMAX。
Android使用skia为核心图形引擎,搭配OpenGL/ES。skia与LinuxCairo功能相当,但相较于LinuxCairo,skia功能还只是雏型的。2005年Skia公司被Google竞购,2007年初,SkiaGL源码被公开,Skia也是GoogleChrome的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类(Column)取得共用数据库。
Android的中间层多以Java实现,但是采用特殊的Dalvik虚拟机(DalvikVirtualMachine)。Dalvik虚拟机是一种“暂存器型态”(RegisterBased)的Java虚拟机,变量皆储存于暂存器中,虚拟机的指令相对降低。
Dalvik虚拟机可以有多个实例(Instance),每位Android应用程序都用一个自属的Dalvik虚拟机来运行,让系统在运行程序时可达到优化。Dalvik虚拟机并非运行Java字节码(Bytecode),而是运行一种称为.dex格式的文件。
四、安全权限机制
Android本身是一个权限分立的操作系统。在这类操作系统中,每位应用都以惟一的一个系统辨识身分运行(Linux用户ID与群组ID)。系统的各部份也分别使用各自独立的辨识方法。Linux就是这样将应用与应用android操作系统发展史,应用与系统隔离开。
应用组件:
Android开发四大组件分别是:
一、活动(Activity):用于表现功能。
二、服务(Service):后台运行服务,不提供界面呈现。
三、广播接收器(BroadcastReceiver):用于接收广播。
四、内容提供商(ContentProvider):支持在多个应用中储存和读取数据,相当于数据库。
Android操作系统的优点:
一、开源
Android不像其他的操作系统那样封闭。它是开源的,容许第三方更改。所谓的“开源”是用于描述这些源码可以被公众使用的软件,但是此软件的使用、修改和发行也不受限制。Android操作系统的开源意味着开放的平台容许任何联通端的厂商加入到Android联盟中来。同时专业人士也可以借助其开放的源代码进行二次开发,构建出个性化的Android。
二、给用户的自由度高
Android操作系统给与了用户跟高的自由度,熟悉Android的都清楚:用户可以按照自己的喜好来设置手机界面,Android的应用市场甚至上还有各色各样的启动器来供用户自己选择,让自己的手机与众不同。
三、选择多元化
因为Android的开放性,诸多的厂商为了取悦大众会推出层出不穷的新产品。迄今为止linux软件工程师培训,以Android为操作系统的型号已然达到了几十上百种。并且这种功能、机型上的差别不会影响到数据的同步、软件的兼容等等。这样便给了消费者更多地购机选择。