02

Android是一个好的选择么?

出处:自己的blog http://www.evan129.com/2009/03/01/android-是一个好的选择么/

还是草稿版本,可能不少bug,待修改完善

前两天在Cnbeta上看到一篇文章 《Symbian:Google Android开源只是幌子》,我是有同感的。前阵子给一家国外运营商做关于定制Android的咨询,顺便就仔细想了下这个问题,加上在水木 MobileDev版的讨论,打算总结一下问题。不过这个坑比较大,估计会有很多拍砖的。

首先从用户角度看,Android有什么优势呢?Google的业务吧,好用的GMail客户端,和Google帐户同步联系人,日历。但是Google 最近发布了其它几个手机平台的软件,也支持了类似的功能。从硬件角度来看,我觉得至少目前仅有的一款G1体验是不如iPhone的,屏幕表现,操作手感都是不如的。优势是多了一个实体键盘。作为Palm Treo的fans,我是不太喜欢侧推键盘的。对于普通用户来说,虽然有了实体键盘,可是至今的官方升级中还不包括软键盘,输入操作都必须推开键盘才可以,这点很不方便。而对于中国用户来说,字体只支持到GB2312,很多字显示成方块。没有中文输入法,即使复制中文字进短信程序,发送后对方也显示不正常。所以不得不用第三方的短信程序。再说价格,标榜为免费的开源的操作系统,android的手机真的便宜么?德国刚上的G1非签约价是499欧。价格上面并没有体现出什么优势来。

从开发者角度来看。如果你只是一个开源爱好者,喜欢研究研究这种大型项目,看看代码,这个长处我是不否认的。如果你是靠写代码过活的,那我们来看看。我觉得一个很大的优势是,Google学习Apple推出了Google Market。这无疑将可能是一个赚钱的好途径。不过收费项目才上来两周,不好说情况怎么样。但是我个人预期,它是远不如iPhone平台的。

首先,用户群不同。Apple从来都有较好的用户群,相对来说更愿意花钱。就好像Mac上程序一般都体积很大,但它的用户不像windows用户会去抱怨开发者,而是会考虑是不是该升级成更大的硬盘。简单的说,Apple fans更偏向于怎么从非技术角度考虑,让事情尽快解决,那么,花钱能解决的问题大约就不是大问题了。何况升级点小硬件,买个小软件也不是什么大钱。相反的,Google fans大多比较geek。对技术有追求,哪天发现Google搜索不如百度好用了,这个例子可能不好,或者说出了个什么更先进点的搜索,立马会换过去,还会作为一个新发现介绍给朋友。就好像曾经Google搜索本身就是口口相传推广开的。Apple则看重品牌些。对于新出的apple产品,甚至没见过,就会想买。就是说,google本身的用户粘性不太好,只是gmail一类应用,由于用户数据在上面,是用户自己的数据把自己缠上了而已。另外,这个用户群,都多少有些技术,或者说IT方面的知识背景。于是,这些用户可以更容易的去获得盗版,破解。iPhone限制相对比较死,还得先破解下机器才能装破解的软件。Android是支持从电脑上直接装的。

说完用户群,再讲竞争关系。这其实是我第一反应想到的。Google吸引了更大一批编程爱好者,Android有更容易上手的开发环境以及需要更少的基础知识。Objective-C再简单,对大多数人来讲,也是一门新语言,Java是很多学校的基础课,Java开发者满大街都是。新手写软件,一般都是免费的。所以Android上会有大量的免费软件。曾经我做Palm上的开发,入门时也写了不少免费软件,渐渐的,有了基础后,开始做一些收费软件。这个圈子里,能做这个的不算多,所以开发出的软件能够有市场。作为新手,学写软件其实有个目标最重要,我建议,并且相信不少人的想法也是,找个现有的软件,做个一样的出来。人家要是也是免费的,可能你会觉得做的意义就不大了,所以不如找个收费软件,学着做个免费的出来,这样至少有不少人捧捧场,鼓励下,就更有动力继续了。可是Android上,会有源源不断的新手加入进来,它的门槛实在太低,至少它没要求你必须先买台苹果电脑才能做开发一样。而且吧,Google吸引的开发者中,本身就很多喜欢开源精神的,我不能说这不好,但我个人不喜欢的。培养整个群体对软件应当收费的认识,作为一个开发者,你自己做的软件去收费才心安理得。其实这对用户也不好。比如出现了一大堆练手的做的理财软件,功能都不是非常完善,但都凑和能用。不少用户会退而选择免费软件。于是,真正做好的软件的开发商相对来说收益就有减少,可能继续开发动力也不大。这是一个恶性循环啦。

