由于android系统是完全开放的,每个程序员都可以优化或者修改系统代码


Android背后的无线服务提供商越多,就越有可能为了超越对手而互相排挤。运营商和手机制造商已经开始在Android手机的外观和感觉方面展开竞争,并且已经开始鼓励第三方开发者为自己的手机量身设计应用,并排挤竞争对手。这样所导致的结果便是所谓的软件代码分裂(splintering of software code)。在这种情况下,开发人员需要针对一款软件开发多个不同版本,而非集中精力开发单一项目。因此,如果开发者希望自己的软件能够在更多的手机上使用,就需要为其开发更多的版本。


所谓“代码分裂”,有三个不同的层次。


第一种分裂:厂家改动标准 API
厂家私自改动了 Google 提供的标准 API 。比较极端的例子是,开发者看着 Goolge 的文档,写了个程序创建地址簿。结果, Create 方法,在 HTC 的手机上,被厂家改为了删除。。。
这种改动的后果不言而喻。 Google Market 上的程序,将无法在这样的 Android 手机上正常运行。付钱买了软件的用户,含泪看着空空的地址簿,肯定愤怒的去找开发者算账。而开发者并没有做错什么。(唯一的过错是测试不足吧。)
这种分裂,是真实而且严重的威胁。
Google Market 还未成长起来。既无重量级软件,也无有分量的公司。里面的人的发言,对于硬件厂家,相当于耳旁风。所以,如果出现这种情况, Google 应该替他们说话。保障开发者的权益,就是保障 Android 应用丰富的美好未来。
不过,硬件厂家也不可能成心和开发者闹着玩。卖友求荣的事情不稀奇,损人不利己的做法不多见。他的机器没法用 Google Market 上的软件,也不是什么光彩的事情。因此,一般情况下,厂家倾向于追加新的 API 。而不是改动标准的。所以这种分裂的例子很罕见,举来举去,就那么几个。
第二种分裂:实现偏差
手机的有些功能, Google 负责定义,但是如果功能硬件密切相关,具体的工作就留给硬件厂家去完成。不是 Google 懒,这是软件工程的一种控制技巧,目的是把事情交给最适合的人去完成。Google 定义的 API 叫接口。厂家的工作叫实现。
上百款 Android 手机,分属几十个厂家,那么一个接口返回的结果,就可能有几十种实现。全部返回同样的结果,是Google 的期望,但是现实中往往不尽如人意。
比如图像处理芯片会提供压缩图片的功能,开发者全部通过定义好的接口调用。但是 HTC 搞了个新机器,换了图像处理芯片,那么它返回的结果,可能就和开发者手中的 G1 看到的,有些偏差。
出现这种问题的责任,可以归结于 Google ,或者,硬件厂家。也许是接口定义和文档不够清晰,也许,是实现没有遵循定义。
个人意见,这也是小问题。
如此复杂的软件工程,不可能事事如意。出现偏差,是必然要付出的代价。对于开发者, Test and Debug Anywhere ,是软件开发的常态,无需抱怨。
当然 Android 的手机泛滥之后,他不可能款款测试。不过,反正 Android Market 没有审查机制,他可以根据用户的反馈迅速对应问题。
解决第二种分裂的办法,是明确的定义,清晰的文档和及时的沟通。Google , 手机厂商,开发者们合作的时间长了,类似的问题应该会减少。
第三种分裂: 风格分裂
很多文章中“代码分裂”的真正所指,其实是风格分裂。
手机厂商拿到 Google 的系统,做了二次开发,加了更漂亮的壳,产生了一个新的代码的分支。但是重点其实不在代码上。新的分支还是符合 Google 的设计初衷的。厂家可以自己定义和扩展一些东西。开发者们也知道什么是标准的,什么是由厂家自己追加的。代码的分支增加了,危害并没有增加。
唯一令人不爽的,是一个华丽解锁动画之后,点个 Google Market 的程序,出现的是 Android 本身朴素的 UI 。
所以,这种分裂,与其叫做代码分裂,不如叫做风格分裂。
风格分裂其实在 App Store 上的程序上也存在。 甚至苹果自己的内置程序都是如此。 Email 还算和系统贴近。天气则完全不同。
如果要把风格分裂看做一个问题,那么解决的办法大概有以下几种。

第一种是技术上的:软件工程可以把程序的表现抽象出来,交给别人去完成。不是什么新东西, S60 上,第三方程序,就可以使用系统主题的某些元素了。
第二种办法是商业上的:只要有钱赚,开发者会为某些手机,开发 UI 特别华丽的版本。你肯付钱?那么风格自然有保证。
对于这个问题, Google 也肯定有过考虑。但我猜测,他的方案不是上面任何一个。这个提供全球最好搜索体验的公司,打算利用"用户"来解决这个问题:
让他们忍了。
 
Android 走的是数量和功能路线。 Google 期望的是提供海量的,覆盖各种价格和规格的手机。同时,给你强大的应用。如此,可以横扫大部分市场了。如果有人要求统一的视觉感受,设计或者感受上的和谐?对不起,请去找苹果。