当前位置:文档之家› android与ios对比分析

android与ios对比分析

Android与ios对比分析(武汉科技大学计算机科学与技术学院,湖北武汉)摘要:本文主要对比分析Android和ios两种主要用于移动通讯设备上的操作系统的区别。

本文着重介绍了Android和ios的系统架构,并对两者进行了对比。

同时也介绍了两种操作系统对于开发者和用户的体验上的区别。

最后对两种的市场占有做了对比和预测。

关键词:android,ios,系统架构,对比分析1. 引言自iPhone在07年初次登台将智能手机直接带向移动互联时代后,一方面智能手机普及率直线上升,另一方面整个市场目前呈现了iPhone与Android手机两强争霸的局面。

iOS是由苹果公司开发的手持设备操作系统。

最初是设计给iPhone使用的,后来陆续套用到iPod touch、iPad以及Apple TV 等苹果产品上。

它也是以Darwin为基础的,因此同样属于类Unix 的商业操作系统。

Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。

Android操作系统最初由Andy Rubin开发,最初主要支持手机。

2005年由Google收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

至目前为止,android跃居全球最受欢迎的智能手机平台。

在便携式设备领域,ios和android分别的优势和劣势也日益明显。

2. Android与IOS系统架构对比2.1 Android系统架构Android系统架构为四层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层,见图2.1分别介绍如下:图2.11)应用程序层Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序。

这些应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换,这点不同于其他手机操作系统固化在系统内部的系统软件,更加灵活和个性化。

2)应用程序框架层应用程序框架层是我们从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。

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)系统运行库层从图中可以看出,系统运行库层可以分成两部分,分别是系统库和Android运行时,分别介绍如下:a)系统库系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。

其主要分为如下几个:Surface Manager:执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。

Media Framework:多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。

SQLite:小型的关系型数据库引擎OpenGL|ES:根据OpenGL ES 1.0API标准实现的3D绘图函数库FreeType:提供点阵字与向量字的描绘与显示WebKit:一套网页浏览器的软件引擎SGL:底层的2D图形渲染引擎SSL:在Andorid上通信过程中实现握手Libc:从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制b)Android运行时Android应用程序时采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。

核心库:核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如android.os、、android.media 等等。

Dalvik虚拟机:Android程序不同于J2me程序,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一个Dalivik虚拟机的实例,并在该实例中执行。

Dalvik虚拟机是一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化以及支持多个虚拟机的特点。

需要注意的是,Android程序在虚拟机中执行的并非编译后的字节码,而是通过转换工具dx将Java字节码转成dex格式的中间码。

4)Linux内核层Android是基于Linux2.6内核,其核心系统服务如安全性、内存管理、进程管理、网路协议以及驱动模型都依赖于Linux内核。

2.2 IOS系统架构ios的系统架构分为四个层次:核心操作系统层(core OS layer)、核心服务层(Core Service layer)、媒体层(Media layer)和可触摸层(Cocoa Touch layer),见图2.2.图2.21. Core OS:是用FreeBSD和Mach所改写的Darwin, 是开源、符合POSIX标准的一个Unix核心。

这一层包含或者说是提供了整个iPhone OS的一些基础功能,比如:硬件驱动, 内存管理,程序管理,线程管理(POSIX),文件系统,网络(BSD Socket),以及标准输入输出等等,所有这些功能都会通过C语言的API来提供。

另外,值得一题的是,这一层最具有UNIX色彩,如果你需要把UNIX上所开发的程序移植到iPhone上,多半都会使用到Core OS 的API.核心OS层的驱动也提供了硬件和系统框架之间的接口。

然而,由于安全的考虑,只有有限的系统框架类能访问内核和驱动。

2. Core Services:Core Services在Core OS基础上提供了更为丰富的功能,它包含了Foundation.Framework和Core Foundation.Framework, 之所以叫Foundation ,就是因为它提供了一系列处理字串,排列,组合,日历,时间等等的基本功能。

Foundation是属于Objective-C的API,Core Fundation是属于C的API。

另外Core servieces还提供了其他的功能,比如:Security, Core Location, SQLite, 和Address Book. 其中Security 是用来处理认证,密码管理,按安全性管理的;Core Location是用来处理GPS定位的;SQLLite是轻量级的数据库,而AddressBook则用来处理电话薄资料的。

3. MediaMedia层提供了图片,音乐,影片等多媒体功能。

图像分为2D图像和3D图像,前者由Quartz2D来支持,后者则是用OpenglES.与音乐对应的模组是Core Audio和OpenAL, Media Player 实现了影片的播放,而最后还提供了Core Animation来对强大动画的支持。

4. Cocoa Touch最上面一层是Cocoa Touch,它是Objective-C的API, 其中最核心的部分是UIKit.Framework,应用程序界面上的各种组件,全是由它来提供呈现的,除此之外它还负责处理屏幕上的多点触摸事件,文字的输出,图片,网页的显示,相机或文件的存取,以及加速感应的部分等。

2.3 Android与ios在系统架构上的对比:Android采用的是Java技术,所有应用在Dalvik虚拟机中运行,Dalvik是google专门为移动设备优化的Java虚拟机。

因此Android具有成熟,存在大量可重用代码的优点,也有占内存大,运行速度略低的缺点。

而Apple IOS的体系架构相对较为传统,但运行效率高,对硬件的要求低,成本优势大,在现有的硬件条件下,应用运行具有最好的顺畅感,也更加省电。

系统架构朴实无华,但干净清晰,是目前最有效率的移动设备操作系统。

3. 开发者体验对比:3.1 Android与ios应用开发平台的区别Android使用Java,开发工具一般使用Eclipse,大部分类库兼容原来SUN的Java SE,并且依赖于Java良好的开源性和第三方类库的支持,通过虚拟机执行。

Java只能进行自动内存回收。

IOS使用面向对象的C,开发工具为Xcode,其运行效率和标准C相近。

显然Object C的运行效率和内存占用上好于Java,但其开发难度也远大于java。

Ios使用的开发类库是诞生于MFC 之前的Cocoa,开发速度快。

ObjectC能进行自动与手动内存回收,而ios只能进行手动内存回收。

这个问题导致google只能使用java虚拟机,而app可以继续他们在Mac OS X上的经验,而这个行为导致了流畅性的较大区别,甚至达到了数百毫秒。

3.2 开发者在两个平台上收益对比目前在北美市场,苹果手机市场占有率约24%,android手机市场占有率约35%,而app store上约45%游戏是付费下载,55%是完全免费或免费下载游戏中收费模式,而android平台上这一数据大约分别是35%和65%。

虽然google收费方式尚不能与苹果相比,但其市场份额可以补充其不足。

苹果App Store有着完善的零售机制,其规范度高于Android 应用商店。

而开放和自由的Android平台,其大而全的包容性给更多的开发者提供了登陆全球性商店的机会。

目前,应用开发者的收入主要来自广告赞助和用户付费。

AndroidMarket很多应用都使用了广告赞助的方式,而app store 则需要付费下载。

而现在,对于android开发者来说,google过于频繁地调整其统计、报表规则,和android版本升级太快是两个较大的问题。

相关主题