有人说,平台完全开源,于是不会像微软和Apple那样,保留很多内部API不对外开放。我要说,你一定是不够了解Android。Android有大量内部包和内部类,打了@hide标签,于是不在最终SDK中出现。这些API你当然可以看到,因为它是开源的,可是你又用不了。不信你去看看 com.android.internal开头的包。内嵌的程序有用这些API,你用SDK时是不能使用的。人家的理由也很正当,这些API可能随时会变,你去使用这些是不稳定的,所以干脆不让你用好了。说到这里,顺便说下,这个平台的更新过于频繁,G1上市也谈不上很久,RC15, RC29, RC30, RC33一堆升级包出来了。确实每次都可能伴随着内部类的变化,让你也不敢去使用。还不如WM每个版本稳定好一阵子,那些偷偷发现的未公开类也可以放心地使用好一阵子。有些未公开类,M$知道大家用了,为了兼容性,不得不在以后版本也保持兼容,而不去改动接口。Google冠冕堂皇地说,这些API本来就公开了,也说明将来会变的,早说你们不该用。理由看起来还更充分一些。

那么,平台开源了,API实现都能看到了,至少对开发更有帮助吧?不见得。你是更愿意有好的文档和示例清清楚楚写明用法呢,还是打算自己去看源代码自己了解下怎么使用呢?Google的文档远比不上MSDN的。光看TextView的文档,看setText的API说明,你能猜到这个东西竟然是支持文字着色,字体改变,加链接,甚至能在TextView中嵌入图片的么?而且,不是谁都有时间去研究那一大堆代码的。很多情况下,大家不过也是打打工混口饭吃,老板给个活,按要求完成就行了。本来不外乎看看文档,调用下API,能跑了就交差了。这下好了,文档看不明白,只能去看看怎么实现的了。Android还真是个大项目,不说底层和native c lib部分,光Java framework要有个了解,也得先研究两天。不是说程序员就得是技术爱好者的。

然后,说说Android平台本身。开源不等于开放。就我感觉来看,智能平台上,除了blackberry,估计就android限制最多了,可能用词不准确,因为人家不是故意限制,就是没有设计能让你去做到而已,反正意思就是你能做的事情被限制住了。iPhone虽然提供的接口也限制很大,但至少在越狱后,用第三方的头文件,还是可以做到的,并且确实也有不少用户是越狱过的。比如说中文输入法就一度(我不确定现在行不行)在原生iPhone上是安装不了的。举例来说吧,如果是一个非当前前台的程序,你没有能力去得到整个屏幕的句柄。于是很常见的来电归属地功能就不太好实现。Palm, Symbian, WM上人家都可以直接获得系统的Window,直接绘制个字符串上去,android上说,这有安全问题,从来没有打算让你这么做。再比如,WM和 Symbian的Idle screen,就是桌面啦,WM上叫Today的那一屏,都是支持plugin。Android的Launcher就不支持,也不支持html widget应用,现有的那个虽然有添加widget,但那都是内置写死的小控件。这点上来说,应该不是故意不让你实现,估计是人家自己都没想到好的解决方案吧。虽然Intent机制可以实现大多plugin功能,但是这种需要自己处理绘制,用户操作事件的,就是想内嵌一个View进另一个程序的,目前好像还没看到解决方案。更不用说,我一直很喜欢的Palm上的“开放性”,你可以处理全局所有的用户事件,拦截处理掉本该给其它程序的事件,这样可以做出很多扩展功能来,像DA一类增强性的,都有点像hack了系统一样。Android有它的安全性考虑。安全性和扩展性大概是有点矛盾的吧。只是,限制得这么死,我觉得开发者的乐趣就少了很多。一般印象中,开源的产品,你觉得不满意,当然可以自己改。作为开发者,你拥有所有代码,你当然可以改,把上面说到的功能点都按自己期望的给做出来,改完后编译出新的ROM烧到自己机器上。可是这只能是给自己玩的而已。难道想发布一个绘制屏幕的来电归属地,就需要让用户自己刷一次机器?

