百度空间 | 百度首页 
 
查看文章
 
ZT Android 是一个好的选择么?
2009-03-01 21:08
发信人: Evan (回京啦,还是北京好), 信区: MobileDev
标 题: Android 是一个好的选择么?(草稿)
发信站: 水木社区 (Sun Mar 1 20:05:45 2009), 站内


转自自己的blog:
http://www.evan129.com/2009/03/01/android-%E6%98%AF%E4%B8%80%E4%B8%AA%E5%A5%BD%E
7%9A%84%E9%80%89%E6%8B%A9%E4%B9%88/
欢迎指正,把这文章完善下



还是草稿版本,可能不少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的。

--
╱┐     ──┐              ╱       ╱┬╱┬
┌┬┐ ──╱─ ╱ ┼ ╱┬ ├┐╱┐    ╱╲    ╱ ┐   ┼ ╲│╱
└┴┘     │    │┌┐ ╳ ├┤☉│ ╱──╲   '╱   /├ ──┐
╱│☉     ┘    │└┘     └┘ ┘   ╲╲╱   ╱┌┐ │ ──┤
    └─┘                               ───     └┘     ──┘


※ 修改:·Evan 于 Mar 1 20:17:30 2009 修改本文·[FROM: 119.161.167.*]

类别:默认分类 | 分享到i贴吧 | 浏览() | 评论 (0)
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu