资深软件工程师谈 Android 开发经验
Android 一词的本义指“机器人”,同时也是 Google 于 2007 年 11 月 5 日宣布的基于 Linux 的开源手机
操作系统的名称,该平台由操作系统、中间件、用户界面和应用程序组成,是首个真正为移动终端打造的
开放并且完整的移动平台。2008 年 9 月 22 日,美国运营商 T-MobileUSA 在纽约正式发布第一款 Google
手机,即 T-MobileG1,从那个时候起,Android 的时代就真正的来临了。
从 Android1.0 至今经历了多次的版本更新,其中重要的变更是 1.5、2.0 和 2.2。而其他的版本更新相
对而言并不是那么重要。另外,由于每次更新都会多少改动包括~Dalvik在内的底层模块,同时牵扯到~SD
K,导致了一些程序需要跟着~Android版本进行变动。对于相对较为保守的开发人员而言,快速的版本更
新将给他们带来越来越大的限制。在这种情况下,Android开源的意义就显得不是那么大了。
无论如何,由于 Android 与 Google 服务的紧密捆绑,这款操作系统拥有了得天独厚的优势。通过
Google 强有力的支持,很多事情在 Android 上都会变得很简单。另外需要特别提出的是,Android 是一款
基于互联网的操作系统,在可以连接上互联网的情况下,一款 Android手机可以发挥出比其他手机更多的
能力。而在没有网络的情况下,Android 手机并不比其他的手机出色,尤其是娱乐性相对于 iPhone 可以说
是逊色不少。
作为开发人员,应当在学习并深入了解 Android 之后,在自己的软件中,将 Android 的优势发
挥出来,同时通过一些手段去弥补 Android本身的缺陷或不足。下面来看一下 Android 拥有的特点吧:
与硬件交互非常方便,包括摄像头、GPS等,都可以简单的操作。
拥有自己的运行时和虚拟机,优秀的内存管理能力。
提供丰富的界面控件供开发者使用,允许可视化开发,并保证 Android 平台下的应用
程序界面一致。
提供轻量级的进程间通信机制。
支持无界面的后台服务类应用程序。
支持高效、快速的数据存取方式。
在这些特性的支持下,试图在 Android 下开发一个应用不会太过困难。事实上,一个稍有~Java
经验的开发人员,都可以快速的上手进行~Android 的开发。而开发的核心,一直以来也是围绕着 Android
手机几个大的特点来进行的,其中就包括了触摸屏、摄像头、GPS 模块、互联网功能、语音输入、Google
账户等。需要说的是,如果一位~J2ME工程师想转行做 Android,那么他将付出的代价比 J2SE 或 J2EE 工
程师要大得多。毕竟 Android 所支持的是基本完整的 J2SE 的子集,反过来再看 J2ME 就会觉得它的功能太
弱了。
除了 Java 外,还有许多语言支持 Android的开发,比较为人所熟知的有 Scala,而作为~Android 本身
的底层语言,C/C++的作用也完全不可忽视。而目前的开源社区内,已经有一些牛人在尝试让更多的语言
可以开发 Android 应用。比较有代表性的可能是 KoushikDutta,他已经解决了在 Mono 平台下,让 Dalvik
调用 Mono代码的问题。或许在不久的将来,.NET下的所有语言,都有可能借助 Mono 跑在 Android 上,
这是一件值得让人期待的事情。
语言已不是问题,那还有什么会成为问题?也许很多人会说“经验”。诚然,经验决定了一
位开发人员能否快速地、流畅地完成开发工作,也决定了软件的鲁棒性,Bug 的数量、等级和修正问题的
返工次数。不过我认为,这些都不重要,哪怕是一个~Android行业的新人,一边查询文档一边做开发,虽
然效率会很低,但是一样能把项目做完。在~Android下,开发技术几乎是没有瓶颈的。那么瓶颈在哪里呢?
事实上,在用过很多软件后,就会发现,有很多软件并不好用。很多用户不愿意用某个软件,也并不是因
为软件没有技术含量或是满足不了需求,原因很简单,就是不好用。