前言
---------------------
最近正在策划个LBS的项目,于是入手了部HTC G8, 水货1700. 也不知道是否心理作用,突然发现博客园首页满是Android的天下。刚开始还是挺开心的,感觉自己找到队伍了,可是研究Android和IPhone久了,渐渐发现Android存在很多的问题。
Android与IPhone哪个赚钱?
----------------------
IPhone的一夜暴富故事已经遍布大街小巷,光光一个愤怒的小鸟已经赚了1000w了,但是Android呢?同样的游戏仅仅收了100w的广告费,而且听说水分还很大。我和同事就专门研究了这个问题,得出一下结论:
1. IPhone是个金矿,适合开发手机应用类、游戏类软件。针对细分市场。例如游戏、某领域的图像处理软件等等。因为老乔为我们铺了一条很漂亮的致富道路,并且设立了一定的门槛。
所以IPhone的软件都是上档次的,开发团队都是上档次的,玩家也是上档次的。用户付了款,理应该收到合理的服务。 双方都存在着责任义务,这个市场也必然能够发展下去。
因此,如果哪位希望开发个东西出来卖钱,或者接外包项目支付,必选IPhone.
2. Android处于并长期处于xxxx的初级阶段。Android的定位就是开源免费,入门门槛很低,基本上的懂java就懂android了;而且没有一套严格的审批发布制度,某个阿猫阿狗心血来潮放个半成品也可以说是百年大作。
我就去了android的应用市场,上面50%以上的应用都属于“垃圾应用” 。各位用过的朋友一定有同感,随便借个图写个字就是一个游戏,简直惨不忍睹。
因此,选择了Android,就选择了平台开发,如果是做SNS平台、LBS平台,以免费为切入点,再提供增值服务的,Android是不二选。
顺便补充一下,要开发IPhone就要装苹果系统的虚拟机,再下载个2g的api开发包,听说发布到软件市场还要认证云云;因此自认为不是精品的,可以考虑一下如何退而求其次了。
Android的编程
--------------------------------
本人花了几天时间研究了下android的api,有些地方写的不错,比如用了MVC的思想(个人感觉有点PureMVC的味道),前端xml描述,使用统一的xml注册界面控件,后端通过getxxx获取控件;不同界面之间通过消息机制传递(Intent);初看下去貌似不错。
但是!!老子要说的是,Android的API有很大部分被Overarchitecture了(架构过度)。提供了一个轻量级的架构足够了,但是google貌似不满足,于是使用了各种的继承关系,一大堆的XXXView, XXXActivity出现了,连一个数据库调用都会用到基类的方法,例如:
光这个startManagingCursor 已经让我非常恶心了,在架构上就是我数据库调用关你Activity屁事,为什么要从base里面取?会不会还有很多隐讳的方法?
如果要轻量级,就应该从helper访问,架构上就是Composition VS Inheritance. 如果玩过UML的就知道大牛们永远推荐Composition而不是inheritance,因为后者只会让项目越来越庞大和混乱。
但是问题就是这种隐讳的方法在android demo里面很多,特别有个notes的demo,简直就是个典型的反例( anti pattern)。
好啦,我的确看到这种代码很不爽,也很不爽为什么要new 一个 intent,然后传入稀奇古怪的常量去实现通讯。这种自由不应该被如此约束。
各位看官准备开足马力向我发炮前,我小结一下,android虽然表面上用了java的语法,但是其编程思想被深深的限制在一种特定的模式里面,因此开发android会有一定的学习曲线,而不能迅速的调用自由。
HTML5!!!
---------------------------
正当我准备默默的接受android的凌辱的时候,突然想起来,曾经还有个HTML5的小孩貌似半死不活的。于是立马查看了资料!令我非常兴奋的是,目前大部分智能手机全部支持HTML5!(实践证明,偶的G8浏览器能流畅的运行HTML5网页)
这绝对是个天大的好消息, HTML5除了各种稀奇古怪标签外,还支持获取地理位置、本地数据持久等。而且,跨平台!
我简单的对比了Android开发和HTML5开发。HTML5支持几乎所有最炫的前端效果,纯js编程足够应付,html的页面表现形式几乎没有学习曲线。
因此,如果不涉及重力感应、偷偷获取手机用户的联系人、偷偷开启wifi等,HTML5足够应付了大部分的开发应用了。
小结
-------------------------------
android天生就是个穷苦命,要在android开发出精品应用软件还不如直接投入IPhone的怀抱。
因此各位准备加入android大军的朋友们,此刻应该稍微反思清醒一下,既然是免费软件,信息共享应用居多,为什么不选择HTML5?
最后,我以“街旁” 的客户端为代表,说个反例。我反编译了街旁的客户端,发现里面大部分代码都是“浏览器代码”,典型的请求响应模式,但是“街旁”的技术小白估计脑子一下子没有转过来,选择了android开发,大小2.3m不用说了,而且版本更新起来超级麻烦。
各位,三思三思啊!