1、 Android 系统综述 目 录 目 录 2 1. Android的发展状况 3 1.1 Android项目的起源与发展 3 1.2 Android系统的产品化 3 1.3 Android与其它手机操作系统的竞争现状 4 1.3.1 Android与其它基于Linux的智能机系统 4 1.3.2 Android与其它智能机系统 4 2.Android的架构 5 2.1 Android系统的功能特性 5 2.2 Android的架构 6 2.2.1 应用程序 6 2.2.2 应用程序框架 6
2、 2.2.3 库 6 2.2.4 Android 运行时 (Android Runtime) 7 2.2.5 Linux内核 7 2.3 Dalvik虚拟机 8 2.4架构与许可证之间的关系 8 3.Android上的应用程序 9 3.1Android应用程序特点 9 3.2Android的应用程序开发现状 10 3.2.1Android Market与iPhone App Store 10 3.2.2Android上的应用程序开发概要 12 4.Android 在中国的现状 14 4.1 Android系统在中国的市场推广 14 4.2 国内Android开发者的现
3、状 15 1. Android的发展状况 1.1 Android项目的起源与发展 Android项目起源于Google的一次收购。2005年8月,Google发起了一次并不起眼的收购,一家名为Android的,成立才22个月的公司被Google收入囊中,公司中的员工也大多进入了Google工作,进入Google之后,Andy Rubin带领开发人员开发出了基于Linux 内核的Android系统。 2007年11月5日,Google宣布与其它33家手机制造商(包含摩托罗拉、宏达电、三星、LG)、手机芯片供货商、软硬件供货商、电信运营商联合组成开放手机联盟(O
4、pen Handset Alliance),发布了Android 开放手机软硬件平台。参与开放手机联盟的这些厂商,都会基于Android 平台,来开发新的手机业务。Android向手机厂商和手机运营商提供一个开放的平台,供它们开发创新性的应用软件。 Android系统保持着相当高的升级频率,显示了相当的活跃性。到目前为止,已经推出了十余个升级版本,其中重要的版本升级有以下几个: Android 1.0,它发布于2008年9月23日,世界上第一款Android智能机HTC G1就是采用的这一版本的系统(可以通过刷ROM升级到某些后续版本)。 Android 1.5(代号Cupcake), 发
5、布于2009年4月30日,它基于Linux 2.6.27内核。 Android 1.6(代号 Donut), 发布于2009年9月15日,它与1.5使用了同样的Linux内核,对上层的应用进行了一些升级,这是目前使用最广泛的Android系统。 Android 2.0(代号 Eclair ),发布于2009年10月26日,它基于Linux 2.6.29,在这一个版本中,首次引入了多点触控的特性。 Android 2.1,发布于2010年1月5日,这是目前最新的Android版本,功能更为强大,目前只有Google Nexus One, 摩托罗拉 Milestone等极少数最新配置的手机才
6、采用该系统。 Android系统各个版本的命名规律很有特色,全都是甜点的名字,并按首字母C,D,E,F的顺序排列。下一个Android的版本将会被命名为Froyo(冻酸奶,基于Linux Kernel 2.6.32)。Froyo之后的版本的Android将会命名为Gingerbread(姜饼,基于Linux Kernel 2.6.33/34)。 1.2 Android系统的产品化 由于Android系统在设计之初就为可移植性作了充分的考虑,因此,采用Android系统的各种设备正越来越多地涌现。 在手机市场上,三星、HTC、摩托罗拉、LG等厂商均是Android的支持者。Andro
7、id系统定位于硬件配置较高的智能机,智能机市场的不断扩大正好给了Android在手机上更大的发展空间。根据Gartner的调查报告,2009年智能手机销量达到12亿1100万部,同比增长了23.8%,在这样的大背景下,Andriod系统智能机也大举抢占市场,占有率由2008年的0.5%猛增到2009年的3.9%,可谓欣欣向荣。 2008年9月,T-mobile 发布了首款Android系统手机HTC Dream G1。这款手机具备多种特性,包括对3G网络的支持、电容屏全触摸操作、侧滑全键盘便捷输入方式、紧密的网络应用、无缝捆绑Google服务以及强大的的可扩展性等。随后,HTC又推出了G2,
8、G3等系列机型。而Google也于2010年1月5日推出了首款自有机型Nexus One,强悍的配置令人侧目,被人视为Google对苹果的iPhone发出了直接挑战。一度陷入困境的摩托罗拉也一口气连续推出多款Android机型,其中Droid销量非常惊人,前74天销量就达到了105万部,甚至超过了iPhone。Google CEO施密特今年2月表示,采用Android系统的手机每日的出货量已经达到6万台。 除了手机,在最近兴起的上网本和电子书阅读器上,以及传统的多媒体播放器中也出现了Android的身影。国内的oppo公司推出了基于Android系统的电子书阅读器"Enjoy",华为则推出了
9、基于Android的平板电脑,著名的Mp4播放器厂商法国爱可视也基于Android开发了数款Mp4。在各种平台上,Android都展现了其强大的生命力。 1.3 Android与其它手机操作系统的竞争现状 1.3.1 Android与其它基于Linux的智能机系统 由于Linux的开放性,在Android之前,就已经有许多组织推出了基于Linux的智能手机系统。其中最著名的当数Maemo和LiMo. Maemo是一个基于Debian Linux的系统,它由诺基亚开发,用以弥补日渐衰微的Symbian系统。目前它所获得的支持还较少,仅仅有诺基亚推出了N900等少数几款终端。20010年2
10、月,诺基亚宣布将Maemo和英特尔的Moblin计划结合,推出MeeGo,其前景如何,还有待观察。 LiMo是由LiMo基金会推出的一个手机平台,LiMo基金会同是由摩托罗拉、NEC、沃达丰等制造商和运营商于2007年联合组建的,发展前景也被人看好。不过LiMo平台没有像Android一样的App Market,其应用软件数量较Android要少。 1.3.2 Android与其它智能机系统 Android的开放性对于原先都是闭源的商业操作系统来说是巨大的挑战。在Android推出之前,智能手机系统最主要由Symbian, RIM, iPhone OS, Windows Mobile这四
11、家把持,这四家均是封闭的。2010年2月,Symbian宣布将逐步开放源代码,预计在一季度末将整个Symbian平台全部开放,这与Android在2009年的迅猛发展不无关系。根据Gartner的统计数据,在2009年,Android的市场占有率狂增7倍。下图就是Gartner对各个系统市场占有率的统计结果。 2. Android的架构 2.1 Android系统的功能特性 在硬件的支持下,Android系统拥有以下功能特性: 1. 有一套应用程序框架,支持各个组件的利用和替换。 2. 基于Dalvik虚拟机,专为移动设备上的Java运行作优化。 3. 内置基于Webk
12、it引擎的浏览器。 4. 拥有优化的图形处理机制,包括可自定义的2D图形库和3D图形库,并且可选开启硬件加速。 5. 可用SQLite存储结构化数据。 6. 支持常见的音频、视频以及图片格式(如MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)。 7. 支持GSM协议。 8. 支持蓝牙、EDGE、3G以及WIFI 9. 支持摄像头、GPS、电子罗盘以及加速度感应。 10. 拥有完善的开发环境,包括模拟器、调试工具、性能分析工具以及Eclipse插件。 2.2 Android的架构 下图是Android官方给出的架构图,从图中我们可以看到,A
13、ndroid系统可分为五个部分,下文中将详细介绍各个部分: 2.2.1 应用程序 Android系统内置一套核心应用程序,如联系薄、电话程序、短消息程序、日历、地图等。这些应用都是用Java语言开发的,此外,开发人员还可以使用Android的SDK开发各种各样的应用程序运行在这一层上。 2.2.2 应用程序框架 Android的这一套应用程序框架主要优点就是增强了复用性。 在程序框架安全机制的约束下,开发人员可以发布自己的组件,也可以使用其它应用程序中的组件。例如假设我们开发的一个音乐播放器中有一个播放列表的组件,那么在另外一个视频播放器中,就可以直接调用这一个播放列表组件。这一
14、特性在随后的应用开发一章中我们还将详细介绍。 应用程序都运行于应用程序框架之上,一般情况下,应用程序会用到以下Android自带的组件: 1. View组件。Android中的View组件种类繁多而且可扩展性强,类似于HTML中的各种标签,可以提供各种视图元素,如列表、输入框、按钮、内嵌的浏览器等。 2. Content Provider。通过Content Provider,应用程序可以把自己的数据共享给别的应用程序,也可以使用其它程序共享出来的数据。 3. Resource Manager。通过它,应用程序就能访问各种资源,如图片、布局文件、字符串资源等。 4. Notifica
15、tion Manager。它负责向为应用程序向发户发出通知。通知的方式有许多种,如在窗口中的状态栏显示、振动手机、发出响铃等。 5. Activity Manager。它管理应用程序的生命周期,处理程序的启动、退出、运行等状态。 2.2.3 库 Android包含一套C/C++库,可以为Android程序提供各种功能。这些功能通过Android应用程序框架暴露给上层的开发人员。常用的核心的库有下面这一些: 1. System C library - 这是一个专门为嵌入式的基于Linux的设备优化过的标准C库。 2. Media Libraries - Android内的多媒体库基于
16、OpenCORE;支持多种流行的音频和视频格式和静态图形文件格式(包括MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG )的播放和录制。 3. LibWebCore - 这是一个流行的浏览器引擎,Android的浏览器和嵌入到应用程序中的Web View都是由它驱动的。 4. SGL - 底层的2D图形引擎 5. 3D libraries - 它基于OpenGL ES 1.0 API实现; 如果硬件支持的话,它可以使用硬件3D加速,即使没有硬件支持,它也可以使用内置的、高度优化的3D软件加速。 6. FreeType - 这是一个使用十分广泛的开源位图
17、和矢量字体渲染库。 7. SQLite - SQLite是一个使用越来越广泛的轻量级开源数据库引擎,在嵌入式设备上运用十分广泛。Android程序可以使用SQLite来存储结构化的数据。 2.2.4 Android 运行时 (Android Runtime) Android的运行时实际上包括核心类库和Dalvik虚拟机两部分。核心类库包括了最基本的类库,如data structure, network, Utilities, File system等的,很多实现代码都是来自Apache Harmony项目,主要目的是保证虚拟机的类库能够和Java SE的类库最大可能的兼容,从而降低应用开
18、发者从Java SE阵营转移到Android开发阵营的难度,增加其可用性。 Dalvik虚拟机主要是完成对象生命周期的管理,堆栈的管理,线程管理,安全和异常的管理,以及垃圾回收等等重要功能。在Android中,每一个应用程序的进程都会运行在一个独立的Dalvik虚拟机中。Dalvik是Android系统的一个关键部件,开发人员为其作了大量有针对性的优化工作,从而保障了Android系统的运行效率。鉴于Dalvik虚拟机的重要性,下文我们还将详细介绍Dalvik。 2.2.5 Linux内核 Android的许多核心系统服务都建立在Linux之上,例如内存管理、进程调度、网络协议栈、安全管
19、理以及驱动程序(如WiFi设备驱动、闪存驱动、键盘驱动、摄像头驱动等)。Dalvik虚拟机就直接依赖下层的Linux内核来实现线程管理、低级内存管理这些功能。 同时Linux内核还负责把下层的硬件抽象出来,形成一个硬件抽象层,为上层的软件提供了一套与硬件无关的接口。也正是因为这样,Android才得以充分利用Linux的易移植性实现了它跨平台的目标。但是同时GNU Linux里的许多功能Android都没有支持,包括Cairo, X11, Alsa, FFmpeg, GTK, Pango, Glibc等都移除掉了。而且Android还以bionic 取代Glibc, 以Skia 替换了Cai
20、ro, FFmpeg也被换成了opencore 。 2.3 Dalvik虚拟机 Dalvik是Android系统的一个关键组件,对它的深入了解有助于我们理解Android开发者构思整个系统的思路。 Dalvik是由Dan Bornstein为Google开发的,这个名字也是他的祖先曾经居住过的一个村庄的名字。作为Android系统中的Java 虚拟机,Dalvik很好地解决了版权问题和性能问题。 众所周知,Java是Sun公司(现已被Oracle收购)推出的产业产品,并未开放源代码。Google为了打造一个开放的Android,决定自行开发Java虚拟机,绕过Sun
21、的J2ME平台,于是才有了Dalvik。 Dalvik相比于普通的Java虚拟机作了许多的优化工作。它采用了基于寄存器的架构,经过优化后,可以在限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。根据 Google的测算,64M的RAM已经能够令系统正常运转了。其中24M被用于底层系统的初始化和启动,另外20M被用于高层启动高层服务。当然,随着系统服务的增多和应用功能的扩展,其所消耗的内存也势必越来越大。 归纳起来,Dalvik虚拟机有如下几个主要特征: 1.一个应用中会定义很多类,编译
22、完成后即会有很多相应的CLASS文件,CLASS文件间会有不少冗余的信息;而DEX文件格式会把所有的CLASS文件内容整合到一个文件中。这样,除了减少整体的文件尺寸,I/O操作,也提高了类的查找速度。 2.增加了新的操作码的支持 3.文件结构尽量简洁,使用等长的指令,借以提高解析速度 4. 尽量扩大只读结构的大小,借以提高跨进程的数据共享。 Dalvik虚拟机上运行的不是普通的CLASS文件,而是特有的dex文件。在Android的SDK中有一个叫做dx的工具可以用来把Java的.class文件转换成.dex格式。一般来说,同样的class文件转换成的dex文件比它转换成的jar文件要
23、小不少。 2.4架构与许可证之间的关系 Google在设计Android时,就在版权问题上煞费苦心。Android的架构也与其许可策略有着莫大的关系。 Linux内核的许可是GPL V2,Android基于Linux内核构建,但开放手机联盟却为它选择了Apache许可第二版(ASL V2)来发布。不过,它对于运行在Android之上的应用程序的许可则没有任何限制,第三方应用程序开发者可以选择任何版权许可。这种在不同层次上选取不同许可协议的做法,对于Android的推广有重要的作用。 众所周知,GPL V2协议是典型的“Copyleft"协议,自由软件运动的精神领袖Richard Sta
24、llman把它设计成具有传染性,不但使用该协议的软件自身要公开源代码,对它的所有修改和衍生代码也都必须公开而且必须以相似的许可证发布。而ASL则不同,它虽然也是一种使用广泛,并且得到了OSI认可的开源许可,但它却并不限制商业性的开发和垄断式的发布。对于许多厂商来说,这一点是至关重要的。许多软件厂商更愿意采用ASL,BSD这类不设限的开源许可,因为在这样的许可下,他们既可以充分利用开源代码,又可以选择不公开自己所作的修改。所以ASL协议促进了软件厂商对开源软件的使用,因为这可以让厂商获利。在开源软件的基础上吸引尽可能多的厂商的参与,也很可能正是Android以ASL协议发布的原因。 但是,An
25、droid的这种许可方式也招致了许多批评的声音。2010年2月3日,Linux内核开发者Greg Kroah-Hartman将Android的驱动程序从Linux内核代码库中删除,这就意味着,Linux内核小组不认可Android对Linux内核的贡献。这其中的原因就是Android出于授权许可考虑而精心设计的架构。 本来Linux的驱动程序是位于内核空间的,但是这样的话厂商为自己的硬件开发的驱动程序就得依照GPL协议公开源码,而显然厂商是不愿意因此而泄露出硬件细节的。因此Android开发人员特意对Linux内核作了修改,将原本应该位于Linux内核空间的驱动程序部分上移到了用户空间。然后
26、再将Linux内核之上的部分以ASL许可发布,这样厂商就可以选择不公开其源码了,Android也从而争取到了大量厂商的支持。可是这样做带来的恶果就是Android的开发人员的成果无法为主线上的Linux内核所用,厂商为Android开发的驱动也根本无法用于其它的Linux内核,Android只从Linux社区获取,却未能提供回报。这就招致了开源社区的不满,并迫使Linux小组决定将Android从内核源码主线上删除。 3. Android上的应用程序 3.1 Android应用程序特点 Android系统是一个强大的智能机系统,与之相适应的硬件也一般具备相对较高的性能。总结起来,Andr
27、oid系统上的应用程序具有以下一些特点: 1. 功能强大。Android平台的设备一般都具备较强的运算能力、存储空间、网络功能以及各种各样的传感器。以第一款Android手机HTC G1为例,它拥有电容触摸屏、加速度传感器、磁场感应器、GPS等功能。并且对GSM、GPRS、WCDMA、EDGE、HSDPA这些网络提供支持,而且还拥有WIFI功能,这些硬件和网络上的支持让Android的应用程序有了极大的发挥空间,也激发出了开发人员的创新热情,因此也涌现出了各种极富创意的应用软件。如利用磁场感应来定位方向、检测附近的金属,又如Google官方推出的语音识别和搜索,还有利用GPS功能结合Goog
28、le Map实现的许多基于位置的服务。 2. 可复用性强。Android的应用程序由许多Activity组成,不同的Activity在程序中实现不同的功能模块。而最令人赞叹的就是,得益于Android的良好设计,不同应用程序之间的Activity可以实现共享(可以通过安全选项进行配置)。这就实现了良好的复用性,例如假设我们要编写一个内嵌web页面的应用,我们根本不需要自己编写浏览器的组件,而是可以直接调用系统中自带的浏览器组件,非常方便地实现这一功能。 3. 开放程度高。 “开放”是Android的设计宗旨之一,因此不同于iPhone OS等封闭的商业操作系统,在Android系统中,第
29、三方的开发人员编写的程序与系统自带的应用程序几乎是平等的。开发人员可以自己编写程序替代系统中原有的程序,甚至连拨号、短信、主屏幕这样的核心功能都可以由第三方开发人员的程序替代。 3.2 Android的应用程序开发现状 3.2.1 Android Market与iPhone App Store iPhone App Store是苹果公司为iPhone, iThouch等平台推出的应用软件商店,它极大地促进了开发者的热情,成为了竞争者纷纷模仿的对象。Google也于2008年8月28 日推出了Android Market,效仿App Store,并且也取得了不俗的成绩。 相比于App S
30、tore,Android Market更为自由开放,在App Store上传的软件,需要经过长可达数周的审核,并且可能由于各种原因审核不通过。例如某些非常优秀的软件就因为与iPhone自带的功能相重合而无法通过审核。在Android Market则不一样,开发人员只要注册认证之后就可以自由上传软件,不需要等待审核。而且Google向来擅长数据分析,它为开发人员提交的应用提供了非常详尽的统计,帮助开发人员研究用户需求。 但是目前Android Market跟App Store之间还有相当大的差距,苹果的App Store只用了一个月的时间,销量就达到了3000万美元,至2010年1月份,App
31、 Store应用的下载次数已经突破30亿次。从下表中,我们可以看到App Store的发展速度。App Store的迅猛发展给不少个人开发者带来了巨大的财富,也让EA这些传统游戏厂商发现了新的商机。 日期 应用程序数目 累计下载 2008年7月11日 500 0 2008年7月14日 800 10,000,000 2008年9月9日 3,000 100,000,000 2008年10月22日 7,500 200,000,000 2008年12月5日 10,000 300,000,000 2009年1月16日 15,000 500,000,000 20
32、09年3月17日 25,000 800,000,000 2009年4月23日 35,000 1,000,000,000 2009年6月8日 50,000 1,000,000,000+ 2009年7月11日 55,000 1,000,000,000+ 2009年7月14日 65,000 1,500,000,000 2009年9月9日 75,000 1,800,000,000 2009年9月29日 85,000 2,000,000,000+ 2009年11月4日 100,000 2,000,000,000+ 2010年1月5日 100,000+
33、3,000,000,000+ 2010年1月27日 140,000+ 3,000,000,000+ 相比之下,Android Market的发展速度就明显要慢一些了。到目前为止,Android上的应用数量总计大约为3万个,远少于App Store上的10多万个。归结起来,有以下原因: 1. 用户群的不同。苹果公司的用户群一直相对高端,并且对苹果产品的文化非常认同,消费能力也较强。因此给开发者带来了大量的收入,刺激了开发人员的热情。而相比之下,Android Market中的应用则以免费应用为主,免费应用的比例高达57%,位居所有手机应用商店之首。在App Store中,这一比例只
34、有25%,远远低于Android Market,很显然,大量的免费应用是不利于开发人员的。 2. 支付手段不便。Android Market起初甚至根本不向收费软件开放,后来逐渐在世界各地支持收费软件的付款了,但是却必须使用Google Check Out支付工具才能支付,这使得世界上许多地区都无法支付,而且Google Check Out本来流行程度就不如PayPal广,Google却将其作为唯一的支付手段,许多用户也因此放弃了购买收费软件。 3. 对付费软件的版权保护不佳。 2009年2月,Android Market开始向美国T-Mobile的用户开放付费软件下载,结果12小时之后就
35、有用户破解了它的付费软件防拷贝机制。用户只要提权到root帐户就可以把付费软件的APK文件直接拷贝出来四处散布,因为Android的防拷贝机制仅仅是把下载下来的APK文件存放到一个普通用户没有访问权限的目录下去。许多开发人员都对此有怨言,因为这些在网络上流传的APK文件直接就影响到了付费软件的销量。 4. Android Market的用户体验不佳。 这是App Store的界面,功能丰富,界面清爽: 这是Android Market的界面,相比而言,功能上就要弱不少了: Android系统上安装的Market客户端程序比较简陋,功能十分有限,不便于用户查找自己想要的程序。而在
36、Android Market的官方网站(http://www.A 好在现在有许多非官方的网站可以让用户比较方便地查找和交流软件。国外最著名的有Cyrket、aTrackDog和AndroLid,国内则有机锋网、安卓网等。其中安卓网还发布了自己的Market客户端--安卓市场,中国的开发人员可以将自己的程序上传到安卓市场供用户下载。 不过,我们依然要看到Android在各种设备上的广阔前景,它的开放性在给开发人员带来某些暂时的不便的同时也给Android系统的推广带来了巨大的好处,因此,现在不论国内还是国外,正有越来越多的开发者学习Android上的应用程序开发,iPhone应用程序开发人员
37、也有不少正尝试或已经在进行Android上的应用程序开发。移动平台广告运营商AdMob于2010年3月对开发人员进行了一次调查,调查结果表明有超过70%的iPhone开发人员准备在6个月内尝试Android的应用开发,而且在“下一个准备参与开发的平台”这一调查项中,Android成为了开发人员的首选。下面就是AdMod的统计结果图: 从图中我们可以明显看出开发人员对Android的热情在上升并且已经成为开发人员下一个开发平台的首选。 3.2.2Android上的应用程序开发概要 Android 有丰富的功能,因此很容易与桌面操作系统混淆。它是一个分层的环境,构建在 Linux 内核的
38、基础上,包括丰富的功能。 Android 应用程序是用 Java 编程语言编写的,它们在Dalvik虚拟机中运行。每个 Android 应用程序都占用Dalvik VM 的一个实例,这个实例驻留在一个由 Linux 内核管理的进程中,如下图所示: 每一个Android 应用程序都由以下一个或多个组件组成: 1.活动(Activity)。具有可视 UI 的应用程序是用活动实现的。当用户从主屏幕或应用程序启动器选择一个应用程序时,就会开始一个动作。 2.服务(Service)。服务应该用于任何需要持续较长时间的应用程序,例如网络监视器或更新检查应用程序。 3.内容提供程序(Content
39、 Provider)。可以将内容提供程序看作数据库服务器。内容提供程序的任务是管理对持久数据的访问,例如 SQLite 数据库。如果应用程序非常简单,那么可能不需要创建内容提供程序。如果要构建一个较大的应用程序,或者构建需要为多个活动或应用程序提供数据的应用程序,那么可以使用内容提供程序实现数据访问。 4.广播接收器(Broadcast Receiver)。Android 应用程序可用于处理一个数据元素,或者对一个事件(例如接收文本消息)做出响应。 5.意图(Intent)。顾名思义,这一组件的作用就是用于传递各种“意图”,它起着传递消息的作用。例如,一个用户要打开一个浏览器,那么当执行打
40、开浏览器这个操作时,应用程序(这里指你打开浏览器这个活动)将会创建一个intent实例并将其传送给Android系统,之后系统将会通过分析这个意图来操作这个意图,并将结果返回。 Android 应用程序是连同一个 AndroidManifest.xml 文件一起部署到设备的。AndroidManifest.xml 包含必要的配置信息,以便将它适当地安装到设备。它包括必需的类名和应用程序能够处理的事件类型,以及运行应用程序所需的许可。例如,如果应用程序需要访问网络(例如为了下载一个文件 ), 那么 manifest 文件中必须显式地列出该许可。这种显式声明有助于减少恶意应用程序损害设备的可能性
41、 另外,在Android的应用程序开发过程中,还有以下一些方面是需要特别注意的: 1.存储和返回数据 Android提供了很多种类的存储机制以及网络服务。在Andriod应用程序中有几种不同读写数据的方法。可以根据需求选择。 我们知道,对于PC机或者说是桌面操作系统来说,存储数据是通过文件系统来进行的。这个文件系统可以被其他的应用程序所访问和操作。但是,在Android中却提出了一个不同的资源存储方式。在Android中,所有的应用程序资源对自身而言是私有的,但是并不是说,其它程序就无法与之共享数据了。在Android中,可以通过提供一个标准的方法来使得其他的应用程序访问这些私有的数
42、据,那就是ContentProvider。除了这一种方法,还有其它的方法也可以使用,例如Prefrences、Files、Databases、Network等。完全可以根据开发人员的需求来作选择。 2. 安全模式 在Android中,为了使用应用程序更加地安全,Android增加了安全模型来操作资源和数据的特征,这是通过权限设置来决定的。Android是一个多进程系统,在此之中,每个应用程序都在自己的进程中运行。大多数的应用程序之间的安全模式设置和标准的Linux系统相一致,例如给各个应用程序分配不同的UID。 3.Andriod中的安全架构 Android安全结构的一个中心设计思想是,
43、在默认情况下,没有任何应用程序可以对其他的应用程序、其他的用户进行操作。一个应用程序的进程就是一个安全的沙盒,它不会打扰其他的应用程序。它所要请求获得的权限在安装时用户就可以知晓,并且安装之后程序也无法改变自己的权限。 4.资源和i18n(国际化) Android中也提供了应用程序资源管理系统,这些资源通常包括图像,字符串,以及XML布局文件等等。这些资源在编译期间会以不同形式被编译到应用程序中。例如XML文件会被编译成一个二进制代码,String被压入一个更加有效率的存储表格中。通过对不同语种的String资源分别管理,就可以很方便地实现i18n。 4.Android 在中国的现状
44、4.1 Android系统在中国的市场推广 对于我们国内的运营商和许多厂商来说,Android是他们最称心如意的系统。 首先,Google将其免费发布,这样就给本来利润就不高的中国厂商们提供了一个降低成本的好机会。其次,Google将源码公开,而且还采用Apache许可证,这样各家企业就可以在Android的基础之上加入自己的特色,而不用承担任何侵权的风险。再次,Android良好的设计,让厂商们可以在各种各样的电子产品上进行移植,最大限度地帮助他们降低了成本。 截至目前,国内三大运营商、中兴通讯和华为等厂商以及其他许多供应商都已经加入了开放手机联盟(OHA),据统计,OHA的中国成员数
45、量已达到12家,占据总成员席位的近1/5。这些企业纷纷利用Android推出了自己的产品。 例如中国移动就基于Android推出了自己的OMS系统。它采用Android源代码,但在业务层和用户体验层与此前的谷歌手机完全不一样。OMS在终端手机上完整深度订制了“飞信、快讯、无线音乐随身听、139邮箱、移动梦网、号簿管家、百宝箱等”中国移动数据业务。实际上OMS的用户界面设计之初就是把这些业务当作基本功能的一部分,所以使中国移动的数据业务第一次和手机的自身用户体验达到深度结合。目前已经有联想O1,戴尔Mini 3i等多款采用了中国移动OMS系统的智能机上市,市场反响也非常好。 另外,深圳等地的
46、大量“山寨机”厂商也正在积极谋划,采用免费的Android系统,对这些厂商来说可以省下一大笔的授权费用,在山寨机已经进入微利的时代,这无疑是非常诱人的。而另外一些电子厂商则另谋出路,将Android系统运用到了其它的设备上,例如国产品牌OPPO就推出了基于Android开发的电子书阅读器,还有一些厂商将其用于MP4播放器……… 在政策上,Android也得到了不小的支持。2010年1月14日,工信部在首届海峡两岸Android技术及产业合作发展会上表示,工信部将通过制定科学的产业政策、技术政策和业务政策,加强对Android的政策引导和规范,努力为Android平台创造良好的政策和市场环境。
47、这对Android平台未来在国内的发展将起到非常重要的积极作用。 4.2 国内Android开发者的现状 由于Android推出的时间还不长,国内的Android开发人员并不多。目前这些开发者主要可分为三类: 第一类是在企业里从事Android的研究、平台的移植、新产品的研发。如金山、腾讯、网易、百度、搜狐、UCWeb、网龙等,由于在其他领域有着强大的优势,因此将其互联网产品为Android开发一个客户端,将优势延伸到Android平台的无线互联网领域。 第二类是在一些几人到几十人规模的团队里专门从事Android应用的开发,属于中小型的开发公司。比如北京的乐目以及成都的优聚软件。这些
48、公司又可以分成三种模式:一是做国外市场,通过为苹果、Windows Mobile、Android开发软件,挂在国外的软件商店内卖钱,由于国内市场不成熟,这类的公司往往选择“国外收费、国内免费”的方式来运营;二是以北京乐目为代表的手机社区,试图将Android引入SNS,然而由于各互联网SNS企业的强势很有可能会被转移到移动平台上,因此前景并不乐观,这类的企业最终可能会通过被人收购的方式来回本;第三种就是依靠外包。 第三类则是一些对Android开发有强烈兴趣爱好的个人开发者,他们经常兼职开发一些小的应用,但Android开发并不是他们的主业。 在现阶段,国内的开发者们并未能从Android
49、开发中获取到足够的回报。Android平台的前途虽好,但对国内的开发团队来说,盈利现状却大都不佳,其主要原因有二: 1. 国外销售的收款不便 国内的Android开发者在国外的收入主要来源于付费下载和AdMob的广告。但是,Android Market只支持Google Check Out付款,而中国大陆的银行都无法接收Google Check Out转账,这样开发者的获利就无法顺利地到手,而是碾转境外的银行才能最终到手,显然这给开发人员带来了很大的不便。 有的开发者选择以免费软件+AdMob广告的形式推出自己的产品,这种情况下,AdMob会把广告盈利支付到Paypal账户中。目前境内的银行可以接收Paypal的转账,但是需要亲自到银行的营业厅办理外汇管制中规定的相当手续并且缴纳一定比例的手续费。 由此可见,国内开发者迫切需要方便、快捷的收款渠道,以帮助他们加快资金周转。 2. 国内市场远未成熟 在国内,中国移动基于Android开发了自己深度定制过的OMS系统,已经有联想等厂商推出了使用OMS系统的“Gphone”,中国移动官方也随之开放了Mobile






