2011年,Android占智能手机市场总额的49% [1],近乎半壁江山,iOS凭有限几款机型占有总额的19%[4]。余下的三成,Symbian渐行渐远,黑莓陷于停滞,Bada主攻低端市场,Windows Phone姗姗来迟。未来一两年内,智能手机平台仍将由iOS和Android主导,不确切的是第三是谁,它的份额能有多少,能从Symbian和黑莓手中获得多少用户。
Android出货量持续增长,但从开发者那里却传出相反的信息。根据IDC的调查数据[2]:“本季度开发者对Android手机的兴趣下降了4.7%至78.6%,对Android平板电脑的兴趣下降了2.2%至65.9%。”在移动生态系统中,更多的用户促使更多的开发者开发更多的应用,更多的应用吸引更多的用户,形成正反馈循环。为何随着Android手机的增加,开发者兴趣反而下降?这主要因为Android碎片化严重,增加开发成本,开发者对跨平台技术期待持续增加,分流对Android平台的直接关注。
碎片化的影响
下面我们以Android为例,分析平台碎片化对开发的影响。Android碎片化一直备受诟病,但相比下BREW和Symbian情况更为严重。Google公司通过兼容性测试套件(CTS)和兼容规范文档(CDD),规范设备硬件规格,确保设备使用API的一致性,并实施越来越严格的控制。
(1)平台版本碎片化的影响
根据维基百科的资料[3],截至2012年3月1日,Android各版本分布比例如下:
版本 |
API级别 |
比例 |
4.0.x Ice Cream Sandwich |
14-15 |
4.9% |
3.x.x Honeycomb |
11-13 |
3.3% |
2.3.x Gingerbread |
9-10 |
64.4% |
2.2 Froyo |
8 |
20.9% |
2.0, 2.1 Eclair |
7 |
5.5% |
1.6 Donut |
4 |
0.7% |
1.5 Cupcake |
3 |
0.3% |
Android版本快速演进只是造成版本众多的原因之一。更关键的是Android平台没有像苹果那样提供系统在线一键升级的方式功能,除了个别发烧友,极少用户将会更新系统更新到最新版本。目前,开发一款应用需兼容2.x - 4.x的三大版本。Google公司努力确保API的前向兼容,但对底层开发和使用新版本提供的新功能时,开发者不得不对各版本进行优化,确保兼容。
(2)设备碎片化的影响
任何非单一制造商的平台都会面临设备碎片化的问题,Android尤为严重。平台供应商追求统一体验,终端制造商希望打造特色,通过差异化获取竞争优势,两者之间存在矛盾。
由于终端制造商无法跟上Google飞速版本研发脚步,以及Google对平台实施越来越严格的控制,差异化空间不断被挤压。终端制造商越来越只关心手机的销售,而非售后的维护,他们对吸引新的应用开发者缺乏热心。
即便同一制造商,不同系列或型号手机在硬件性能,特别是屏幕尺寸的差异,导致应用的用户体验可能不一致,增加了开发者适配的工作量。
(3)平台碎片化的影响
平台碎片化包括对标准规范支持程度的差异,以及官方版本和分支版本的差异。
标准规范支持度差异最显见的例子是HTML5,不同平台对HTML5的支持程度不同。但随着规范成熟和技术发展,在未来将得到克服。
官方版本和分支版本的差异则相反,如同一颗树随着时间不断生长,分枝和主干之间,分枝和分枝之间的距离越拉越大。以开源的Android为例,存在多个分支,有亚马逊的kindle fire,中移动的OPhone,百度的易平台等等。这些分支是从某个特定的官方版本上发展,加入开发者的主营业务API以及本地化需求的实现。官方版本的应用一般可在分支版本上运行,单分支版本所依赖的基础官方版本的更新会有明显的滞后。分支版本上的特色应用通常不能在官方版本上运行。发展到最后,恐怕需要认真思考,是作为分支,还是独立出来。
跨平台开发环境
J2ME和WAP作为跨平台技术在功能手机时代已有,J2ME是中间件,WAP是web方式。随着智能手机的普及,移动开发者越来越多,希望能够通过跨平台技术,确保应用可在不同平台和不同设备上运行。
移动生态系统的控制点关键在开发环境控制和应用发布控制,前者是对API的管控,后者是对应用商店的持有,本质都是对平台的控制,平台决定API,原生应用商店具有天然的优势。Apple和Google通过牢牢掌控平台,进而控制整个生态系统。如果在平台上难以突破,何不换个思路,绕开平台,直接控制应用。对于大型互联网商们、OEM们和运营商们,跨平台技术可以绕开底层操作系统,控制应用开发环境和建设新发布渠道,是获取生态系统话语权的希望。
下面,我们对跨平台开发技术进行分析。
(1)通过跨平台中间件提供统一的API
由于功能手机支持J2ME,J2ME在装机量上最高。但J2ME碎片化非常严重,开发者对它所谓的“写一次就可随处运行”失去信心。J2ME背后缺乏大公司的支持,没有建立有效的应用商店为开发者带来收益,而开发者学习和熟悉J2ME所需时间长,成本高收益低,随着智能移动开发环境和新移动应用商务模式的兴起,开发者对J2ME逐渐失去兴趣。
QT是跨平台的应用和UI框架,开发以C++为主,可结合web技术(HTML、CSS和JavaScript)。2008年被Nokia收购,Nokia为QT引入移动API,集成WebKit引擎,使QT应用可在手机上运行。Nokia最初将QT定位为智能手机产品的应用框架,在Symbian和MeeGo中使用。2011年年初,Nokia和微软结盟,宣布Nokia的智能手机将全部采用Windows Phone操作系统。自此Nokia将Symbian开发逐步转为维护,并在推出唯一一款MeeGo手机N90后,终止对MeeGo的支持。随着Nokia放弃移动平台的掌控,拥抱微软平台,QT在移动终端的进展停顿。
(2)通过移动虚拟化技术跨平台部署
移动虚拟化允许其他操作系统或虚拟机同时运行在移动设备上,创建安全独立可并行的软件运行环境。通过移动虚拟化技术,可在同一手机上同时提供个人环境和商务环境,主系统为个人环境,客系统为商务环境,与个人环境相隔离,安装需安全保障的信任应用。
例如在Android系统上可通过VMware虚拟化技术,提供Windows Mobile系统。移动通信,个人娱乐时使用主系统Android上的应用,而远程办公、金融服务等使用客系统Windows Mobile的应用。
开发者只需在某个系统上开发,通过移动虚拟化技术将系统加载到手机原有平台上,实现应用的部署。但这种方式,目前使用范围很少,多用于企业办公,主要确保商务系统的安全,而安全保障通过其他机制提供,安全内容将在后面分析。
(3)web技术提供统一的API
在Web技术中,最瞩目无疑是HTML5。HTML5由W3C和WHAT工作组制定标准,得到Google,Apple,Opera,IBM,Microsoft、Mozilla等公司的大力支持。HTML5增加离线存储,2D图像能力,视频/音频流,地理位置,访问手机摄像头和传感器,使web应用化,可和应用一样安装在智能终端上。
HTML5的支持构建在web引擎上。希望在移动生态系统上获取话语权的公司,只需要对web引擎,例如开源的webkit,进行改造,提高性能,通过HTML5标准提高用户体验、交互能力和离线能力,建立应用商店,发展生态环境,将硬件适配、电源优化等问题交底层操作系统处理。因此,HTML5不仅吸引应用开发商,也吸引OEM厂商,互联网公司,和运营商。
运营商可提供小额支付类APIs、话音短信等网络APIs;互联网商可提供云服务,向开发者开放云服务API;OEM可以通过底层硬件加速等方式,提高HTML5的性能。HTML5可降低iOS和Android的平台影响力,但并不等同增加自身筹码。希望通过HTML5发展生态系统的公司需协调好API标准化和扩展化之间的关系。
提供特色功能的扩展APIs是互联网商和运营商服务的延伸,扩展服务的覆盖面,发展长尾应用,提高服务能力。这些扩展API必然捆绑某个运营商或者某个云服务,带来跨运营商、跨互联网商的新问题。要跨平台就要标准化,而特色功能无可避免存在绑定。关键是如何处理好两者关系,利用特色功在众多竞争者中突围而出,吸引用户,吸引开发者。
(4)开发工具对跨平台支持
Web是跨平台的技术,可通过web和原生应用的转换,实现代码库的统一。主要分为嵌入模式和解析模式两类。
嵌入模式是在原生应用中嵌入公共通用运行环境,即web运行环境,支持对web脚本语言的解析,实现web部分代码共享。例如Android允许通过WebView实现web嵌入。但嵌入方式会减低应用的性能。
解析模式和嵌入模式相反,通过开发工具对同一代码进行编译,生成不同平台的原生应用,适配不同平台的同时保证相同的代码库。这些开发工具有Appcelerator,PhoneGap,RhoMobile,Sencha,The M Project等。采用编程代码语言一般是Web脚本,支持HTML,CSS,JavaScript,有些工具还提供自己的扩展。解析模式实现web业务原生应用化,可将现有的互联网应用快速引入手机,同时解决跨平台开发。
[2]http://articles.businessinsider.com/2012-03-20/tech/31213445_1_android-phones-phones-and-tablets-market-share
[3]http://en.wikipedia.org/wiki/Android
文章为发表在《电信科学》2012年5月中《智能终端发展关键技术探讨》的第三章节部分。
相关链接:我的产业生态链和杂谈文章