发发Android的牢骚

这些日子正在做一个手机终端的项目。作为项目的原型设计,总要自己做点东西出来看看。于是乎,考虑到现在Android的大热,而且不像iphone那样必须上专用的开发机(xcode必须要Mac系统),于是决定用Android。

进度进行的很快,有人说开发起来像Java,我觉得其实比Java来的轻松的多,所有的事件已经提前绑定在了系统里,整个过程更像是在开发一个脚本或者插件,几下子一个界面就出来了。如果你像我一样仅仅是做个原型,不在UI多做考虑的话真的是很方便。

本以为做CS结构的系统,不像做BS结构那样要调什么浏览器兼容性之类的问题。只要考虑UI和具体实现就OK了。几天开发过去,我严重鄙视了这个想法。

OK,说UI,问题来了。一开始用Google自家的Nexus One (G5)作为测试平台,所有的UI都是按照那个分辨率进行的。后来G5给了另一个兄弟测试用,自己用了HTC WildFire(G8)。那叫一个晕,所有的定位全部乱套。想要调整吧,Eclipse插件实现的“所见即所得”的功能实在是不敢恭维,生成出来的界面XML文件基本上已经封杀了肉眼能够读通的水平。最简单的方法反而是重新做一套。后来得知Android SDK 2.1以上本身就有实现此功能的解决方法,但一下子都封装到一个安装包里是不是有点怪异?不考虑到怪异版本的分辨率,480×320, 640×360, 800×480算是主流的几种分辨率,还要考虑横向纵向什么的已经有了6种可能。远不如Iphone甚至于Nokia sybiam那样的统一。

再说兼容性的问题。1.5的Moto me600差不多我用到的系统调用有一半跟2.2是不一样的。用2.2开发出来的程序可以强制安装到2.0上,而且没有任何兼容性故障(可能是我代码没有体现出来两者的不同)。但看似很简单的一个setOnItemClickListener 事件,1.5就无法实现。只能把me600刷成2.2来跑。如果是开发一个产品的话无疑要考虑到这个问题,开发成本和难度以及测试覆盖成本可想而知。这也无外乎Angry Bird之类最热门的Android应用索性直接放弃了1.6以下。

最后说说SDK库和文档的问题,手册本地化也不提了,手册被墙也和Android无关。只能说,Android的SDK只考虑到了最简单的Hello world之类的实现,对于手机上如此丰富的系统调用却根本没有提及。SDK自动生成的部分也是经常搞的你晕头转向,经常报些无厘头的错。

就说这么多。

推荐阅读:
接到一个黑盒的case:一套双
去年的DCDC,我主要介绍了基
之前收到公司一个大牛的PPT,

“发发Android的牢骚”的一个回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注

请补全下列算式: *

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据