基于Linux的Android,OS,平台应用浅析

时间:2023-04-18 13:40:08 手机站 来源:网友投稿

摘要 Android是由Google开发的基于Linux平台的开源手机操作系统。Android操作系统和其它操作系统一样,采用了分层的架构。

关键词 Android系统架构;虚拟机;Linux

中图分类号TN929文献标识码A文章编号 1674-6708(2011)42-0207-02

1 Android系统架构简介

Android作为软件平台标准,形成完整的系统须有硬件的运算能力支持才行。Android软件平台包含Java Application、Application Framework、Libraries、Runtime与Linux OS等层。每一层内含多个独立组件完成不同功能,Android在各组件与层之间订出标准界面。不同应用产品可以依功能需要加入软件或硬件组件整合成不同产品,Android系统就如同积木堆栈一样存放不同的软件或硬件组件来实现不同的应用产品。

1.1Android系统架构各层特点

应用程序(Applications):依据使用者的期望而将Android框架里的组件及Library组件组合而成的高阶服务。

应用框架( Application Framework):结合Applications与Libraries的幕后主架构。

Android Runtime:Dalvik虚拟机执行.dex类型的可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的 "dx" 工具转化成.dex格式由虚拟机执行。

Libraries:Android已提供了一些C++链接库。例如,SQLite数据库系统、OpenGL 3D绘图系统、媒体库、LibWebCore等。

Linux核心:Android依赖Linux 来提供核心的服务,例如内存管理、进程(Process)管理、线程(Thread)管理、网络(Network)协议栈、驱动(Driver)模型等。

对于软件开发者的着力点在于:链接库层(*.SO)。基于*.SO往下衔接到Driver和硬件组件,以*.SO来提升硬件的价值。基于*.SO往上衔接到Google支持的Java抽象类别和界面,再衔接到成千上万的应用层Java子类别,享受*.SO + 硬件组件无限复制的商机。基于上述的分析,Android平台的开发要点是:开发*.SO发挥自身硬件产品的特色;然后嵌入于Android框架层。

1.2Android系统的特点与其他系统的对比

在智能手机软硬件供应链上之前属于单纯的垂直产业链,手机上关键软硬件,如操作系统、中介软件、人机接口的软件组成、核心SoC与平台设计等关键技术,大多被国外大厂掌握。由Google提供的Android软件平台采取开放源码,不同软件层的厂商都可以清楚地看到其与其它层接口,就其专精部分深入开发,其研发成果可以再挂回Android平台作功能展示。不同硬件或是模块厂商通过定义清楚的标准接口直接对Android软件进行开发,然后对开发的产品再以模块的方式整合在Android系统中,创造差异化嵌入式产品。由于Android的开源性,移动装置软硬件供应链将产生进一步的垂直分工。

1.3 Android虚拟机(Dalvik)与APK

一个Dalvik虚拟机实例里只有一个Android应用在运行,并且每一个虚拟机实例都是一个独立的进程空间。虚拟机依赖底层操作系统实现线程机制,内存分配和管理,Mutex等。所有Android应用的线程都对应一个Linux线程,因而虚拟机可以更多的依赖操作系统的线程调度和管理机制。

不同的进程空间里运行不同的应用程序,并且不同来源的应用都使用不同的Linux用户来运行,由此可以最大程度的保护应用的安全和独立运行。Zygote是一个虚拟机进程,也是一个虚拟机实例的孵化器,系统要求执行一个Android应用程序时,Zygote就会调度一个子进程来执行应用程序。

Zygote进程是在系统启动时产生的,该进程会完成虚拟机的初始化,库的加载,预置类库的加载和初始化等操作,当Android系统需要一个新的虚拟机实例时。Zygote通过复制自身,最快速的提供一个虚拟机实例。而且对于一些只读的系统库,所有得虚拟机实例都和Zygote共享一块内存区域,节省了内存开销。

APK(应用程序包)被发布到手机上后在运行前会对其中的DEX文件进行优化,优化后的文件被保存到缓存区域(优化后的格式被称为DEY),虚拟机直接执行DEY文件。如果应用包文件没有发生改变,DEY文件不会被重新产生。Android应用程序开发用Java语言,编译时和Java SE一样使用Sun 的JDK将Java源程序编译成标准的.class文件。而后通过DX工具软件把字节码文件转成DEX文件。

最后使用Android打包工具(aapt)将DEX文件、资源文件以及AndroidManifest.xml组合成一个应用程序包(APK)便可以发布到手机上运行。

2 应用程序运行机制

Windows和Linux桌面操作系统中多个应用程序可以同时运行在不同的窗口中,但是只有一个应用程序能处于当前活动的状态,其他的应用程序都处于一个平等的位置,但是Android操作系统的应用程序采用不是这种方式;在Android中每次只有一个应用程序运行在最前面,除了状态栏的位置,当前应用程序将铺满整个屏幕。用户最常见的应用程序就是应用的主页(Home application),用户可以在主页激活其他Android应用程序。

用户在Android运行一个应用程序时将把该程序放到最前端,从这个应用程序中用户可以启动别的应用。而这些程序和屏幕都被活动管理(Android Activity Manager)记录在应用程序堆栈(application stack)中,在任何时候可以使用后退按钮返回到前一个屏幕,这与Windows、Linux那些标准的桌面操作系统是不同的。

3 Android系统的应用实例

1)Android系统目前主要应用在智能手机系统,如Nexus One手机采用Android2.1系统、Moto 的Droid手机采用了Android1.5到Android2.2的最新系统、HTC手机;还有国内的许多智能手机也采用了该系统,如:Ophone、Gphone等;

2)Android 有潜力在很多不同的硬件平台上打破常规,如:导航设备,Android 2.0 平台上最新的免费 Google Maps 功能手机便可以直接进入导航程序。jkOnTheRun 曾对这一功能进行过证明的评测,并预测这将给 Android 的 GPS 开辟了新领地。对数字娱乐设备提供智能体验,如MIPS 有自己的 Android 接口,能和数字娱乐领域的其它玩家写作开源项目,对此 EETimes 也有报道。MIPS 已经展示了家庭多媒体地播放器等设备上的 Android 方案。

4结论

不要盲目的以为Android系统只能应用在智能手机平台上,同样的在其他非手机领域Android系统也有许多突破性的应用,如导航设备、电子书平台、数字娱乐设备等。相信不久的未来Android系统将会有个很好的发展不仅在智能手机平台。

参考文献

[1]高煥堂.Android应用框架原理与程序设计[M],2009.

[2]韩超,梁泉.Android 系统原理及开发要点详解[M].电子工业出版社,2010(1).

[3]周毅敏,陈榕.Dalvik 虚拟机进程模型分析[J].计算机技术与发展,2010(2).

[4]崔烨.基于 L inux 平台的智能手机软件设计与实现[D].电子科技大学计算机科学与工程学院,2007.

推荐访问:浅析 平台 Linux Android OS

版权声明 :以上文章中选用的图片文字均来源于网络或用户投稿 ,如果有侵权请立即联系我们 , 我们立即删除 。