Android平台架构及特性
Android平台架构及特性
Android系统的底层是建⽴在Linux系统之上,改平台由操作系统、中间件、⽤户界⾯和应⽤软件四层组成,它采⽤⼀种被称为软件叠层(Software Stack)的⽅式进⾏构建。
好处:这种软件叠层结构使得层与层互相分离,明确各层的分⼯,这种分⼯保证了层与层之间的低耦合,当下层内或者层下发⽣改变时,上层应⽤程序⽆需任何改变。
下图显⽰Android系统的体系结构:
1.应⽤程序层(Application)
Android平台不仅仅是操作系统,也包含了许多应⽤程序,诸如SMS短信客户端程序、电话拨号程序、图⽚浏览器、Web浏览器等应⽤程序。这些应⽤程序都是⽤Java语⾔编写的,并且这些应⽤程序都是可以被开发⼈员开发的其他应⽤程序所替换,这点不同于其他⼿机操作系统固化在系统内部的系统软件,更加灵活和个性化。我们编写的主要是这⼀层上的应⽤程序。
2.应⽤程序架构层(Application Framework)
应⽤程序框架层是我们从事Android开发的基础,很多核⼼应⽤程序也是通过这⼀层来实现其核⼼功能的,该层简化了组件的重⽤,开发⼈员可以直接使⽤其提供的组件来进⾏快速的应⽤程序开发,也可以通过继承⽽实现个性化的拓展。Android应⽤程序框架提供了⼤量的API供开发者使⽤。
a) Activity Manager(活动管理器)
管理各个应⽤程序⽣命周期以及通常的导航回退功能
b) Window Manager(窗⼝管理器)
管理所有的窗⼝程序
c) Content Provider(内容提供器)
使得不同应⽤程序之间存取或者分享数据
d) View System(视图系统)
构建应⽤程序的基本组件
e) Notification Manager(通告管理器)
使得应⽤程序可以在状态栏中显⽰⾃定义的提⽰信息
f) Package Manager(包管理器)
Android系统内的程序管理
g)Telephony Manager(电话管理器)
管理所有的移动设备功能
h)Resource Manager(资源管理器)
提供应⽤程序使⽤的各种⾮代码资源,如本地化字符串、图⽚、布局⽂件、颜⾊⽂件等
i)Location Manager(位置管理器)
提供位置服务
j)XMPP Service(XMPP服务)
提供Google Talk服务
3.系统运⾏库层:
1)函数库(Libraries)
函数是应⽤程序框架的⽀撑,是连接应⽤程序框架层与Linux内核层的重要纽带。⼀般来说,Android应⽤开发者不能直接调⽤这套C/C++库集,但可以通过上⾯的应⽤程序框架来调⽤这些库。
下⾯列出⼀些核⼼库:
a)系统C库( Libc):
从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制。
b)Surface Manager:
执⾏多个应⽤程序时候,负责管理显⽰与存取操作间的互动,另外也负责2D绘图与3D绘图进⾏显⽰合成.
c) SGL
底层的2D图形渲染引擎
d) SSL
在Andorid上通信过程中实现握⼿
android 应用开发 e) Media Framework
多媒体库,基于PacketVideo OpenCore;⽀持多种常⽤的⾳频、视频格式录制和回放,编码格式包
括MPEG4、MP3、H.264、AAC、ARM。
f) WebKit:
⼀套⽹页浏览器的软件引擎
g) OpenGL|ES:
根据OpenGL ES 1.0API标准实现的3D绘图函数库
h) SQLite:
⼩型的关系型数据库引擎
2)Android运⾏时(Android Runtime):
Android应⽤程序时采⽤Java语⾔编写,程序在Android运⾏时中执⾏,其运⾏时分为核⼼库和Dalvik虚拟机两部分。
@ 核⼼库
核⼼库提供了Java语⾔API中的⼤多数功能,同时也包含了Android的⼀些核⼼API,如android.os、android、dia等等。
@ Dalvik虚拟机
Dalvik虚拟机⾮常适合在移动终端上使⽤,相对于在PC或者服务器上运⾏的虚拟机⽽⾔,Dalvik虚拟
机不需要很快的CPU计算速度和⼤量的内存空间,它主要有以下两个特点:
(1)运⾏专有的.dex⽂件。
专有的.dex⽂件减少了.class⽂件中的冗余信息,⽽且会把.class⽂件整合到⼀个⽂件中,从⽽提⾼了运⾏性能;⽽且DX⼯具还会对.dex⽂件进⾏⼀些性能上的优化。
(2)基于寄存器实现.
⼤多数虚拟机包括JVM都是基于栈的,⽽Dalvik虚拟机则是基于寄存器的。⼀般来说基于寄存器的虚拟机具有更好的性能表现,但在硬件通⽤性上略差。
JVM和Dalvik的区别:由于Android应⽤程序的编写语⾔是java,因此有⼈会把它们搞混。但实际上Dalvik并未遵守JVM规范,两者也不兼容。
JVM运⾏的是java字节码(通常就是.class⽂件),但Dalvik运⾏的是其专有的dex(Dalvik Executable)⽂件。
JVM直接从.class⽂件或者JAR包中加载字节码后运⾏;⽽Dalvik则⽆法直接从.class⽂件或者JAR包中加载字节码,他需要将应⽤程序的所有的.class⽂件编译成.dex⽂件,Dalvik则运⾏该.dex⽂件。
2.Linux内核(Linux kernel)
Android系统建⽴在Linux2.6之上,Linux内核提供了安全性、内存管理、进程管理、⽹络协议栈和驱动模型等核⼼系统业务,除此之外,Linux内核也是系统硬件和软件叠层之间的抽象层。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论