这对于Android的爱好者来说是个好消息吗? 某些开发商认为这其实不是好消息。他们说,目前依然存在的许多问题让管理Android应用变成了一场噩梦,比如Android系统包括1.5、1.6和2.0三个不同的版本,对应的手机常规固件也有三个版本,不同型号手机之间的硬件差异也令人头疼。
对于用户们来说,这意味着网络商店中销售的应用软件存在着许多漏洞,那些应用软件也许不能在他们的手机上运行,也许即使勉强能够使用,用起来也会感觉很不舒服。开发商们说,不知不觉中,背端系统的复杂性越来越强,它们很可能会令那些应用软件获得很差的名声,对于小型企业来说,那可能是致命的打击。
专注于Android应用开发的Froogloid的联合创始人Chris Fagan说:“我们发现,我们的主要精力没法放在应用软件的升级上,而是必须让应用软件能够在不同版本的Android系统上运行以及支持各种不同的硬件。 我们并不是说Android系统不该向前发展,但是目前的状况对于小开发商或者新入行的Android开发商来说,确实是非常头疼。”
Java在上个世纪九十年代也遇到了类似的问题。这些软件原本是为了让开发商更便于开发能够在任何一台电脑上运行的应用软件,即“一次编写,处处运行”;但是开发商们发现Java虚拟机的变体以及相关硬件过多,反而造成了“一次编写,处处调试”的结果。 虽然Java仍在使用,尤其是应用于移动领域,但它并不能象最初设想的那样成为跨越平台的万能开发语言。
移动应用分析公司Flurry的业务发展副总裁Sean Galligan表示,其他开发商也提出了Android系统版本和相关硬件种类过多的问题。
Galligan说:“毫无疑问,我们将开始听到开发商的抱怨。 Android的发展非常迅猛,它有很多令人惊喜的东西,但是也还有很多工作要做,尤其是对于中小型开发商而言更是如此。”
自从宏达电子推出全球第一款基于Android操作系统的智能手机G1,其他许多不甘落后的手机厂商也已经推出了或即将推出基于Android系统的手机。仅仅是宏达电子一家厂商就已经推出了5款Android手机,其他一些手机厂商如摩托罗拉甚至完全转到了Android平台。 在过去的两个月里,摩托罗拉发布了两款基于Android系统的新手机,即Cliq和Droid。为了让自己的产品与众不同,手机厂商们开发出各不相同的用户界面,比如HTC Sense、Motorola Blur和Rachael UI。
各家厂商推出的Android手机在硬件配置上也存在很大的差异。比如,有些Android手机配备了照相机闪光灯,有些Android手机配备了硬件键盘,而另外一些Android手机则没有配备闪光灯或硬件键盘。
Fagan说:“你或许可以开发出一款能够完美兼容这三个固件的应用软件,但是当你在运营商的ROMs上运行它的时候,它却完全不能运行了。 因此,我们发现我们开发的应用软件必须能够兼容多种固件、多种ROMs和不同硬件配置的多种设备。”
这与iPhone平台形成了鲜明的对比。苹果牢牢地控制着新版iPhone和操作系统升级的发布。 从2007年第一台iPhone问世到现在,苹果一共只推出了3款iPhone。所有的iPhone用户都可以迅速对手机升级,使用同一个版本的操作系统。
虽然苹果通过iPhone首创了应用网店的想法,但是Android也推出了销售第三方应用软件的类似网店Android Market。与苹果的应用网店不同,Android开发商在Android Market发布应用软件时无需经过审批过程。现在,Android Market大约有1万应用软件,而苹果的App Store大约有10万应用软件。
对于开发商们来说,虽然苹果的专制控制令人反感得很,但是他们在App Store上发布应用软件可以获得更高的收益。
Fognl的所有者Kelly Schrock在Android Market上发布了3款应用软件,他说:“苹果牢牢地控制着它们能够做些什么,这样做具有一定的优势。 IPhone开发商不用担心版本不兼容的问题,为iPhone开发应用软件也相对容易一些。”
Froogloid几乎是在首款Android手机上市销售的同时创立的,如今它的3款应用软件即a2b、Key Ring和CowPotato已经拥有超过10万的用户。但是随着Android系统的发展,管理这些应用软件变得越来越困难。
Fagan说,基于Android系统的硬件设备的多样性引发了许多意料之外的结果。
例如,Sprint HTC Hero在发布时,它的GPS设置是关闭的。用户在使用手机的时候,a2b应用软件会激活GPS功能,但是Froogloid很快发现他们使用的标准指令在Hero上获得的反馈信息与在其他Android手机上获得的反馈信息是不同的。 Chris Pick说,手机没有启动GPS设置,而是关闭了“屏幕解锁模式”设置。他要求Froogloid在他们的应用软件中为具体设备编写自定义码。
谷歌表示,它已经推出了仿真程序,允许开发商在模拟设备上测试它们开发的应用软件,这样它们就可以知道应用软件是如何运行的。
但是Fagan认为,这种办法并不总是有效。他说:“从某种意义上来说,我们过于相信仿真程序了,因为我们并不知道应用软件在设备上到底是如何运行的。”
Pick解释说,例如Cowpotato可以在仿真程序上顺利运行,但是在摩托罗拉的Droid手机上运行时就会崩溃。Pick怀疑Droid手机的显卡启动程序中存在一个漏洞。 他说,他可以专门编写一个补丁来解决这个问题,但是这并非最佳解决方案。
Pick说:“当我们不得不在应用软件代码中编写基于手机型号的规则时,我们的软件代码中就会增加更多的代码,这样就增加了我们的工作量,同时也让应用软件变得臃肿不堪。”
操作系统版本的不同意味着新功能不一定能够被成功添加。Schrock说,了解这些变化并让应用软件向后兼容需要一定的时间。 他说:“支持所有版本的操作系统就需要多花好几倍的时间和精力。”
另一个更严重的问题是固件定制化的问题。例如,谷歌提供了一个用Android代码编写的基本主显示屏。 但是设备厂商或网络运营商总是会修改那个主显示屏。有些那些修改很轻微,比如用灰色替换白色,或用换色替换红色。 那样可以让手机厂商和运营商将Android调整得更方便用户使用。
Fagan说:“虽然改变不是很大,但是当他们开始从根本上改变特定活动是如何被控制的时候,它就会给基于最新版本的固件或使用最新软件开发工具来开发应用软件的开发商们带来很多麻烦。
开发商们将不得不作出艰难的抉择,选择他们希望瞄准的目标和他们想要支持的操作系统版本。
他说:“开发商们必须判断出哪些设备和哪家运营商具有更强的竞争力,然后再针对那些设备和运营商开发应用软件。”
Schrock说,没有足够的员工,他是无法同时支持四个不同版本的Android操作系统的。
Schrock说:“为Android系统开发应用软件的风险越来越大,虽然开发成本还不至于呈4倍得增加,但是也会有许多工作要做。”他不想作可能令其应用软件用户数量减少的艰难抉择。
他说:“我必须判断我能从中获得多少收益,然后再决定是否值得那么做。”