2011年10月 CSDN移动电子刊第三期发布
以下轉載自: http://www.csdn.net/article/2011-09-30/305231
自从iPhone进入移动设备市场以来,手机市场的焦点就逐渐由非智能手机转向智 能手机。与传统的非智能手机相比,智能手机可以由用户通过自行安装软件的方式来 扩充其功能。iPhone的崛起造成了手机市场版块的移动,更使得智能手机市场大洗牌,iPhone和Android成为新崛起的两大阵营。
Android以"机海战术"迅速攻占智能手机市场,目前总体市场占有率已经超越 iPhone。但Apple的市场经营策略及商业模式着实令人敬佩,毕竟iPhone仅有一个模式, 若是以单一模式而言,Android完全不是iPhone的对手,而单一模式的好处是软硬件研发及维护成本都相对低廉。而"Android vs. iPhone"等同于"开放vs.封闭",所以我个 人认为Android的后续发展潜力将超越iPhone。
市场规律表明并不是好产品就一定会大卖,因为市场生态牵涉的范围太广,包含 营销、区域性、产品上市时间等因素。若市场一旦成型,便需要花很大的力量才能扭 转,所以目前智能手机的态势已经非常明显,iPhone及Android将是未来智能手机市场 的领导者。
剖析Android的定位以及市场策略
2005年,Android还是一家新兴公司,它的目标是打造一个可以持续更新的移动设 备系统。而Google在独霸网页搜索服务之后,开始将触角延伸至移动设备市场,因为 掌上移动设备,或是简称"手机",每年最少有9~12亿部的销售量,比计算机(泛指Desktop及Notebook)的销售量多至少三倍,如此庞大的商机让Google无法忽视掌上移 动设备的市场,于是买下Android,作为它进入手机产业的开路先锋。2007年,Google 成立Open Handset Alliance(OHA),开始推动一个开放源码的免费移动平台,希望各 家厂商共同合作开发Android,而OHA也由初期的Google、Qualcomm及HTC等厂商,扩大至今79家厂商。 现在无线通讯技术日趋成熟,简化了以往手机上网(Internet)所需的配套方案,技术成熟加上时间点的配合,造就了智能手机市场的快速崛起,也让iPhone及Android 各领风骚。
Google一直以来都是将自己定位在提供服务的角色上,而它的另一强项是Business 模式,也是造就Google成为全世界软件巨擘的原因之一。Google的商业模式让外人摸不 着头绪,但却为它带来了巨大财富。更简单地说,Google擅长提供服务,并推动一种配套的商业模式,接着就躺在家里,靠着这个商业模式赚钱,钱就像从天上掉下来一样, 而金额之大,让你我都无法想象。
Google对于Android的定位,也是提供用户服务,而制造手机硬件并非Google的发 展重点。Android开放原始代码的策略造就了现在的Android机海,眼前直接受益者是手机硬件及相关零组件制造商,但背后的深意却是有助于Google推动相关移动服务。因为 Android在智能手机市场上急速成长,一旦规模成型,大量用户将使用Google所提供的 服务,而Google也将循着以往的成功模式继续前进。
Google想要进入移动设备市场,并在短时间内占有一席之地,它使用的策略 是:站在巨人的肩膀上,并针对手机所需的功能加以开发及增强。因此Dalvik Virtual Machine、Application Framework及Application为Android的发展重点。以Google的财力、 人力等资源,绝对有能力从无到有打造一个全新的手机系统,但此举必定耗费大量的人 力及时间成本,并且无法预期最终的成败。从软件工程的角度来看,测试占整体开发周期的一半时间,而如果能以现成的软件作为基础,并针对产品的特定需求加以开发及 增强,势必能缩短开发周期,加快产品上市。因而Android选择站在巨人的肩膀上,大 量采用现有的开源技术,并特别挑选开源的License,将发展重点专注在手机的上层软件,也就是上层的应用开发。因为用户直接接触到的即是上层的应用软件,而简洁直观的操作方式将是吸引用户购买手机的一大因素,用户不会、甚至不想知道程序的运作 流程,也不会在意驱动写得好坏。只要驱动不会慢到严重影响用户操作的流畅度,用户 根本感受不到好的驱动能缩短数个毫秒的反应时间。用户的需求很简单,就是希望用最 简洁直观的方式来操作手机,但从开发者的角度来看,要达到此需求却不是一项容易的工作,其中包含大量的背景知识,例如人体工学、人类的行为模式、经验法则、软件工 程、操作系统等背景知识,因此设计简单易用的人机界面并非易事。
Android原本就定位为可以不断更新的操作系统,因此Android在还没完全设计完 成,或是说大致系统架构完成雏形之时,就先行推出,才会造成推出之后部分架构上的 改动,例如HAL(Hardware Abstraction Layer)等;再者因为Android采用大量的开源来 建构其系统,并且熟知开源的特性,以开源的方式发布其代码,所以全世界的开发者不 断向Android贡献补丁及意见反馈,而开源在经过时间的考验下,其稳定性及精练程度 皆达到一定水平,也造就了Android系统的日趋完善。
Android作为开放源码的系统,拥有较低的成本优势,采用Android系统的厂商不用 支付版权费,相对于Windows系列的手机,每部手机至少便宜20~30美元。所以从手机 制造商的角度来看,Android智能手机无论软硬件的成本都比一般智能手机低廉。但我个人认为开发Android系统的智能手机,所花费的研发成本未必会比其他智能手机低, 原因有两个:一是就开发产品而言,开源仅有两个优点,即降低进入的门槛、增加对产 品的掌握度,开源不是万能的,也并非直接取用、稍加修改后就能够直接量产,开源距 离产品实际量产出货,还有一段漫长的研发过程;二是研发所需的人力成本,若是要达到产品差异化的目的,必定要投入相当多的研发人员,而这些都包含在研发成本中。
Android的市场优势已经从硬件转变为软件及用户,根据我过去的开发经验, Android 1.0可以在ARM10、200MHz这样的低端CPU上流畅地执行,但是目前的Android版本以在这些低端CPU上已经运行不起来了,再加上现在中央处理器的时钟频率已经到 达1GHz,所以以往Android可以在低端硬件平台上运行的优势已不复存在。Android的市 场优势已经逐渐转向丰富且多样化的软件服务以及庞大的用户市场。Android的用户市场已经成形,短时间内不会有太大改变,接下来Google将通过全球的用户市场来推动其 服务,并循着过去的商业模式大赚全世界的财富。
传统嵌入式Linux与Android的差异
Android的架构如图1所示。
一开始整个系统仅分为两大区块,即内核与用户空间的应用程序,而用户空间的不同应用程序可能使用到相同的函数调用,而此类相同函数被包装成函数库,至于内核则再细分为内核与驱动,如图2所示。
整体架构的差异
图1 Android的架构图
图2 Android系统分区
Google是一家软件公司,所以它从软件的角度来设计Android。Android的软件架构是分层式的设计,从宏观的角度来看,Android与传统嵌入式 Linux的软件架构相同。
Android从最底层的内核,到上层用户空间的函数库及应用程序,整体架构与传统的嵌入式Linux系统一样。下面从软件元件的角度来看传统嵌入式Linux系统与Android系
统,如图3所示。
图3 Android系统层次结构
果,因而软件的授权方式会影响厂商对该系统的支持程度。而Android选用的软件授权方式相较于其他系统更适合于商业化,因此吸引着越来越多的厂商加入。
由图3可以看出,Android是一套完整的操作系统,具备一套操作系统应有的软件元件,其中包含内核、函数库及用户空间的应用程序。但如果从框架的角度来看, Android是不完整的,因为整个Android系统只是一个框架,若是要将原生态的Android开发至产品化,甚至量产阶段,各家系统开发商及制造商皆要付出相当的人力及时间 成本,例如要让Android可以控制周边相关硬件,我们必须自行填补相关的程序代码,而这并不是一项简单的工作。至于优化的部份,涵盖的范围更是广泛,包含软件架构的设计,从最上层的Java、Dalvik虚拟机、C/C++、HAL,一直至底层的Linux驱动及内 核,所涵盖的程序语言包含Java、C/C++及汇编语言,而这也是各家开发Android系统的厂商在技术层面所面临的最大挑战,因为开发Android系统的团队必须同时具备广度及 深度,包含操作系统、系统程序等背景知识、大型软件的设计概念及经验,以及适用 于嵌入式系统的程序设计技巧等,而这些条件都增加了开发Android系统的难度。
运作流程的差异
图4 Android的软件授权方式
软件授权方式的差异
Android的软件授权方式如图4所示。在软件授权方式上,Android系统与传统嵌入式Linux系统有很大的不同,因为Android所选用的套件都是经过特地挑选,从商业化的角度来选择软件授权方式,内核为Linux,采用GPL(General Public License)授权方 式,必须强制公开原始代码,其余大多采用Apache及BSD的授权方式,避免日后因为软件授权争议而影响商业化的行为。因此Android比较重视软件授权方式,所以相较于传统嵌入式Linux系统大多采用GPL或是类GPL的授权方式,Android更适合被应用于商业市场上。而各大厂商纷纷投入Android的行列,无非是因为Android大多采用Apache 及BSD的授权方式,此种授权方式无需公开原始代码,大大提高了厂商加入Android阵
Android系统的运作流程如图5所示。传统嵌入式Linux系统以C/C++语言作为主要 开发工具,而Android系统考虑便携性、可移植性以及整体架构的设计,以Java语言为
主要开发工具,并开发Dalvik虚拟机,使得Android的应用程序可以在Dalvik虚拟机上执行。因此Android系统的整体运作流程比传统嵌入式Linux系统复杂,需要透过JNI(Java Native Interface)的转换 来交换Java与Native code的信息,而不如传统嵌入式Linux系统来得直观。但由于 Android基于Linux之上,所以从C/C++往
营的意愿。因为原始代码等同于公司的智慧财产,公司一般不愿意公开自行研发的成
图5 Android系统的运作流程
下的运作流程与传统嵌入式Linux系统相
图6 Linux(GNOME)系统桌面截屏 图7 Android系统截屏
同,Android主要使用/sys及/dev为交换用户空间与内核信息的界面。
视窗系统的差异
Linux桌面系统不外乎是GNOME及KDE,GNOME以GTK为基础,GTK主要以C写成,KDE则是以Qt为基础,Qt主要以C++写成。一般Linux桌面系统可以同时开启许多 应用程序,在桌面上同时存在许多视窗,而Android的设计是一个视窗应用程序会占住整个手机的画面,Linux系统与Android系统的操作画面分别如图6和图7所示。
用户的差异
一部能够吸引消费者购买的手机,有三大要点:一是品牌;二是ID,也就是外 观、工业设计,设计要点在于轻、薄、时尚、个性化、独特性等;三是UI,一个简洁 且友善的操作界面将是吸引用户购买此产品的要点之一。因此Android的发展重点在上层的应用软件,因为用户直接接触到的就是上层的应用软件,也唯有上层的应用软件 才能够创造产品最大的附加价值。
Android对于程序员的挑战
Android作为一个开源的免费移动平台,从软件开发人员的角度来看,开源有三个 难点:一是没有文件;二是有文件,但是文件有误;三是有完整文件,但是原始代码 如此之庞大,以致让人不知从何下手。
一般大型软件的制作流程,一定是先有分析设计(OOAD),才有实现(OOP), 所以我个人推测Android一定有一份整体架构的设计文件,或是所谓的UML Diagram,但Android并没有开放这份文件,这正是开源的特性之一,是开发上的困难点也是吸引 人之处。开源让人有一种挖宝的感觉,正所谓"源码之下,了无秘密",原始代码摊 开在阳光下,大家都可以取得并修改,这也是开源改版快速的原因之一。
因此,开发Android的相关产品,需要一定的人力及时间成本,才能跟上Android不断改版的脚步,而这也正是Android对于程序员的挑战。
發表迴響