【IT168评论】手指是我们与生俱来的终极定点设备,而各种智能手机利用它们创造了自鼠标以来最具创新意义的用户界面。从NOKIA的塞班辉煌到HTC的卓越性能,从黑莓的实用便捷,到iPhone的颠覆享受,这些都让我们看到移动开发平台相较于PC开发更加辉煌和绚丽的一面。
而且伴随着开发的日趋完善,各种营销手段也是让开发者感到得心应手。譬如Iphone的App Store吸引了大量的开发人员热情参与,而Android的开源则是激发了群众无限的创造力。
作为一名即将步入职业生涯的毕业生,应该如何有效的参与这一盛宴呢?哪一个开发平台,现在最火,最好上手?作为新手,整个互联网上存在着各种各样关于手机开发的文档,往往很困惑、很多;就算是高级玩家也需要从本身需求出发对手机的开发有个大概的了解,才可能进一步的挖掘出开发的潜能。这样,我们又该如何学习呢?
好,带着这些疑问,先让我们了解下智能手机的几种主流开发平台:

▲开发平台图解
Android开发平台
android一词的本义指“机器人”,当时同时Android也是Google于07年11月5日宣布的基于Linux平台开源手机操作系统名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
2008年9月22日,美国运营商T-Mobile USA在纽约正式发布第一款Google手机——T-Mobile G1。该款手机为宏达电制造,是世界上第一部使用Android操作系统的手机,支持WCDMA/HSPA网络,理论下载速率7.2Mbps,并支持Wi-Fi。
Android 作为谷歌企业战略的重要组成部分,将进一步推进"随时随地为每个人提供信息"这一企业目标的实现。我们发现,全球为数众多的移动电话用户从未使用过任何基 于 Android 的电话。谷歌的目标是让(移动通讯)不依赖于设备甚至平台。出于这个目的,Android 将补充,而不会替代谷歌长期以来奉行的移动发展战略:通过与全球各地的手机制造商和移动运营商结成合作伙伴,开发既有用又有吸引力的移动服务,并推广这些 产品。
开放手机联盟的成立和 Android 的推出是对现状的重大改变,在带来初步效益之前,还需要不小的耐心和高昂的投入。但是,我们认为全球移动用户从中能获得的潜在利益是值得付出这些努力的。
如果你也是一个开发者,并对我们的想法感兴趣,就请再给我们一星期的时间,届时谷歌便能提供 SDK 了。如果你是一名移动用户,只需再等一段时间,我们的一些合作伙伴计划在 2008 年下半年推出基于 Android 平台的电话产品。
如果你已经拥有一部你了解并喜爱的电话,请登录 mobile.google.com ,确保你已经安装谷歌手机地图、Gmail 以及其他一些专为你的手机开发的精彩应用。谷歌将继续努力,让这些服务变得更好,同时也将添加更有吸引力的特性、应用和服务。
Windows Mobile/Phone开发平台
微软推出的Windows Mobile操作系统最初被视作是与Palm OS竞争的产品,然而时至今日,Windows Mobile的应用已经超过Palm,开始显露出掌上设备王者的风范。去年发布的V5.0做出了很多实用的改进,包括更加智能化的Word和Excel版本、直接邮件技术和持久的数据存储。
因为微软的大力推广,Windows Mobile吸引了众多的同盟者,每年有无数的第三方软件面市。如果你希望自己的Windows Mobile手机具有某项功能,那么市面上应该有足够的软件供你选择,不过大多数都是英文软件。找到这些软件不难,Handango和 PocketGear的网站上就提供了各式各样的Windows Mobile软件,难的是购买和注册,抛开昂贵的费用不说,一般情况下都需要一张国际信用卡才能能完成购买手续,所以目前这对于我们中国用户来说非常不方 便。
在各种应用软件中,游戏是每个人都不能离开的东西,Windows Mobile平台下拥有很多优秀的游戏,比如掌上版的《帝国时代》、《雷神之锤》、《神秘岛》,它甚至还能够通过加装Dos模拟器运行经典的《仙剑奇侠传》。
Windows Mobile作为软件巨头微软的掌上版本操作系统,在与桌面PC和Office办公的兼容性方面具有先天的优势,而且WM具有强大的多媒体性能,办公娱乐 两不误,让他成为最有潜力的操作系统之一。当然,Windows Mobile的缺点也很明显:软件使用复杂、系统不稳定、硬件要求较高,这些都是不可忽略的。
对于Windows Mobile来讲,更为重要的是,今后Windows Mobile平台将会沉睡在微软的历史长河中,成为微软移动历史的见证。微软下一代的Windows Phone7 成为新一个备受追捧的开发平台,而刚刚在欧洲发布的Windows Phone7手机也被疯抢一空,足以见得微软新系统的魅力。而对于微软来讲,Windows Phone7更重要的是将会抗起微软移动业务的大旗,完善微软云端的部署。可以说,微软的Windows Phone7平台是微软云战略的重要一步,不容有失。
iPhone OS开发平台
iPhone OS 或 OS XiPhone是由苹果公司为iPhone开发的操作系统。它主要是给iPhone和iPodtouch使用。就像其基于的Mac OSX操作系统一样,它也是以Darwin为基础的。iPhoneOS的系统架构分为四个层次:核心操作系统层(the Core OSlayer),核心服务层(the Core Serviceslayer),媒体层(the Media layer),可轻触层(theCocoa Touchlayer)。系统操作占用大概512MB的存储空间。
iPhone OS由两部分组成:操作系统和 能在iPhone和iPod touch设备上运行原生程序的技术。由于iPhone是为移动终端而开发,所以要解决的用户需求就与Mac OS X有些不同,尽管在底层的实现上iPhone与Mac OS X共享了一些底层技术。如果你是一名Mac开发人员,你可以在iPhone OS发现很多熟悉的技术,同时也会注意到iPhone OS的独有之处,比如多触点接口(Multi-Touch interface)和加速器(accelerometer) 。
iphone的开发过程需要从基础知识了解开始,然后熟悉iPhone 开发框架(SDK)与各种工具,当然还要清楚如何搭建和配置开放环境。当这些都准备好后,结合自己的创意,申请IDPlicense,就可以开发出各种 apple app了,开发apple app往往需要一个循序渐进的过程,这里的系列教程和资料就非常有帮助了。最后当然是就是将自己的iphone 应用上线了.并作好iphone应用营销宣传。
Symbian开发平台
众所周知,Symbian操作系统是 诺基亚一家独大的局面,尽管摩托罗拉和三星等厂商也生产基于Symbian的手机产品,但都没有形成规模,只是零星的尝试而已。诺基亚作为手机市场占有率 第一的国际品牌,近年来加速推广其旗下的智能手机,智能手机在其整体手机出货量中所占的比重不断攀升,而且欧洲各国智能手机销量的前三名全部都是诺基亚的 产品。
Symbian操作系统提供了一系列个人信息管理(PIM)功能,包括联系人和日程管理等,还 有众多的第三方应用软件可以供选择。不过因为Symbian操作系统通常会因为手机的具体硬件而作改变,这也就意味着在不同的手机上它的界面和运行方式都 有所不同,所以我们做出了以下的结论。
正像我们前面提到的,你使用 Symbian操作系统的经历将取决于你的电话是哪一款。比如说,如果你使用的是具备全键盘的诺基亚9300,就会发现Symbian操作系统相当容易使 用,比Palm或者Windows Mobile要方便很多。不过如果你使用的是直板手机诺基亚6680,它的操作界面就非常复杂,会让你感到困惑不已,最要命的是输入数据的速度,绝对比你 所能想象到的还要慢。总的来说,在这几个操作系统当中,Symbian是最难上手的一个,但具体有多难上手,这还要取决于你手机的硬件。
Palm OS开发平台
四年前掌上电脑操作系统的霸主是Palm,那时的中高端PDA清一色都是Palm和索尼的产品,而且几 乎都是境外带回来的水货。不过如今Palm操作系统如今已经风光不再,当年索尼宣布退出国际PDA市场(实际上等于宣布停止生产Palm操作系统的 PDA,因为索尼的全部PDA都采用Palm系统),对于Palm来说不亚于一场雪崩,而且事实上索尼的退出也确实成为Palm由盛转衰的分水岭,此后 Palm的市场分额逐渐被Windows Mobile所蚕食。
最雪上加霜的是,早就已经发布了的Palm OS 6却无人问津,甚至包括Palm公司都没有任何采用升级版Palm OS的意愿。结果就是市面上所有采用Palm最新操作系统的机器都运行着三年以前的Palm OS 5(大多数是5.4版)。不过幸运的是,老系统总有一点比新系统好——即使Palm操作系统仍然保留着多媒体播放性能弱的缺点,但它却是市面上最稳定的操 作系统。
谈到第三方软件的绝对数量,那么Palm OS仍然保有着巨大的领先优势。Palm的用户可以在超过20,000个应用软件中选择适合自己的东西,用来扩展手中Palm机器的功能,不过这些软件绝大多数都是英文。
虽然说20,000这个数字令Windows Mobile望尘莫及,但它们的差距正在稳步地缩小。而且巨大的差距并不能说明在Palm平台上运行的软件更加优秀,只是数量比其他平台多一些而已,但更多的数量确实意味着更多潜在的功能。
BlackBerry开发平台
“黑莓”BlackBerry是美国市场占有率第一的智能手机, 这得益于它的制造商RIM(Research in Motion)较早地进入移动市场并且开发出适应美国市场的邮件系统。大家都知道BlackBerry的经典设计就是宽大的屏幕和便于输入的QWERTY 键盘,所以BlackBerry一直是移动电邮的巨无霸。正因为是正统的商务机,所以它在多媒体播放方面的功能非常孱弱,也许它在未来应该着力改善这个弱 点,因为手机功能的整合是大势所趋,人们不会只满足于单一的功能。
BlackBerry开始于1998年,RIM的品牌战略顾问认为,无线电子邮件接收器挤在一 起的小小的标准英文黑色键盘,看起来像是草莓表面的一粒粒种子,就起了这么一个有趣的名字。应该说,Blackberry与桌面PC 同步堪称完美,它可以自动把你Outlook邮件转寄到Blackberry中,不过在你用Blackberry发邮件时,它会自动在邮件结尾加上“此邮 件由Blackberry发出”字样。
BlackBerry在美国之外的影响微乎其微,我国最近已经在广州开始与RIM合作进行移动 电邮的推广试验,不过目前看来收效甚微。大家都知道,我国对于电子邮件的依赖并不像美国人那么强,他们在电子邮件里讨论工作、安排日程,而我们则更倾向于 当面交谈。可以说BlackBerry在中国的影响几乎为零,除了它那经典的外形。
J2ME开发平台
Java ME 以往称作J2ME(Java Platform, Micro Edition )是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java API。它和Java SE、Java EE一起构成Java技术的三大版本,并且同样是通过JCP(Java Community Process)制订的。
开发Java ME程序一般不需要特别的开发工具, 开发者只需要装上Java SDK 及下载免费的 Sun Java Wireless Toolkit 就可以开始编写Java ME程式,编译及测试, 此外目前主要的IDE(Eclipse 及 NetBeans)都支持 Java ME 的开发,个别的手机开发商如 Nokia 及 Sony Ericsson 都有自己的SDK, 供开发者在开发出兼容于他们的平台的程序。
在了解了主流的平台后,读者如果已经对一个开发平台一见钟情,那么进一步的如何学习,就是当务之急。
以Android为例,这几个问题是从网络上汇集而来的。希望读者能有所启发。
1、我们知道Android是使用Java语言进行应用开发的,对于一个入门者,想要开发Android知识有哪些要求?需要哪些知识储备?
答:对于该问题确实有不少人咨询过,始终有一点可以肯定,那就是Java基础越好,学习Android应用开发就越容易,越轻松。没有Java基础也可以同时学习Java和Android(这需要根据自身情况来看,我个人不推荐这种方式)。因为Android应用程序使用Java语言来编写,使用JDK中的Javac编译器进行编译,从而产生 Java字节码(.class文件)。
然后,这些文件还要被转化成Android的.dex文件,这部分转换工作包括一些优化和压缩等技术,由 Dalvik虚拟机来完成,应用开发人员只需要使用Android提供的API来完应用程序编写即可,所以在学习Java基础时就可以针对Android 所引入的这部分来学习,概括一下就是:Java标准语法规则、Java提供的一些工具内库。另外,Android的界面布局使用xml语法规则,所以有必要了解一下xml相关的知识。
2、已经有一定经验的Java开发者,想要走进Android进行应用或者游戏的开发,需要重新学习哪些知识?
答:Android引入了大部分Java API及其规则,其实在Android平台中很多应用程序功能的实现是既可以使用标准的Java API,也可以使用Android API,比如网络通信、I/O模块等都能同时兼容,但是Android也增加了一部分专门使用于Android的API,比如图形图形,IPC机制等。
那么对于有Java经验的开发者所要学习就主要在Android所新增这部分API及其工作原理。其实我在写《Android应用开发揭秘》时就考虑了这部分有一定Java经验的开发者,同时对应用和游戏进行了分别讲解,几乎介绍了Android平台所新增的API的使用,另外该书还特别适用于有一定 J2ME经验的开发者。
3、之前进行.NET或者PHP开发的程序员转向Android开发有什么快速的方法吗?
答:这个问题就好比我已经可以驾驶小桥车了,该如何去驾驶大客车或者大货车呢?因此需要学习的就是大客车或者大货车与小桥车。Android是一个操作系统,因此其应用程序编写的规则、工作原理和机制都需要符合其系统要求,所以这部分开发者应该从该平台不同的规则、构架、原理和机制出发,学习Android所提供的API。对于PHP转 Android的稍微麻烦一点儿,需要首先学习面向对象的编程(学习Java)。
4、Android开发是针对移动设备的,与传统的软件开发相比有哪些不一样的地方需要我们注意?
答:这个问题,我觉得用“灵活”两个字来回答再好不过了,传统的软件开发受到诸多因素的影响,比如:设备、API限制等,而Android本身就是一个开放源码的操作系统,这样就使得开发者可以很轻松的通过源码来解决很多传统软件开发中遇到的非常痛苦的问题。
说实话,我在当初接触Android的时候,第一感觉就是这个系统太灵活了,是一个适合开发者根据自己的思路来创新的平台,比如:对于某些功能的实现,他并没有限定开发者必须使用某种方式或者某个API来完成,而是让开发者自由的发挥,这就是与传统软件开发最大的不同,但是需要注意,在开发过程中,我们要始终保持不违背Android系统的权限、机制和原则。
5、能不能为Android开发的初学者推荐一条学习路线?在这条线路中有哪些重点需要关注?
答:对于一个初学者首先应该学习Java基础,熟悉Java这种编程语言,这部分比较重要将直接关系到学Android的时间进度,当你能够独立写出部分Java程序时,可以开始进入 Android的学习了,进入Android的学习应该首先掌握Android的系统结构,应用程序框架,应用程序必须的各个模块,当然这部分内容可以直接参考官方提供的开发入门文档,当入门之后可以开始深入Android各个模块进行学习,了解各模块的功能、机制,从而对其提供的API接口进行熟练且灵活的运用。
6、这样的路线走下来大概需要多长时间?从事应用开发和游戏开发的学习路线和重点是否会有所不同?
答:时间的问题就需要根据个人的不同情况来衡量,一般对于没有任何Java基础的开发者来说至少需要2月以上来学习Java,因为这也将直接影响后期对Android的学习,有了Java基础,对于 Android的学习就简单很多了,几天时间都能完成Android入门。
入门简单,但是入门之后的深入需要一个长期的经验积累。对于应用方向的开发者需要重点掌握Android的各个组件(包括各个组件的组合运用)、网络通信、音频和视频这些模块,对于游戏开发方向则应该把重点放在图形图像方面包括2D 和3D(Opengl ES)渲染。对于3D游戏的开发我们和华?屡嘌低?黄鹜瞥隽恕?ndroid 3D游戏引擎实现》视频教程,全面的介绍了使用Opengl ES来开发3D游戏。
7、Android的应用,与ava程序有什么不同之处?
答:首先从运行环境层次来分析,Java程序在拥有Java虚拟机的情况下就能运行,而Android应用程序不仅需要Dalvik虚拟机来解释,而且需要很多系统组件及API的支持。另外每个 Android应用程序都是相对独立的,不能在一个应用程序中调用另一个应用程序。因此这些都是传统Java程序开发者需要注意的地方,Java编程的 IDE和工具确实比较多。
但是Google选择了Eclipse并提供了基于Eclipse的插件ADT使得应用程序的开发变得非常方便,相信大家都知道,开发应用最困难的就是Debug了吧,在Android平台除了Eclipse本身的调试工具之外,ADT还提供了众多辅助调试的功能,比如:ddms,模拟器工具等。同时,如果我们的应用程序需要使用NDK来开发原生程序,那么Eclipse也可以很方便的集成C\C++开发环境等,总的说来使用Eclipse和ADT来开发应用程序是个非常完美的组合,当然不排除可以使用其他的工具来开发!
9、目前除了Android SDK,还有NDK。NDK主要应用在哪类项目的开发?是否值得我们关注和学习?
答,Android平台的第三方应用程序均是依靠基于Java的Dalvik特制虚拟机进行开发的。原生SDK(NDK)的可以让开发者更加直接的接触Android系统资源,并使用传统的C或 C++语言编写程序,并在程序封包文件(.apks)中直接嵌入原生库文件。
NDK主要用于一些具有大量逻辑计算和高性能的图像渲染的工作,比如我们要开发款大型的3D游戏,那么如果使用Android SDK通过Java来开发,速度和性能上很难满足我们的要求,这是就可以使用NDK通过C\C++来开发原生的程序来处理这些渲染,可以极大的提高我们游戏的性能。所以我们很有必要对NDK进行学习。
在问题之后,也有笔者在iPhone开发论坛Mobpub上的征求贴:
http://www.mobpub.net/viewthread.php?tid=6183&page=1
以开发iPhone OS为例,大概的主要思想就是:要求要对基础有了解,也就是Object-C、并且提出了一个很实在的提高途径:“先攒一个能装mac os的电脑,买个2手的ipod touch, google找基本移动入门的书,研究2-3月,注册一idp发布自己做的。整几个app就知道了”。
如果能去相关公司实习的话,这就是更好的机会了。如果有这样跟着高手学习的机会一定要好好把握。
总而言之,在移动开发领域这样一个高速发展的行业,相比于传统PC开发有着很大的发展空间。投身于此,除了要明确学习的目的。再就是要随时保持着学习的心态,时刻准备更新自己的知识储备。持之以恒下去,就一定会在这条路上越走越远。而在路边的景色,也会越来越好。
希望广大同学能和我一样,共同进步。