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上打开多点触摸支持,山寨厂可以不管这些。不过现在看来,可惜受限于前面提及的成本问题,估计用户也没兴趣了,何必花一千多买个没扩展性的机器 呢。

(mar. 02增 )今天和朋友聊天,我觉得其实腾讯拿android来改改,再找家odm厂商,出款自己的定 制机会不错。反正android上嵌的几个google应用,除了gmap,腾讯都有对应的业务,替换了就是了。还能加上自己的游戏,android平台 相对来说开发容易些,又是大屏,对qq游戏来讲,还算是个易于移植的平台。

总的来讲,我是不看好android的。

 

有来有去 says:

分析的层次太注重细节了。

大局上:T-Mobile、摩托罗拉、澳大利亚电信公司、中国移动OMS、世界电信博览上各种基于Android开发的另类终端(非手机),为何他们需要一款智能OS?
尤其是摩托罗拉抛弃了自己的linux手机平台,投入多人力在Android(也是linux)上做东西

细节上:Android也是半途买来的,并不是纯粹google造。SDK就是要让开发者使用爽。触摸屏上的UI交互也已经是一套成型的风格,这都是google打造好模子,大家遵从即可实现功能(简化了开发难度)。

当然现在的SDK还有蛮多缺陷,不足。但是已经满足了基本需求,而且中文输入的问题,人家做的是英系生意,不考虑中国也是合理的。

 

paulex says:

写的不错,顶一个.

几个想法,

Android是真开源, 不是假的, 但是开源有很多种,不是一定要像Linux kernel, Apache Http server, Mozilla Firefox一样才叫开源, 开源这个词有严格定义,符合了就叫开源,不符合说自己开源有人可以告你, 因为open source是注册了商标的…Android无疑符合所有的规定, 打不打别人的patch, 是不是有自由精神, 那都是草民关心的事情, 巨头们是为了股东赚钱, 没工夫理想主义…

Android是不是会成功,要看对谁成功, 成功怎么定义 – 达到目的? 目的是什么? 手机操作系统开源讨好的是device maker, OEM, 从来也不是开发人员, 照顾一下后者只是吸引前者的一种手段而已. 我还是觉得Android很可能成功 – 即成为device maker首选的”开放”智能手机平台 – 这里的开放不是指开放源码, 是相对于不兼容其它设备的平台来说的, 比如iPhone, RIM的平台, 在这个意义上WM, Symbian就是开放平台, 也是Android最大的竞争对手. 但是这种模式是否能够成功, 即复制windows和linux在pc和pc服务器上的成功, 击倒王安电脑, 苹果机, 小型机… 我觉得很难说…然而即使这种模式失败了, Google也许仍然是成功的, 因为他这条鲶鱼很可能会借Android成功的搅浑水, 并让所有的智能平台都放上了Google服务的客户端…

 

Anonymous Reply:

尽 管没有官方的对C++的支持,但是可以通过Java JNI的方式来提高运行效率。从大局看,从开发人员角度看,我都觉得Andriod值得选择。尤其在中国,没看到几大运营商都在朝他抛媚眼嘛。他很好的满 足了运营商控制终端的渴望,使他们降低了在移动互联网时代沦为“自来水公司”的风险。技术上的暂时不成熟从来都算不上问题,想想微软当初,他的DOS操作 系统,技术上被很多大牛鄙视,后来绑上了IBM这个大款,得以发扬光大,踏上历史舞台,从此走上了康庄大道,并让无数开发人员在微软的平台下洒汗水、付青 春。是商业的运作,市场的选择,而不是技术的高低成为最终成功的判定准则。战火刚刚点燃,好戏还在后头。静观其变,让我们成为历史的见证者吧。

 

anonymous says:

可怕的不是sdk的不详尽,不是系统中当前的缺陷,不是所谓的软件上的限制,而是人心的封闭,为了利益的目的人为制造的限制

 

Jackson F says:

对于Android前景不敢苟同:不论生产商还是运营商多么不喜欢,两年之内Android肯定会在嵌入式设备市场上占相当的份额。这个是业界近期的共识,区别仅是和iphone,WM,Symbian差踞几个点的问题。

商业模式上Google的出发点和手机制造商不同,它在乎客户群和服务,并不过分专注于设备销售的收入;因此它不必完全受制于代码保密、被人抄袭、 软件授权等等传统顾虑。Google是要放长线钓大鱼的,先出不多的钱做个软件平台然后让一堆厂商抢着出手机,先有名后有利。目前看来已实现了初步预期, 今后是从哪里兑现还不好说,厂商(HTC之类)、运营商(分成)、绑定服务、广告都有可能。

 

Jackson F says:

开源问题上Android绝对比Symbian或Windows Mobile彻底多了。
作为自由开发者,可以改任何代码(c,c++,Java),当然改framework要能读透彻才行;估计Google是欢迎大家破解Android手机的,不会象苹果那样绞尽脑汁防着。
作为山寨厂商,出低端手机完全可能。加代码改代码可以随心所欲,反正没指望用户用上两年,不用考虑兼容最新版本的问题。
作为指望卖应用的公司或个人,只要跟着API跑就行了。用Internal class或c可能获得性能的提升,但无法应付版本控制和设备差异的问题。
作为大生产商问题最多,跟Google code跑累得半死,不跟吧又怕被市场淘汰。Google就像设计师,控制着工程图纸的走向和整体架构,其他OHA成员就象各个承包商或装修队,最多搞个 漂亮的橱柜,不可能让你破墙开店的。(一定要搞那自己去抄一份图纸,但等你装完了就发现款式落伍了)。普通人当然也能拿到图纸,还能添砖加瓦,只要 Google review通过就行。

 

Evan Reply:

Google可没希望被破解得连Market上的收费程序都能容易下载分发。
还是我文中说的,用户改底层的东西,只是能烧到自己手机上玩玩罢了。比如想在短信程序中加个菜单项完成一点功能,只能改了自己用。你提交给android项目,大多情况下并不会被接受的。这不是说用internal API或者resource就可以解决的问题

我说山寨低端机目前不太可行,是因为android对硬件要求还是偏高,这你可以看看我做的G1的性能测试。其实后来查了下,G1的配置不算差了,还是这么慢。

对于开源的态度,我是认为有没有是无所谓的。厂家要替换个电话本程序,加个驱动什么的,wm不是一样做?连MTK都可以。普通用户更不会在意了。

 

Jackson F Reply:

关于个人系统代码提交Android通过的问题确实存在,毕竟是Google操纵的东西,不可能自由发挥。所以给个人开发者的空间一般是应用程序 – 这就是Google的规划;给厂商的空间是一些新设备和新服务,但要回OHA就必须受制于Google。
如果写个Android应用程序那还不如用WM – 我懂你的意思,但那就要看是不是方便,用户群的大小。个人感觉Android这个东西潜力更大些。

山寨低端机已有人在做了,G1的性能问题会有其他办法改进的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值