06
Dec

Android : 所谓分裂

本文源于我和 Android 大牛 FirstFan 的一次聊天。我从中受益良多,也印证了一些长期的怀疑。

分裂,一听就不是好词。但最近关于 Android 的报道中,代码分裂这个词出现频率越来越高。以至于作者们几乎形成了某种反射:一比较 Android 和苹果,就冒出“分裂”。类似一比较韩寒和郭敬明,大家就想起“抄袭”。

Android 的模式是 Google 的巨大挑战。一个 OS ,众多厂家二次开发,用在无数的设备上,兼容更多的软件。其中的各种因素,都是动态变化的。(OS , 厂家二次开发的API ,硬件,第三方软件。)但软件工程的训练和实践告诉我:这不是不可能的。比我的个人经历更有说服力的,是 IBM 开放 PC 标准。他的成功不容置疑。 Android 的模式,一定程度上,是开放 PC 标准的翻版。只不过野心更大,更激进,也更乱。

目前关于代码分裂的报道,同样乱的要命。有时把不同层次的事情混成一团。比如开发版本不兼容运行版本这种 iPhone 上也存在的事,也被当成了代码分裂的例子。

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

第一种分裂:厂家改动标准 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 期望的是提供海量的,覆盖各种价格和规格的手机。同时,给你强大的应用。如此,可以横扫大部分市场了。

如果有人要求统一的视觉感受,设计或者感受上的和谐?对不起,请去找苹果。

最后的话

所谓分裂代码,并没有分裂祖国那么吓人。一定程度上,是允许的。

一方面,第三甚至第二种分裂,通过技术和工程上的控制可以改善。另一方面,他们的出现,是 Android 模式的必然代价。要求开源,认可广泛的二次开发的同时追求统一风格,是不太现实的任务。

好在,苹果的高度统一有好处,但是乱,也有乱的优势。 Google 出卖了统一风格的同时,也换来厂商参与的积极性。

划清底线,留有空间,通过授权调动别人。对比苹果的控制和审查,也许是更高水平领导艺术。

现在, Google 玩的还略显笨拙。但是他在一个不断上升的市场中,本钱也足够。坚持下去,迟早学到需要的技能吧。

可以预见的未来,这三种分裂,仍然会伴随 Android 。结果呢?也许是有点恼人的用户体验, Android 机型广泛覆盖各个领域,市场份额节节攀升。

当然,会有挑剔的用户为此扔掉 Android ,选择 iPhone 或者 Blackberry 。但是这些人,是否值得 Google 花更大的力气去争取?

厂家间的多赢,就是如此。被谋杀的,原来只是用户的钱包。

Google 和 苹果,本是同谋。

    分享:
移动互联网/苹果/ERP/SAP。 写过:「 iPhone 可有设计哲学」,「领先五年的迷思」,「以前没有 iPhone OS,以后没有 Mac OS」,「对社交说不」,「 MSNS :移动社交网络 」,「云书店,新阅读」⋯⋯

20 Responses

  1. 前排学习,不懂

  2. 恩,分裂没什么大不了的,一点点兼容性的差异只是局部的瑕疵,方向还是受到控制的。ui的差异倒无所谓,本来就该允许差异,本来触屏的操作方式差不多,iphone和android的操作方式又能有多大差异呢。

  3. “让他们忍了。:)”这句话太赞了。。。
    从android1.0用过来的用户们能够深切体会到google这项战略的意义

  4. 说一句话,也许会惹来非议,但的确忍不住:

    Android vs Iphone,民主 vs 集权。

    是不是颇像,这就像一个硬币的两面?

    *批评我之前,不要说你么你有看到apple集权之美,呵呵。

  5. 学习了 Google是想以量取胜

  6. 代码分裂还是用web程序解决最完美,

    当然首先得需要一个高效率 完美的浏览器。

    • 浏览器其实一样有代码分裂的问题。很多网站为IE和FF准备了两套代码。

    • 怪兽的意思,可能是推Chrome浏览器。Android上,浏览器几乎是Chrome最大。

      • @于是仁, 并非如此,例如很多人都在 android 手机上安装了UCWeb 浏览器。又有很多人安装了 Opera 浏览器。话说我身边很多用 android 的,基本没有大量使用 android 原装浏览器的。

  7. 前文有句话也是应对分裂的一种办法:网络程序可以为终端用户提供统一的体验,不论机型和平台。

  8. Android的分裂,已经造成了开发上的很多问题,这是为什么这个被不断的提起,这个其实不是吓人,而是现实的恐怖.

    很赞同文章中分裂的不同层次,但是这种分裂层次其实无分轻重,带给用户和程序员的都是非常糟糕的体验.

    例如我们最近做的一个Android游戏,基于OpenGL,在Magic上跑没有问题,在Hero上就问题多多,更不用说Galaxy或是Droid了,每一个都有一些自己的问题.导致开发周期变的很长.

    同意楼上 Cocal 说的 iPhone比较集权. 但是请解释一下Google为啥代表民主行么? Android是开源的,但是这跟民主有关系么? Android Market是没有审核程序,但是有了Google不喜欢的程序,他还是想删就删. 如果你还觉得民主,建议看一看Android Market的T&C.

    我觉得其实这篇文章的总体的意思其实是说Google只要能用Android占领大部分智能手机市场就行了,不需要考虑别人在上面开发应用程序.简单一点,就是Google的对手是Symbian WM,而不是iPhone.

    不管怎样,作为一个软件开发商,虽然我们目前有一大部分收入来自于Android Market,但是我们还是倾向于iPhone多些.毕竟对于我们来说,开发一个不错的Android app的时间,差不多可以开发3个iPhone的了,这个,我想就是分裂之于开发商的现实吧.

    • @proper, 好吧,同样作为开发者一员的我,想请问一下,如果拿硬件配置去说分裂,难道Windows 不同样是一个分裂的平台?

      一台电脑,有可能是1024×600的分辨率,也有可能是1920×1200的分辨率,甚至有可能有几台显示器。

      一台电脑,有可能显卡支持硬件1080p解码,也有可能不支持。有可能有光驱,也可能无光驱。

      好吧,在这些不同的平台下面,Windows 程序员这么多年不也顽强的活下来了?开发 android 程序难道能比开发 Windows 程序更困难么?

      其实有一点是很现实的:在每个市场,只好遵守每个市场的游戏规则。苹果的集权制度,使得每个苹果手机高度统一,同样,这个规则也使得苹果的终端永远只是小众产品,不可能成为大众产品。——android 的目标是大众,程序员需要认识到的是:几乎所有的面象大多数大众的软件产品,都必须面临不同配置和在不同平台下独立测试调试的问题,因为大众对产品有不同的需求。

      如果你的产品硬件软件平台非常唯一,那么你的产品就只能服务于某一类群体,而任何情况下,单一的一类群体在整个大众中都只能占有一小部分比例。

  9. 第一种分裂是不能接受的;第二种是google问题,没有定义好接口,让厂家实现驱动,如ms定义directx,ati和nvidia实现各自的驱动;第三种不能以pc有多种分辨率作借口而不理会,因为手机屏幕小,软件基本上是全屏状态下运行,和pc完全不同,这也是手机相对pc讲究ui的原因,也是iphone一炮而红的法宝。

在线回复

您填写的邮件地址仅管理员可见 *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

    爱范消息 · Exploring Leading Tech

    轻量、专注的消息,关注移动互联网、创投、智能设备的新鲜资讯。需各种邀请码,也请加入列表。

    申请加入请填写 email

    Windows Phone 精华回顾

    Recent Comments

    • Loading...

    @iflea 爱互易

    ifanr 寻找坐言起行的伙伴,有超强执行力和韧性的战友...iSeek 公榜