总结一下手机开发平台的学习指南、教程和资料总结一下,方便大家参考。
手机客户端软件开发最大的困难就是平台不统一,手机开发平台太多。
手机可分为智能手机开发和feather phone手机。开发平台可分为开放式平台和封闭式平台,开放式平台包括symbian、windows mobile、linux、Android、BlackBerry、j2me、brew等,支持手机应用程序通过OTA下载和安装;封闭式平台包括MTK、展讯、TI、飞利浦等。下面分别介绍。
1. Symbian:
Symbian平台为目前智能手机市场的老大,智能手机全球市场占70%以上,在欧洲和亚洲占绝对优势,只是在美国市场份额少得可怜,希望今年nokia在美国发力,赶上其它智能手机。根据UI风格的不同,Symbian分为s60和UIQ两个平台,其中nokia使用s60平台,索爱和moto采用UIQ平台。Symbian平台由于发展时间较长,又是市场老大,目前中文资料也较多,不像几年前刚接触时只有英文资料。以下书籍值得推荐:
《SYMBIAN OS软件开发开发--应用C++开发智能手机应用程序入门》(其中UI部分为UIQ平台),
《Series 60 应用程序开发》(以s60平台为主,重点推荐)
《Symbian OS C++手机应用开发 (第2卷)》
另外今年将出来一本有关uiq3.0的新书,值得期待。
关于symbian的开发网站和论坛:
诺基亚论坛:最好的symbian论坛,
http://discussion.forum.nokia.com/forum/forumdisplay.php?f=6,其中还有中文论坛。
UIQ官方论坛:http://developer.uiq.com/
Symbian公司中文论坛:http://developer.symbian.com/forum/forum.jspa?forumID=37
NewLC网站:http://www.newlc.com/
索爱uiq官方论坛:http://developer.sonyericsson.com/category.jspa?categoryID=3
索爱uiq中文论坛http://developer.sonyericsson.com/forum.jspa?forumID=133
2.windows mobile:
智能手机全球市场中windows mobile占12%左右市场份额。开发与windows平台类似,所以熟悉windows开发的能很快上手。目前没有较好的针对windows mobile的书,经典书籍《Windows 程序设计(第5版)》对于开发win32程序依然是最好的,经典的书就是牛啊!虽然pocket pc支持MFC,但smartphone不支持,所以为了更好的移植,用win32开发较好。由本书做基础,再参考windows mobile的sdk以及示例代码,应该能很快上手。
关于windows mobile的开发网站和论坛:
Windows mobile中文社区:http://www.winbile.net/BBS/
Pocket pc forum:http://www.windowsmobiledn.com/forum/
微软官方网站:http://www.microsoft.com/windowsmobile/developers/default.mspx
3. linux:
智能手机全球市场中linux手机仅占可怜的4.4%市场份额。原来moto还出过不少linux手机,如A768、A1200、E680、E2、E6、V8等,07年8月份还信誓旦旦预测60%手机采用Linux OS,但moto后来回购了UIQ的股份,又与微软合作,还加入了google的开放手机联盟,看来要抛弃自己的linux平台了。另外,moto的策略是linux+j2me的模式,虽然采用linux os,但并不对外开放linux的sdk,只有和moto合作的厂家才能获得native linux sdk,所以导致目前linux手机开发的资料和论坛较少。虽然有民间linux高手破解了moto的linux的sdk,可以开发native linux的程序,但native linux的程序不能直接安装在moto的linux手机上,还必须安装一个插件,这对普通用户又是难以跨越的一个门槛。所以个人觉得native linux手机的开发将走向末路。大部分linux手机的ui开发都是基于QT,关于QT开发,可参考《C++ GUI Qt3编程》、《精通Qt4编程》,如果有moto官方的sdk,参考API文档以及一些示例代码,将可以较快上手,如果没有官方的sdk,那就要话很长时间hack了。目前没有很好的关于linux手机开发的论坛,个人推荐陈罡的博客http://www.cublog.cn/u/26691/,内有moto a1200开发随笔,对于熟悉和了解手机native linux开发有很大帮助。
4. MTK:
MTK最近几年异军突起,近70%的国产手机采用MTK的芯片和平台,黑手机更几乎是MTK的代名词。国内厂家只有夏新没有采用MTK的方案。MTK的模式名为“Turn-key”的全面解决方案,厂商采用了这个方案,只需要加一个手机外壳即可成品——这能大大降低了出货时间,一般厂家只修改界面、铃声以及增加一些应用软件。有关MTK平台的介绍,见环球企业家杂志的文章“国产手机操纵者联发科的秘密”。
MTK是私有平台,目前没有书籍介绍MTK平台,所以只能从网上查找MTK的资料。以下资料大家可以从网上获得,对于了解MTK很有帮助:《mtk 训练课程.pdf》、《MMI Platform Source Code Training.pdf》主要是MMI界面开发介绍、《MMI Resource & Customization Tool.pdf》MMI资源工具介绍。
最近,MTK平台MMI设计牛人FUGUI自己编写了一本有关mtk平台MMI开发的实例教程,书名为《MMI实例培训教程》(本书大家通过Google下载到),此书深入浅出,全面的介绍了MTK平台MMI开发的各个方面,通过本书,开发人员将能很快进入MTK平台开发领域,实为MTK平台MMI开发的圣经!MTK平台的操作系统为nucleus,有关nucleus的介绍网上有一篇文章《Nucleus实时操作系统分析报告》。MTK平台主要用C语言开发,所以要熟悉MTK开发,首先必须熟悉掌握C语言,MTK的sdk与vc6集成,MMI的各控件和窗口之间通过回调函数实现通讯。
关于MTK的开发网站和论坛:
我爱研发网:http://www.52rd.com/ 上面几篇文章和书籍都能从本网站找到。
手机研发论坛:http://www.1mp.cc/bbs/index.asp
5. 展讯:
展讯平台07年也发展很快,利用MTK下半年PA放大器缺货的机会,趁势而入,抢走mtk很多市场份额。展讯的开发模式和MTK的很类似,基本也是给厂家提供整体解决方案,与MTK的差别见此链接。国内主要是夏新、联想、文泰等采用展讯平台。展讯平台采用的嵌入式操作系统是threadx,关于threadx的有一本中文书《嵌入式实时操作系统的多线程计算:基于ThreadX和ARM》。同MTK平台一样,为封闭平台,开发语言为C,开发环境为vc6, MMI的各控件和窗口之间与windows类似通过消息进制实现通讯。另外也没有书籍介绍展讯平台,以下资料值得推荐:
《Spreadtrum_SAP.ppt》
《MMK_Kernel软件API接口说明书.doc》
《MMK_Window_Table开发说明书.doc》
《展讯平台MMI窗口开发说明书.pdf》
《展讯手机平台软件简介.pdf》
关于展讯的开发网站和论坛:
我爱研发网:http://www.52rd.com/ 上面几篇文章都能从本网站找到。
手机研发论坛:http://www.1mp.cc/bbs/index.asp
6. J2ME:
J2ME平台为手机上运用最广泛的开放式平台,绝大部分手机均已经支持J2ME了。关于J2ME的书籍数不胜数,个人推荐以下书籍:
《j2me技术手册》
《J2ME开发大全》
《J2ME移动应用程序开发》
关于J2ME的开发网站和论坛:
J2ME开发网:http://www.j2medev.com/Index.html
中国Java手机网:http://www.cnjm.net/
以及各手机厂商的官方java论坛
7. Brew
Brew 的全称是无线二进制运行时环境。Brew平台是高通公司开发的,从无线应用程序开发、设备配置、应用程序分发以及计费和支付的完整端到端解决方案中的无线应用程序开发部分。目前绝大部分CDMA手机都支持Brew平台。学习Brew平台,首先需要熟悉c语言。学习步骤和方法可参考” BREW高手之路-解析BREW学习过程”。
学习书籍:
《深入BREW手机游戏开发》
《BREW 技术开发与应用》
这些书虽然不够深入,但对于入门还是可以参考的。
关于Brew的开发网站和论坛:
Brew官方论坛:http://brewforums.qualcomm.com/index.php
8. Blackberry,Android,iPhone
黑莓公司BlackBerry手机和Google的Android手机均只支持java开发。苹果的iPhone不支持第3方开发,只能开发网页,据说将来开放sdk,值得期待。
BlackBerry的开发网站和论坛:
BlackBerry开发者指南:http://www.cnblogs.com/confach/category/36451.htmlBlackBerry官方网站:http://na.blackberry.com/eng/developers/community.jsphttp://bbs.maxpda.com/forum-184-1.html
Android的开发网站和论坛:
http://www.androiddev.net.cn/bbs/
http://www.androidin.com/http://www.androidcn.net/
iPhone的开发网站和论坛:
一群苹果fans成立的网站:http://apple4.us/
http://bbs.maxpda.com/forum-190-1.html
http://lordhong.javaeye.com/blog/153315
http://lordhong.javaeye.com/blog/152774
9. 其它Feather phone平台
其它feather phone平台,如TI、飞利浦、英飞凌(Infineon)、飞思卡尔(Freescale)、Broadcom、Skyworks等平台,由于平台私有,并且不提供第三方sdk,所以也没有相关资料和文档,希望有了解的朋友介绍一下。
DIY的冲动
现在手机能做的事越来越多,你可以随意更换铃声与桌面,还可以从网上下载各种Java软件和应用程序。手机制造商对消费者个性化口味的试探也令人眼花缭乱,索尼-爱立信认为人们需要MP3播放器,摩托罗拉认为人们需要iTunes手机。然而,手机的未来只是市场朝分众模式发展吗?有人不这么看。手机领域和PC、互联网领域日渐靠拢,但还有一个根本的不同——一切都是整机化、商品化的,任何新的技术可能性,用户只能等待巨头们的行动,而后者需要以有利可图为前提。
来自英国的通讯工程师苏吉·帕特尔(Surj Patel)对此非常不满。一年前,他就在博客上写道:“我想要一个Linux手机,这样我就可以用我想要的任何语言来编程。我想进入呼叫控制,我想进入数据层。我不想为一个开发软件花上3000美元,也不想接受遮遮掩掩的功能。我是个开发者,是个骇客,我想让我的电话做我想要的事,让我得到我想要的应用。”在这篇博客中,他发出了惊人却颇具叛逆精神的口号:“如果你不能和他们一起干,就打倒他们。”
苏吉现在是一位自由职业者,专门从事手机和传媒技术创新。1993年,他就在BBC研究新媒体,1999年参加了BBC内容创新团队的组建,研究新媒体形态的整合。后来他在麻省理工学院的媒体实验室和英国Orange电信公司的研发实验室工作。
马萨诸塞州TagSense传感器公司的工程师德瓦·西塔拉姆(Deva Seetharam)是苏吉的合作伙伴。他是2005年年中为商品手机开发射频标签读码器时对现有的手机体系产生不满的。他的研究中难度最大的是界面而不是硬件,然而他发现:不支付昂贵的特许费,手机制造商就根本不提供界面和应用编程接口的细节。“不管是用户、研究者,还是骇客都没有制造任何东西的自由。”他说,“所以我说,好,我来做个东西,让大家都可以按自己想要的方式定制手机。”
苏吉和西塔拉姆将自己的手机称为TuxPhone,Tux显然取自Linux操作系统的企鹅logo。不过这两位印度裔工程师还有另一个精神来源,他们把自己的工程称为KhadiTech。Khadi是一种印度家织土布,因圣雄甘地掀起的非暴力不合作运动而闻名。
虽然苏吉和甘地都是古吉拉特邦人,他和西塔拉姆都认为在手机这件事上也需要同样的自给自足精神,但面对手机这个如此强大的产业,甘地的精神当然已经不合时宜。苏吉和西塔拉姆的思想仍然是Linux式的,最大的兴趣在于让使用者有更大的自由。回顾历史,30年前苹果电脑的创办人史蒂夫·乔布斯和史蒂夫·沃兹尼亚克在车库里“自制电脑”时,没人知道后来PC时代的辉煌,但在移动通讯领域,进化顺序恰好相反,直到街头人手一部手机时,才有人来自制手机。
苏吉认为:服务商有一千条理由不让你有一台可编程的手机,有些理由说是为你的财务安全,其实主要是为他们自己的财务安全。因此他表示:“与其说我要的是个手机,不如说我想要个可以开发的平台。有了你能控制的平台,你就会有一千个可能。”
自己做一部手机成本并不高,从市场上买齐现成的部件总共需要大约400美元。苏吉说:“这在5年前还是不可想象的。”SIM卡当然也要买。西塔拉姆说:“你会发现,做一个Linux手机只需要一些基本硬件知识、Linux编程和驱动知识、基本机械设计知识,主要难度在于不同部件的组装。”这就是为什么市场上出售的手机精心设计,功能齐全,成本却只有你的一小半,而你“可能需要一个数百万美元的实验室,才能将所有的东西集成起来”。苏吉说。
虽然音质不好、个头太大、半小时就能耗尽电池,但不管怎样苏吉他们做出来的要算个手机。2005年12月10日,还没来得及装扬声器、麦克风、键盘和显示器,西塔拉姆就急不可耐地用Tuxphone拨通了自己的手机,第二天装上扬声器和麦克风,他第一次清楚地听见了声音。虽然他们对给人欣赏并不感兴趣,最近还是有个叫格列哥的工业设计师从荷兰发来邮件,主动给他们介绍制造非常小批量的塑料机壳的方法。但苏吉承认:我们不是专家,只是出于热情和一点手艺。至于是否大家都来自制手机,苏吉表示:我只是第一个承认可以做到这一步的。
省钱不如挣钱
做个并没有省钱的手机不是苏吉真正热衷的。2006年4月初,一项称为Freeswitch的技术使老式电话网和采用VoIP协议的网络电话得以连通,4月18日,苏吉就在VoIP-News网站发表了题为《Freeswitch是大爆炸的导火索吗》的文章。
电话和网络连接起来并不是第一次,但与Skype不同的是,Skype是专利技术,采用自己的应用软件和协议,而Freeswitch是开放源代码的,可以包含在一个网页内。这使苏吉兴奋地想象了一系列创新应用,比如建立一个基于网络的专用分组交换机,为所有电话用户提供GoogleTalk。
苏吉等人相信:如果手机软件变得更加开放,将会聚集起一个为它编写应用软件的程序员群体。苏吉说:“世界上最好的研发团队就是那些程序高手,那些骇客。只要让他们能够做,他们就会动手。”有了一批自由软件,就能使手机跟电脑一样富有弹性,越来越多的专业玩家将创造出很多前所未见的功能。
尽管网络电话技术正进入黄金时代,但连接不是免费的,保证服务质量也需要成本。苏吉等人的理想最终还是要回到电信增值服务的领地,只不过小软件带来的创新业务可以依附于更大的运营商或增值服务商,从而坚守网民对免费服务的心理期待,使得这类技术创新显得特别富于自由的理想主义色彩。
这一点在苏吉等人开办的Ringfo网站上体现得再明显不过。当你在任何地方买书和CD时,用任何一部手机或座机拨打一个免费号码,输入国际标准书号或UPC号码,就能得到它的新货和二手货价格,还有读者评价甚至图像等信息,从而使你淘到最合算的书和碟。Ringfo的数据都来自网上购物巨头亚马逊,它只在网上购物成交时向亚马逊收取少量佣金。目前价格比较信息的范围已经扩大到亚马逊上销售的任何产品,甚至有人利用这种价格信息买到低价书和CD,然后拿到网上卖。难怪苏吉说:“我不是个无政府主义者,我不想危及任何人的生计。”
自由与不自由
其实,在手机和电信服务这种巨头争霸的领域,苏吉这种力量的确谈不上危及什么人的生计。联想集团创新设计中心产品设计总监李凤朗说:在硬件上,手机与电脑的兼容机不可同日而语,费时费力的自制手机最多维持在与业余无线电爱好者类似的氛围中。软件上的创新如果要落实到电信增值服务上,也已经不是Linux最初那样的草根革命。哪怕是一个人的公司,技术全部依靠外包,最终也是做产品的公司行为。而且这种行为仍主要表现为小公司寄生在运营商后面,靠的是快,花样多,而运营商有更大的蛋糕。
对Linux式的理想,李凤朗认为:“手机与Linux不是一个量级的,手机的应用软件已经很微观了。做自由软件将让做应用软件的人受益,但手机的应用软件是受运营商制约的。因而在手机领域,所谓开放源代码,也是产业对产业,不是产业对个人,没有办法变成一种精神,也不存在对抗性。”
苏吉等人也非常清楚,现在的自制手机还离不开电信运营商的网络,这也是他对电话与网络互通兴奋的原因。有了这种可能,手机在后台是连到电信还是互联网是没有界限的。用李凤朗的话说,就是“上了互联网就撒了欢了,成了非常自由的东西”。然而对电信运营商来说,这种威胁并非始于几个手机自制者,而早就存在于互联网产业内,要应对也是针对后者而非前者。难怪美国最大的无线通讯运营商Cingular Wireless的发言人表示:“只要合于规范许可,人们进行任何实验都很不错。”
同时,李凤朗认为:要解决与互联网的连接问题,本地平台要升级,中间的无线上网要连上,互联网的口要打开,这些也都不是靠个人想象,而是社会性的行为,背后是巨大的社会利益的瓜分问题,这些利益厂家也会看到,用户单靠创意,不具有撼动这些后台利益的可能。当然,在美国成熟的商业环境下,一个很好玩的创意,大运营商也可能支持,利益就有更多的价值转换可能。长远来看,手机领域所有的东西也一定会越来越个性化和公开,但草根的力量毕竟难以根本改变资本秩序。技术的发展脱离人的本质需求,总会被扭转回来。同样,技术的发展脱离资本的压力,也总会被扭转。