2008-3-16 15:43
U206
symbian时代来临,年薪百万!!!大家进来看看
移动通信是继计算机和互联网之后,推动全球经济发展的又一股强劲动力。中国07年底手机用户高达5.5亿,手机已经成为绝大多数人必不可少的工具之一,并且随着科技的发展,手机集成的功能越来越强大,已经成为一种及通讯、娱乐、商务、理财等多种功能于一体的便携通信和信息处理平台。
Symbian平台是全球占绝对优势的手机平台(没有“之一”),全球市场份额约为72%,在国内的市场份额也达69.3%之高(如市场占有率第一的Nokia的几乎全部手机均采用Symbian平台),然而,在市场份额上占绝对优势的Symbian OS在开发者数量上却相对较少。由于国内系统、深入地从事Symbian开发的培训非常少,绝大多数的程序员都是通过书本、网站等渠道自学,既缺乏效率又容易走弯路,大家都来这里一起讨论问题一定会解决。
随着手机智能化程度不断提高和国内3G部署进度的加快,业界不仅需要大量的Symbian开发人员,而且对他们的专业能力要求也越来越高,现在选择这条道路无疑是非常明智的选择:Symbian开发的岗位主要集中在北京、上海和广州等一线发达城市,同时从薪资方面来看,专业Symbian开发人员目前月薪普遍都在8000元以上,1到1.5万元的也很常见。
手机 : Symbian操作系统
Symbian由摩托罗拉、西门子、诺基亚等几家大型移动通讯设备商共同出资组建的一个合资公司,专门研发手机操作系统。而Symbian操作系统的前身是EPOC,而EPOC是 Electronic Piece of Cheese取第一个字母而来的,其原意为"使用电子产品时可以像吃乳酪一样简单",这就是它在设计时所坚持的理念。
Symbian操作系统在智能移动终端上拥有强大的应用程序以及通信能力,这都要归功于它有一个非常健全的核心-强大的对象导向系统、企业用标准通信传输协议以及完美的sun java语言。Symbian认为无线通讯装置除了要提供声音沟通的功能外,同时也应具有其它种沟通方式,如触笔、键盘等。在硬件设计上,它可以提供许多不同风格的外型,像使用真实或虚拟的键盘,在软件功能上可以容纳许多功能,包括和他人互相分享信息、浏览网页、传输、接收电子信件、传真以及个人生活行程管理等。此外,Symbian操作系统在扩展性方面为制造商预留了多种接口,而且EPOC 操作系统还可以细分成三种类型:Pearl/Quartz/Crystal,分别对应普通手机、智能手机、Hand Held PC场合的应用。
Symbian是一个实时性、多任务的纯32位操作系统,具有功耗低、内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS、蓝芽、SyncML、以及3G技术。最重要的是它是一个标准化的开放式平台,任何人都可以为支持Symbian的设备开发软件。与微软产品不同的是,Symbian将移动设备的通用技术,也就是操作系统的内核,与图形用户界面技术分开,能很好的适应不同方式输入的平台,也可以使厂商可以为自己的产品制作更加友好的操作界面,符合个性化的潮流,这也是用户能见到不同样子的symbian系统的主要原因。现在为这个平台开发的java程序已经开始在互联网上盛行。用户可以通过安装这些软件,扩展手机功能。
在Symbian发展阶段,出现了三个分支:分别是Crystal、Pearl和Quarz。前两个主要针对通讯器市场,也是出现在手机上最多的,是今后智能手机操作系统的主力军。第一款基于Symabian系统的手机是2000年上市的某款爱立信手机。而真正较为成熟的同时引起人们注意的则是2001年上市的诺基亚9210,它采用了Crystal分支的系统。而2002年推出的诺基亚7650与3650则是Symbian Pearl分系的机型,其中7650是第一款基于2.5G网的智能手机产品,他们都属于Symbian的6.0版本。索尼爱立信推出的一款机型也使用了Symbian的Pearl分支,版本已经发展到7.0,是专为3G网络而开发的,可以说代表了当今最强大的手机操作系统。此外,Symbian从6.0版本就开始支持外接存储设备,如MMC,CF卡等,这让它强大的扩展能力得以充分发挥,使存放更多的软件以及各种大容量的多媒体文件成为了可能。
Symbian按版本来分,继2005年二月Symbian推出一款新的手机操作系统软件OSv9.0,到目前为止已先后有了6.0、6.1、7.0、7.0s、8.0、9.0几种版本。1999年3月Symbian推出了Symbian5.0操作系统,它的主要内核集合了网络,无线文字,电子邮件,名片薄以及个人信息助理,同时还具有支持标准网络页面的浏览器,配合java语言的支持,使得Symbian可以运行小型的应用程序。不过这个版本采用的机型甚少,基本上与EPOC没有太多的差别。
Symbian 6.0则在5.0的基础上增加了,GPRS、WAP1.2浏览器以及蓝牙技术的支持,用户可以运行第三方基于C++和J2ME开发的程序。而Symbian 6.1则是和Symbian 6.0相比主要增加了对USB的支持。Symbian 6.0的主要特点是: 支持语音通话和数据通信 ,支持Bluetooth和WAP ,配备安全性功能(SSL,HTTPS,WTLS) ,采用16bit Unicode,支持多语言显示 ,采用“PersonalJava 3.0”和“JavaPhone 1.0” 。
Symbian 7.0则支持多模式和3G手机(专区),可以让制造商们可以面向全世界推出可以运行于所有网络之上的Symbian OS手机,而且可以不对代码进行重大改动的情况下就可以重新使用许多目前已有的软件应用。7.0包含一些新的通讯、消息、联网和应用开发技术,并对一些与安全和认证相关的功能进行了改进。Symbian OS 7.0的其他功能包括:支持灵活的用户界面,例如Nokia的Series 60;支持几种音频/图像格式和许多面向游戏开发人员的API;全力的加密和认证管理,基于安全通讯协议(包括HTTPS、WTLS和SSL)及认证的应用安装;和Over-the-air(OTA)SyncML同步支持。
2004年2月,Symbian在授权LG等公司的时候,发布了Symbian8 .0版本。该版本改善了实时系统性能,提高了原有操作系统的兼容能力。此外,Symbian OS 8.0的软件工具改进了远程接入控制系统功能,运用调节装置消除手机用户使用增值服务时会受到的干扰。这个系统包含了绝对现代化的多媒体和Java设备,支持多种标准,其中包括JSR118, CLDC1.1 (JSR139),MobileMedia (JSR135),3D图像数据(JSR184), JTWI 1.0 c(JSR185)。最后,新版OS还支持SDIO。
2005年二月,英国著名手机软件制造商Symbian推出一款新的手机操作系统软件OSv9.0,它支持更高像素数码相机与三维游戏动画。该操作系统软件对运行环境要求较高,目前运行在由英国芯片开发商ARM提供的快速处理器芯片,并且需要相关设计与其它工具的支持来帮助手机生产商在开发其它版本时能够节约时间和降低成本。该软件可以处理200万像素的数字图片,甚至能够向无线耳机传送立体声音乐,更可喜的是,它不需要同步软件就能够从PC上导出MP3文件。
Series60是智能手机中应用最广泛的系统版本。Series60系统还分为6.0 OS、7.0 OS和8.0 OS三个版本。区别Series60的最直观因素在于屏幕的分辨率,Series60支持的分辨率为176*208像素,但以后S60还会支持240*320像素、352*416像素等。S60是拥有最多第三方软件或游戏的界面。
识别Series80界面最简单的办法就是看手机是否支持全键盘,例如诺基亚高端系列的9210、9300甚至9500,都采用全键盘的。识别Series90的最简便方法是:会采用触摸屏幕,分辨率也高达640*320像素。Series90应该是手机游戏、娱乐的最强平台,但因为采用Series90界面的手机型号太少,第三方软件的支持很少,所以S60依旧是玩家首选。
S40或S60是指诺基亚手机的上层平台。S60都是智能手机,所用底层操作系统是Symbian。诺基亚128*128屏幕都是S40 1.0。而128*160是S40 2.0。
另外S40中,3100支持java MIDP 1.0,所以最大支持64KB的java;6230支持java MIDP 2.0,所以最大支持128KB的java40和60,包括90,还有以前的30,都是针对与nokia不同的操作系统而言40,是nokia自行研制的手机操作系统,面对于中低端客户,支持kjava的开发,其处理器效率不高,内存偏低,屏幕大小128*128。
S60,是基于Symbian 操作系统,也就是以前的epoc,其处理器为arm9,处理效率很高,内存颇大,屏幕大小为208*176同时支持kjava和C++的开发90,属于手持式设备,也是Symbian 操作系统但是功能强劲,等同于一个PDA了。
其实技术来上说,S40跟S60是区别在系统平台上,就好像WIN98跟WIN2000,但手机不像PC,屏幕大小的确是个关口,以致于平台不容易做到向下兼容,但有的游戏也同样做出不同版本来的。
当然啦,S40比S60不单单是屏幕上的差距,更大的是性能上的差距,一般来说,S60开发出来的游戏质量都比S40高好多,但可惜,S60比S40的机子又贵上了很多啊.
在很多网站上,一些对Symbian不是很了解的人们都以为Series 60和Series 80是不同的Symbian操作系统版本。于是就出现了比较混乱的称呼。比如:“Series 60操作系统”和“Symbian 80操作系统”的笑话。
其实,Symbian操作系统是Symbian公司开发的手机操作系统,它是一个独立于手机硬件的操作系统,而且它是一个开放的平台。这一点有点像Linux,市面上常见的有红帽等用户界面,但是它们都是在Linux系统下开发出来的,不过界面有些不同罢了。
所以,很多手机制造厂商在自己公司所生产的手机上做了些界面上的修改,于是就出现了S60,S80等名称。但是它们不是操作系统,而是在以操作系统为基础而开发出来的用户使用界面平台。
目前,Series 60有两个主要版本:第二版(2nd Edition)和第三版(3rd Edition)
Series 60 Platform 2nd Edition
Series 60 Platform 2nd 2nd Edition最初于2003年发行,首个被实现的终端是诺基亚6600手机。通过扩展,它已经被加入了三个Feature Packs,从而引入了令人激动的新功能,同时却不失平台兼容性。有了这些新的Feature Packs,Series 60 Platform 2ndEdition就向各种智能电话提供了极为出色的性能,从而满足所有主流市场运营商、企业、开发伙伴,以及消费用户的各种各样的功能需求。
用户界面
Series 60 用户界面是诺基亚投入了最深入研究、进行了最彻底开发的图形化用户界面。作为Series 60 Platform的一部分,它能确保用户在各个厂商的所有基于Series 60 Platform的设备上具有一致的用户界面。Series 60 Platform被设计成能单手操作各种高级的、用户友好的各类数据服务。Series 60用户界面有一个彩色显示屏,支持多种屏幕解析度(176x208、240x320(QVGA)及352x416)。它支持各种各样不同的功能,包括两个功能键、五方向导航键、一个应用与应用切换键,及呼叫和呼叫终止键。该用户界面使用一个标准的12键键盘,包括字母。界面中针对文本输入设置了清除键和编辑键。
应用
Series 60 Platform提供了范围广泛的丰富应用和应用实现器。其中包括如先进的电话应用、统一消息中心(Unified Messaging Center,MMS、SMS、Email)、各种OMA即时消息及精灵(Presence)应用、一个完整的移动互联网浏览器(HTML 4.01、XHTML MP,& WAP CSS)、3GPP兼容的流客户端(RealOne Player)、Java MIDP 2.0 环境、应用管理器、OMA数字版权管理(转发锁定)、SyncML数据同步及设备管理、OMA客户端配置、媒体廊、摄录机应用、图像阅览器、支持多重 PDP场景的连接管理器、移动钱包,以及多种个人信息管理应用。
网络支持
Series 60 platform中包括对GSM/GPRS/EDGE、CDMA及双模WCDMA-GSM配置的支持。双模WCDMA-GSM向运营商们的各种3G服务提供了全方位的支持, 从而为在各种移动设备上实现视频电话并提供先进的流能力和高级浏览功能铺平了道路。
Series 60 Platform 3rd Edition
Series 60 Platform 3rd Edition是新一代全球领先的智能手机软件平台。全新的Series 60 Platform 3rd Edition加入了许多新鲜功能,同时又保持2nd edition的所有功能。新版Series 60 Platform 3rd Edition专注于增强的多媒体及企业应用功能、可持续发展的应用业务支持、 精益求精的客户定制能力,及不断改进的平台结构。
因为3rd Edition,Series 60 Platform现在更适合高容量的客户市场。Series 60 Platform 3rd Edition中得到改进的结构灵活性使Series 60手机制造商们能创建出既高度细分成本优化的各种终端,以满足用户的不同需求。这种新结构还包括内置的安全特性,从而向用户和开发者提供了更为安全更为信任的环境。
支持企业和多媒体应用
广大企业将得益于Series 60 Platform 3rd Edition的内置业务特性。诸如日程表、数据同步,及email等特性都得到了改进以适应针对各种各样企业环境的使用方便性。新加入的内置安全特性提供了对业务敏感数据的更多保护。Series 60 Platform 3rd Edition让获授权厂商们能构建更强健更多样化的各种企业级终端。
这一新版本还支持移动多媒体的成长。对OMA DRM 2.0 for music的支持既改善了使用性也改进了受保护内容的安全性。新版音乐播放器使得在线访问音乐内容更为便捷。有了全新的Series 60 Platform 3rd Edition,可以更为方便地在PC和移动终端之间传送将音乐及其他内容,这是因为:基于这个新版本的各种智能电话在功能上能被视为一个普通的USB储存棒。
面向开发伙伴的更多业务
对开发伙伴来说,Series 60 Platform 3rd Edition提供了更多针对高终端持有量的商业机会。新型安全框架和内置内容保护改善了对开发伙伴投资的保护,但同时又仍然允许自由软件应用的使用。诸如可扩展用户界面这类特性功能发现API将使开发伙伴们能创建更为智能化的应用,同时提供更佳的用户体验。
Series 60 Platform 3rd Edition,以其全新的结构和更好的多媒体及企业应用特性,正在全力走上其发展的康庄大道,以满足各获授权厂商、运营商,及用户的严苛需求。运行于 Symbian OS v9之上的Series 60 Platform 3rd Edition将于2005年中面市。
现在走在前沿的是s60的第三版本和UIQ的3系列
2008-3-17 13:02
U206
五小时Symbian开发入门
Symbian是一个操作系统,是以Nokai为首的各手机厂商合伙攒的一个操作系统,主要用于高端的智能手机。其开发语言为C++,可以使用Microsoft Visual C++ 6.0作为集成化的开发环境,看来虽然Symbian的目标是跟微软的SmartPhone较劲,在采取的手段和方法上却也是不拘一格,微软更是暗暗叫苦,谁让当时vc6设计的这么开放,结果被敌人拿去做武器了。
本文只是为了Symbian的开发入门,所以应该是非常简单的事,因为毕竟Symbian的开发语言是C++,并不会因为是用于手机的操作系统就复杂了多少,就象很多人一直挂在嘴边的J2ME也毕竟是Java语言,并不会因为用在手机上就高深了多少一样,只能是更简单。5小时是我从对Symbian一无所知到完成本文化在Symbian上的所有时间。
因为是用于手机的操作系统,所以我们研究Symbian的话,先选定一款手机再说。Nokai的60系列平台是一个很不错的开始,Nokai根据手机的屏幕大小和价格高低把手机分成了多个系列,60系列目前有两款手机:7650和3650。60系列采用Symbian os 6.1,然后又根据手机屏幕的特点对UI做了一些修改,这个被修改了的Symbian就被称为Nokia的60系列平台。
所以入门的第一步就是要下载S60的SDK,可以从Nokai的开发论坛上下载:[url]http://www.asia.forum.nokia.com/chinese/sch/main/series60.html[/url]。看Nokai网站上最新的是1.0,不过下面又有个0.9中文版,所以自然要下载这个0.9版了。100多兆吧,不想下的话,可以跟Nokai要光盘,估计他们应该很高兴给吧。这个0.9中文版的模拟器是中文版的,而且有支持GBK和UNICODE转换的类,不知道1.0的英文版有没有。
下载完了自然就是安装,选一个目录装就是了,不过最好装在C盘上,可能是考虑到Windows平台和Unix平台都能用的缘故,这套SDK在处理盘符和目录时比较弱智,我当时SDK装到C盘,自己的程序放到D盘用vc6生成新项目就有问题,经观察是盘符的问题。所以保险起见的话,最好装在C盘,有兴趣的可以替Nokai测试一下。另外,还需要Java的运行库和Perl,SDK里也都带了,不过他自带的Perl在我的XP下装有问题,我下载了一个最新的ActivePerl才最终算是安装完毕。从SDK的安装来看,这帮搞手机的搞软件好像确实不太专业。
刚才说了,我的Symbian安装到了C盘,在C盘的Symbian目录下,有一个6.1的目录,6.1目录下有两个目录:Series60和Shared。还好,从名字上能看出大体的意思。请一定注意Series60目录下的Epoc32BUILD目录,因为这个目录以后要反复的用到。
接下来的任务就是要编译一下HelloWorld,然后再运行一下看看了。首先得确认你的系统装VC6了(最好能装sp3以上,否则将来用到vc6时会报警),而且得把C:Program FilesMicrosoft Visual StudioVC98Bin放到你的PATH里,主要是用nmake.exe。所以如果你有nmake的话,不装vc6也可以看helloworld。
找到helloword例子的目录,在我这里是C:Symbian6.1Series60Series60ExHelloWorldgroup。Symbian里,一个Project通常是按inc,src,group等目录组织,group目录里通常放的是项目文件,所以编译时要先到这里。用命令提示符模式进入刚才说的那个目录下,然后执行
bldmake bldfiles
这个命令会在group目录下生成一个abld.bat的批处理文件,并且会在C:Symbian6.1Series60Epoc32BUILD下生成C:Symbian6.1Series60Epoc32BUILDSYMBIAN6.1SERIES60SERIES60EXHELLOWORLDGROUP这个深的一个目录,并在最底层目录下生成一堆.make文件。实在理解不了为什么要这么搞?因为他们是生产手机的?
虽然它生成了这么多东西,但是我们不要管,继续输入
abld build wins udeb
这个命令会编译我们的程序,最后在C:Symbian6.1Series60Epoc32ReleasewinsUDEB目录下生成我们的helloworld,然后我们可以从开始菜单里运行模拟器的debug版,打开other目录就可以运行helloworld了。
如果要在VC6里编译和运行HelloWorld,在运行完bldmake bldfiles后,运行abld makefile vc6,则会生成vc6的dsw文件,位置在C:Symbian6.1Series60Epoc32BUILDSYMBIAN6.1SERIES60SERIES60EXHELLOWORLDGROUPHELLOWORLDWINS。看Symbian把这点事搞得这么麻烦,也真是不容易。
如果要直接在vc6里创建新项目的话,要把C:Symbian6.1Series60Series60Tools目录下的文件拷贝到vc6的模板目录下才可以。
折腾到这里,可能得花2个多小时吧,剩下的两个多小时得看看文档了。
先看看HelloWorld的帮助文档,理解一下Symbian程序的体系结构。Symbian程序也是按照VC的文档视图结构来组织程序的,有Application类CAknApplication,有Document类CAknDocument,有Frame类CAknAppUi,有视图类CCoeControl等,跟vc的结构好像是差不多的,但感觉上它的Document类好像是做样子的,我还没看到这一块。关于这些类之间的调用关系,在HelloWorld的文档里有个顺序图非常好,一看便知。
在看Symbian的代码时,感觉最不适应的可能就是经常看到PushL和Pop函数,还有就是很多的函数都有L或LC的后缀。其实这是Symbian的例外处理机制。比如说我们定义了一个指针,给它分配了空间,可是在使用它的时候程序突然间出现了致命错误中止了,那这个指针占用的地址空间我们肯定是收不回来了,在PC上编程这一点可能问题不大,内存那么多,而且用不了多长时间就重启动了,但是Symbian的设计者可能认为这在手机上是不行的,所以对这一点做了很多的设计。Symbian有一个Clean up stack,在使用指针时,用PushL把指针压入栈中,使用完后在用Pop弹出栈,如果在中间调用可能导致崩溃的函数时果真出现了问题,那么Clean up stack可以通过调用该指针的析构函数回收占用的空间。这些可能导致崩溃的函数在Symbian里被称为可能Leave的函数,所以就在这些函数的尾部加了一个L。而加LC后缀的函数表明该函数已经在内部把指针用PushL压入clean up stack了,调用时无需再用PushL,直接调用完用Pop既可。Clean up stack还提供了一个PopAndDestroy函数,就是弹出栈后再销毁指针。顺便提一句,正式因为有了Clean up stack机制,所以Symbian在有些地方看起来跟VC的程序不太一样,比如说很多类的构造函数都不用,用NewL或NewLC构造,分配地址时的操作符new()也变成了new(ELeave)。上述内容可以看一下Symbian编程基础中的内存管理一节。
Symbian自己定义了一堆的数据类型,如果不想找麻烦的话,还是乖乖的用这些类型的好。简单说一下,整型有TInt和TUint,其中又分为8位的,16位的和32位的,如TInt8,TInt16,TInt32;文本类型是TText,又细分为TText8和TText16,但内部都是Unicode的,所以实际上内部引用应该都是TText16;bool型是TBool,对应的值有ETrue和EFalse;浮点型是TReal,但又分为TReal32和TReal64;还有一个引用类型TRefByValue<T>,是以模板类的形式提供的。
因为Symbian是冲着更面向对象设计的,所以在我们常见的字符串这块变化比较大,在Symbian里叫descriptor。最底层的是两个抽象类TDesC和TDes,实际上TDes也是继承的TDesC,TDesC中的C字母是常量constant的意思。即带C字母结束的都是定义的常量,是不可以修改的,而不带C的都有一个最大长度的限制,是可以修改的,下面也是同样的道理。指针描述符是TPtrC和TPtr,类似于C++中的char *;缓冲区描述符(Buffer descriptor)是TBufC和TBuf,类似于char [];堆描述符是HBufC,类似于(char *)malloc(length+1)的用法。具体用时,上述的类型又分为8位的和16位的。举个例子:
TBuf<64> buf;
CEikonEnv::Static()->ReadResource( buf, R_EXAMPLE_VIEW_TITLE );
先定义了一个最大长度是64的缓冲区,然后读入名为R_EXAMPLE_VIEW_TITLE的资源。
再例如:
TText8 *str = (TText8*)示范窗口标题;
TPtrC8 source( str );
iInfoText = HBufC::NewL( source.Length() );
TPtr16 ptr = iInfoText->Des();
定义一个8位的字符串str,然后构造一个指针常量source,根据source长度再定义一个16位的指针,下一步我这里没写,但明显着应该是把gbk的转换为unicode了。
Symbian的资源文件一般是以rss为扩展名的,没有专门的资源文件编辑器,用户必须用记事本打开rss文件手工编写rss文件。这个都有一定的规则和方法,参考例子不难编写自己的资源文件。需要注意的一点是,如果资源文件里包含中文,那么必须把文件另存为utf-8格式的才可。
入门相对来说是比较简单的,但精通就需要大量的实践了。
大家都来[url]http://bbs.loveunix.net/thread-82159-1-1.html[/url]讨论一下,少走弯路!!!!