前面说了,对于Java开发者来说,Android入门的门槛很低。但会是一回事儿,做好是另一回事儿。如果你已经熟练使用Java,并且深谙OO(面向对象)之道,那么,你需要好好改改习惯,看看android performance best practice,很多优化是反OO的。比如说,建议你最好直接访问对象的值,而不是用getXXX, setXXX这种方式。那么,如果你熟练了android开发,但按它的思路做,找新的非android开发的java职位时,也得重新准备准备,不然可能过不了笔试面试的基础知识关。

Google的SDK是Java sdk,虽然完全开源了,但仍然没有提供方便的写jni,以及native code lib工具。Google说,那是不需要的,你用Java写应用程序就好了。事实上呢?听说前阵子内部开发分支上的英文输入法,原来是纯Java的,最近一次更新,也改用jni实现了。还有据说,Google打算出个编辑txt文件的记事本工具,也打算用jni实现。说明android里的java效率也不是那么好的。当然,如果你只是一个很普通的应用,应该是可以接受的。曾经android刚出来的时候,有个Quake游戏运行的demo也很有名,事实上,那东西里主要还是c代码。

再来看看运营商和制造商。一般的,运营商要求也不是很多,改个主题显示下品牌,加点自有的服务进去就行了。不幸的,android连主题都不能支持,WM, Symbian一直以来都是支持的。为了改变android的主题,还需要改framework,缺点后面讲。加点应用程序一般不是什么问题。但像HTC 做WM,把很多内置程序也换了,像电话本甚至浏览器。不得不说,android这点也是不如WM的。Google07年刚发布Android时,介绍就说,你可以替换任何程序,电话本,桌面,等等。事实上,对于手机制造商和运营商也确实是有这个能力。但是Android老是升级,变化又大,这些内置的程序和系统关联大。每次系统升级,都很有可能会伴随着这些程序的变化。如果厂商自己做了更改,就需要不停地有人去维护这些代码,保持和最新android的兼容。即使merge code的工作量谈不上很大。但是作为一个大量发布的产品,是需要严格的测试的。那么,有的厂商用原生的android出的系统,比如G1,如果你改了很多程序,虽然google新的代码有可能会同时提供给所有厂商,但是你就多了merge code和测试这部分工作,少说也要一两周。那么,你的新rom的发布就会比其它厂商慢。而前面也说过,android的用户是比较geek的,有追新软件一类的癖好,久而久之,用户就可能不喜欢你这种方式,转而用原生的android系统去。前面说的,运营商想改个主题要改framework也是一个道理,这种改动,是需要经常的和google merge code,紧跟发布的。还有点不是很相关的是,因为android开源,所以大佬们都会以为是自己的好机会,目前知道的,个别运营商和制造商都有打算在自己发布的android机器上放上自己的app store。那么,作为开发者来说,你们有得忙了,乐观点看,只是要在不同的平台上发布自己的软件,更糟的情况是,可能各家的SDK都有点变化,你还需要为各款机器做兼容性测试,就像非业内人士都误信j2me可以很好跨手机平台,事实上,几乎要为各款机器做点改动,适应不同分辨率一类的问题。

