Android 的快速增长让一些开发人员担忧
Google 的开源操作系统 Android 在发布一年后终于引发轰动。经历了初期的慢热,现在该系统至少已被12款手机所采用,更多的手机即将到来。
这对 Android 支持者来说是好消息?不一定,有些开发者这么认为。他们说一系列问题使得管理 Android 程序成为了一场噩梦:一堆手机上运行着3个版本的系统(Android 1.5/1.6/2.0)以及自制固件,各机型的硬件也有诸多差异。
对于用户来说,这意味着网络商店里的程序可能会充满 bug,在特定机型上无法顺畅工作,带来糟糕的使用体验。由于不清楚后端复杂性的日益增长,用户很可能会在网络商店里对程序本身作出负面评论——而这对小型软件来说很可能是致命的。
“我们发现自己正在把精力花在保证每个程序兼容不同版本的系统和硬件机型之上,而不是改进程序。我们并不是在抱怨 Android 系统的增长,但如果你是一家小公司或是刚刚入门、希望学习 Android 开发的新人,我可以想象你的头都快烦爆了,这确实很恼人。” Froogloid 公司创始人Chris Fagan 说道,该公司专注于 Android 程序开发。
这和90年代 Java 的问题相似。Java 起初以能够让程序运行于任何电脑为卖点(“写一个程序,哪儿都能运行”write once, run any where),但开发者们发现 Java 虚拟机在不同硬件上的变化太多,让 Java 的许诺实际上变成了(“写一个程序,哪儿都要debug”write once, debug everywhere)。虽然 Java 仍被使用——特别是在移动领域,有大量的游戏和软件由 Java 写成——但它远不像当初宣称的那般跨平台。
移动程序分析公司 Flurry 的商业开发副总裁 Sean Galligan 说,Fagan 对于 Android 分裂的担忧正引起很多其他开发者的共鸣。他说:“毫无疑问,我们已经开始听到开发者们表达自己的忧虑,Android 增长速度非常快,激动人心,但这也意味着更大的工作量,特别是对中小开发者而言”。
自第一款 Android 手机 HTC T-Mobile G1面世以来,已有不少手机生产商跳上 Android 的大船。HTC 一家就有五款 Android 机型,摩托罗拉等公司也已全面转向 Android 平台。在过去两个月里,摩托罗拉发布了两款 Android 手机——Cliq 和 Droid。此外,厂商们为了有别于彼此,正自制各种用户界面,例如HTC Sense、摩托罗拉 Blur、索爱 Rachael UI。
Android 手机在硬件上也有很大的区别,比如拍照闪光灯和实体按键的有无。
Fagan 说:“有可能你打造的程序完美运行于官方的三个固件之上,但在运营商定制 ROM 上就完全崩溃。因此我们发现自己不得不让程序兼容多种固件、多种 ROM以及多种采用不同硬件的产品。”
这和 iPhone 平台由天壤之别。Apple 严格控制 iPhone 新机型及其所用操作系统的版本数量。自2007年第一款 iPhone 发布以来,总共仅有三款机型。此外,所有这三个机型都可以升级到同一个版本的操作系统。
Apple 通过 iPhone 开创 App Store 程序商店理念。Android 也提供了自己的程序商店——Market,发布第三方程序。与 Apple App Store 不同的是,开发者在 Android Market 发布程序时不需要经过审核流程。Android Market 目前有大约一万个程序,而Apple App Store 则有十万个。
对于开发者而言,Apple 的独裁政策或许很令人沮丧,但这些可以通过收益获得补偿。
“Apple 保持着严密控制,这有一个很大的好处——iPhone 开发者用不着担心分裂,为iPhone 开发程序要容易得多。”Fognl 公司所有者 Kelly Schrock 说,该公司在 Android Market 上已有三个程序。
Android版本造成混乱
Froogloid 公司的成立时间与 G1 的上市几乎同时,它的三个程序 a2b、Key Ring 和 CowPotato 目前已有10万用户。但 Fagan 说,随着 Android 的增长,维护这些程序正成为一大挑战。
Android 手机的多样化导致了一些未曾预料的结果。
一个例子,Sprint HTC Hero 没有开启 GPS 设置。a2b 程序在运行时可以触发它,但 Froogloid 很快发现 Hero 的命令和其它 Android 机型不一样。开启 GPS 设置的命令变成了开启屏幕锁设置,Chris Pick 说公司不得不为在自己的程序中为这一款机型加入特定代码。(译注:Android Market 上有大量程序为兼容 Hero 进行过更新)
Google 说自己的模拟器可以让开发者们测试程序在特定机型上运行的效果。
但它并不总是可靠,Fagan 说,“换句话说,我们用模拟器就是在无的放矢,因为我们不知道它运行在手机上时究竟是什么结果。”
Chris Pick 举了另一个例子进行解释,他们的3D游戏 Cowpotato 在模拟器上运行得一切正常,但真正运行于摩托罗拉 Droid 时却崩溃了。Pick 怀疑这是 Droid 显示驱动中的一个 bug 所导致的问题,写了个补丁解决了崩溃问题,但这并不是最佳的解决方案。
Pick说:“一旦我们不得不在代码中根据不同机型写规则,就会增大代码库,加大我们的工作量,把程序变得更繁重”。
不同的系统版本意味着功能的增减。了解这些改变并让软件向后兼容需要时间,Schrock说:“支持所有这些版本需要进行数倍的工作”。
更大的问题是自制固件和 ROM。例如 Google 在 Android 代码中提供了一个基本的主界面。但手机制造商和网络运营商总是可以修改它。有些修改很简单,比如把白色换成灰色、红色或黄色。这让手机制造商和运营商可以为自己的客户量身定制 Android 产品,这正是 Google 宣称自己“积极”支持的。
Fagan 说:“这些不是大问题。但当他们改动特定活动的控制方式时(比如用户设置和屏幕方向),就会给通过标准固件/SDK开发程序的开发者造成各种问题”。
而自制 ROM 则总是需要开发者详尽核查,Pick 说“Google 命令所有 Android 发布必须基于标准版,但这在 Google 控制范围以外”。(译注:Google 在不久前曾以自制 ROM 非法使用 Gmail 等版权程序为借口向最具影响力的自制ROM——CyanogenMod 发难,要求作者 Cyanogen 停止开发。但 Cyanogen 去掉了自制 ROM 中内置的版权程序,通过在官方 ROM 基础上进行刷机的方法绕过了法律问题。)
Galligan 说,开发者们最终必须做出艰难抉择,选择自己希望支持的产品和操作系统版本:“开发者们将必须确定程序的目标究竟是哪些产品和运营商,写出来的程序只为它进行后续开发”。
作为个人开发者,Schrock 说自己无法维持四个不同的软件版本:“在 Android 上这变得更加危险。不单单是开支x4,工作量也变大了”。他说自己不靠这些程序过活,也不希望作出选择放弃部分 Android 用户,“但我未来必须根据回报来判断这事究竟是不是值得”。