还有点,android至今仍不是很成熟。一月的新代码里,短信程序才支持发送中文字符,至今官方升级还没有软键盘,更没有输入法框架,做不了输入法。 CDMA分支也在开发中。作为厂商,比如你想出款CDMA机器,或想出款适合中国人用的机器,那么你就需要对系统内部做不少改动。那么你将来有长期地维护工作,merge code,以便和android保持兼容。更糟糕的情况可能是,比如你自己费了半年时间,加进了CDMA支持,后来google也终于完成它的cdma支持了,那你打算直接用它的代码,还是维护自己旧的呢?目前看起来,甚至连OHA成员提交的代码merge进主分支都很困难,这也是说android开源不开放的一个原因。

讨论部分完毕。那么android开源了,怎么去利用这个好处呢?而且它的授权协议很好,是Apache license,你改了也不用必须再开源。曾经,大家都认为这是山寨厂商的好机会。现在想来,其实不是。Android怎么说也是智能平台,对硬件配置要求不低,一般来说,成本不可能低于一千。那么,这就和传统的山寨厂商的目标群体的接受度不同。大家觉得android对山寨厂商利好,无非是觉得这个平台免费,成本可以压低。事实上,国内的山寨厂做Windows Mobile的机器时,也是不交钱的~而真对于大厂商的好机器来说,对最终用户手上,一款三四千的机器,相差这么两百块钱授权费用,用户又不知道是哪里省出来的,也不是非常在意的。大厂商为了保持和android官方版本兼容性,也不敢大改动。我曾经有个想法就是,反正山寨厂商也从来不在意什么协议。拿android改个好用点平台出来,多加些内置软件,就算不发布SDK,不再支持第三方程序,也会受欢迎。比如说,android上有好的浏览器。山寨厂商可以完全把界面改得和iPhone一模一样,现有的仿iPhone机器大多基于MTK一类,由于平台本身比较弱,也学不得很像,比如那个浏览器就学不来。Android自身又由于苹果专利,没有在G1上打开多点触摸支持,山寨厂可以不管这些。不过现在看来,可惜受限于前面提及的成本问题,估计用户也没兴趣了,何必花一千多买个没扩展性的机器呢。

总的来讲,我是唱衰android的。

更多讨论,移步http://bbs.ifanr.com/viewthread.php?tid=1138&extra=page%3D1

没有评论

第一个在本文留言。

发表评论

名字(必须)
邮箱(不会被公布)(必须)
网址

使用新浪微博登陆

字体为 粗体 是必填项目,邮箱地址 永远不会 公布。

允许部分 HTML 代码:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
URLs(网站链接)必须完整有效 (比如: http://www.ifanr.com),所有标签都必须完整的关闭。

超出部分系统将会自动分段及换行。

请保证评论内容是与日志或 Blog 内容相关的,灌水、攻击性或不恰当的评论 可能 会被编辑或删除。

      小众论坛

      猫窝论坛

    态度

    ifanr 近期的内容调整

    Loading ... Loading ...

    最新评论

    分类目录

    推荐阅读

      订阅到iGoogle或Google Reader 订阅到鲜果 订阅到抓虾 订阅到飞鸽 订阅到Bloglines 订阅到我的雅虎 订阅到NetVibes 订阅到Newsgatar 订阅到Rojo 订阅到网易有道 通过哪吒订阅到MSN,Gtalk,Skype 订阅到QQ邮箱

      weibo

    @iflea 互助交易群


    @范小叨

    • 坐在电视前人是轻松的,坐在电脑前人是紧张的。电视是家庭生活,需要更轻松的享受。而点播和收视类似于拉取和推送,后者更轻松。RT : 大家都觉得电视不能连到网络上不对劲,但是目前包括苹果,都没有成功的把他连到网络上,这里面差了点什么呢?
    • 99美分一部片,租赁还是购买,似乎是个问题 http://www.ifanr.com/18672
    • 9.1 Apple Press Event 全记录,综合了之前的一些八卦,可全面了解现场一些精华细节,推荐阅读。http://ifanr.in/co2mjZ
    • 美国海军在测试的现实增强软件,用来训练机械维修。他们用了一个头盔,可以将计算机生成的 3-D 图像覆盖在需要维修的设备之上,将每个部件标上名称,然后给出一步步的指导。http://www.ifanr.com/18380

    友链

    功能

    小众论坛