S60入门基础.docx
《S60入门基础.docx》由会员分享,可在线阅读,更多相关《S60入门基础.docx(19页珍藏版)》请在冰豆网上搜索。
S60入门基础
S60入门基础
编辑文档
S60入门基础
本文是一篇Symbian出版社/诺基亚论坛官方文档《EssentialS60-Developers'Guide》的非正式中文翻译版本。
希望本文能够为广大中国的非移动开发者了解S60平台,加快入门速度带来帮助:
)
目录
∙•S60平台介绍
∙•版本和功能包
∙•C/C++
∙•SymbianC++
∙•标准C
∙•Java开发
∙•Python
∙•FlashLite
∙•SVGT
∙•浏览器
∙•Web网站
∙•Web运行时环境
∙•测试
∙•进入市场
∙•获取更多帮助
∙•小结
[显示部分][显示全部]
编辑本段 回目录S60平台介绍
自从2001年发布以来,S60平台已经成为世界最流行的智能手机开发平台。
在2007年初,已经有6家授权手机制造商生产了超过一亿部基于S60平台的手机。
第一部S60设备,Nokia7650智能手机,体现了广泛的特性,包括个人信息管理(PIM)、浏览器、图片和音乐功能。
随着技术不断地成熟,包含有高分辨率照相机、功能完整的web浏览器、立体声音乐、地图和VoIP电话等的手机已经上市,并且这还只是一小部分功能。
S60手机的范围已经扩大,为消费者、企业及其它特定市场提供了各种不同样式的选择。
图1各式各样的S60手机
S60平台之所以能够成功的原因之一是它能使用户通过安装第三方应用程序和内容的方式往其*的手机内添加特性。
首先,这个平台支持由Java语言和纯SymbianC++程序语言编写的第三方应用程序。
随着平台的扩展,越来越多的开发选择变得可用。
应用程序开发者现在可以从SymbianC++,OpenC,JavaMicroEdition(JavaME),Python,Adobe的FlashLite,Web运行时环境及可缩放矢量图形(ScalableVectorGraphicsTiny,SVG-T)技术之间任意选择。
同时,Web内容开发者已被标准Web技术比如HTML,动态级联表(CSS),JavaScript,异步JavaScript和XML(ajax),FlashLite及SVG-T,来使得S60手机可以浏览所有网页。
该文档首先对S60系列精髓来说是一个选择开发S60应用程序的指南。
它的目的是帮助开发者选择最合适的开发方式和特定的应用程序语言。
该文档概括了各种开发技术的主要特性,描述了有助于开发的可用工具,并提供了何处能找到有用信息的向导。
当到随后开始手机应用程序开发时,编写代码和使之能够运行只是一部分工作。
测试是很重要的步骤,它确保应用程序能可靠地完成程序自身本应具备的功能。
该文档提供了来自诺基亚论坛(中文,英文)的可用测试工具及应用程序测试领域(SymbianSigned和JavaVerified)的介绍。
因为我们的目标是获取应用程序和安装内容并将其应用在S60手机上,该文档包括了展望如何将应用程序带入市场的过程。
它也为可应用程序提供了指导来帮助开发者获取技术和商业支持以发展他们的手机软件业务。
编辑本段 回目录版本和功能包
随着移动技术的进步,SymbianOS和S60平台正在不断与时俱进地发展、添加新的特性和功能。
为了帮助开发者了解S60平台不同发布版本的特性,我们使用了术语“版本(Edition)”和“功能包(FeaturePack)”表达不同的概念。
版本指发布版本之间更新时增加的东西,它们大都和SymbianOS上的版本改动相关。
功能包指示出版本内更新时增加的东西,通常包括新的C++API和其他一些功能附件、其它开发技术的改进及S60UI的改进。
表格1提供了S60版本和功能包的概述。
S60各个版本和功能包的信息详解
S60平台
SymbianOS
C++
OpenC
JavaME
Python
FlashLite
SVG-T
Web2.0
Web运行时环境
首款机型
S60第一版
v6.1
√
MIDP1.0
插件
Nokia7650
S60第二版
v7.0s
√
MIDP2.0
插件
Nokia6600
S60第二版,功能包1
v7.0s
√
MIDP2.0
插件
Nokia6620
S60第二版,功能包2
v8.0a
√
MIDP2.0
插件
Nokia6630
S60第二版,功能包3
v8.1a
√
MIDP2.0
插件
1.1(部分地)
Nokia N90
S60第三版
v9.1
√
插件
MIDP2.0
插件
1.1
1.1
√
Nokia N91
S60第三版,功能包1
v9.2
√
插件
MIDP2.0
插件
2.0
1.1
√
Nokia N95
S60第三版,功能包2
v9.3
√
内置
MIDP2.1
插件
2.1
1.1
√
√
严重期待
表1:
S60各个版本和功能包支持的开发技术和Symbian版本熟悉S60版本和功能包是理解哪个手机可以运行已有应用程序的关键。
一般说来,使用由特定版本和功能包提供的API编写的应用程序将可以在同样版本和功能包的S60平台手机上运行。
例如,一个为NokiaN93多媒体手机开发的应用程序,它基于S60第三版,应该能够在所有基于第三版的手机上运行,比如同样为S60第三版FP1的NokiaN95多媒体手机。
目前已发布不少于50款S60手机,所有的型号列表都列在S60网站。
相关的详述和S60平台信息请查阅诺基亚论坛的设备规范部分。
编辑本段 回目录C/C++
SymbianOS的原生开发语言是SymbianC++,它提供了访问S60平台的最强大而完整的功能。
作为补充,自从2007年初,OpenC技术作为一个开发平台也被引入。
OpenC技术旨在完成一些使用C语言开发的桌面应用程序引擎部分到SymbianOS的过渡,使得桌面应用开发者可以很快适应S60平台的开发。
编辑本段 回目录SymbianC++
SymbianC++应用程序开发给开发者提供了利用S60平台全部优势的最大灵活性。
C++被用来完成S60平台的UI和附加中间件API的开发。
通过使用SymbianC++,开发者可任意使用S60平台的公共API。
这意为着,第三方应用程序同样可以提供象S60手机中内置的应用程序一样丰富的功能。
SymbianC++开发需要S60平台SDK,每个S60平台SDK包含Symbian和S60API函数库、命令行开发工具、详尽的文档、一系列应用程序范例和手机模拟器。
手机模拟器是应用程序开发里重要的组件,因为当使用WINSCW编译器和Carbide.c++进行交互连接时,它允许应用程序的测试过程在PC上进行。
模拟器允许开发者像在真机上一样运行其应用程序,提供诸如模拟呼叫、网络连接、UI方案的整体模拟及定位、声音甚至模拟本地化等功能。
使用模拟器,开发者可在其PC上完成他们大部分的开发,这将加快开发周期。
图2S60SymbianOSC++SDK中的模拟器运行截图
S60平台的新版本里,S60手机模拟器允许在新设备可用之前就可进行应用程序的开发:
不同的S60版本和功能包的SDK通常在其手机发布前就已发布。
S60SDKs可从ForumNokia网站的工具和SDKs部分下载。
一个集成开发环境(IDE)可帮助加速应用程序开发进度。
为此,Nokia为SymbianC++开发提供了名为“Carbide.c++”的IDE。
Carbide.c++有四个版本:
·Carbide.c++Express.该Carbide.c++IDE的免费版本可用来进行任何类型的开发,包括商业应用程序。
它包含所有的工具用来编码、生产、打包、测试和debug应用程序。
测试功能是通过S60手机模拟起用来完成的。
·Carbide.c++DeveloperEdition.这是Carbide.c++IDE三个商业版之一。
除了Carbide.c++Express版本的特性之外,它还提供了用于真机debug和可视化S60UI设计器的工具。
·Carbide.C++_ProfessionalEdition.除了Carbide.c++DeveloperEdition的特性之外,该版本包含其它执行工具,包括更多真机debug工具和能够检查应用程序CPU、内存及电量使用的性能分析器。
·Carbide.c++OEMEdition.该版本是为手机制造商设计的,包括能够和开发板及生产前硬件一起运行的工具。
图3Carbide.C++的运行截图
更多信息和Carbide.c++Express及其它改进版的免费下载链接可从ForumNokia网站的Carbide.c++部分获得。
喜欢使用命令行的开发者也能通过使用Carbide.c++Express版本和S60SDK提供的工具进行命令行操作。
新的SymbianC++开发者需要学习很多概念。
每个C++开发者都应该掌握S60、SymbianAPI中创建应用程序UI和进入操作系统及平台特性的知识。
S60UI借助其平台特性为用户提供了简单有效的人机操作界面。
用户通过标准手机键盘或全键盘和UI进行交互,这两种键盘都由两个软键组成,一个导航键一个选择键,电话功能键,菜单键,笔形键和清除键。
UI同时也提供多语言支持,而且其API被设计为具有通过使用资源文件就可被应用程序灵活本地化的特性,这样增添本地化特性甚至并不需要重新编译源代码的过程。
ForumNokia发布的两篇文档:
S60UIStyleGuide和S603rdEditionFP2:
UIStyleGuide详细介绍了有关S60UI风格的内容。
这些文档也可在ForumNokia网站的文档部分找到。
为了高效地使用SymbianOS或S60API,C++开发者必须掌握新的C++编码规范。
SymbianC++开发的程序是用于运行在手机上的,这一环境的特点是:
有限的内存、有限的进程力及手机能够在不重起的状态下运行数周甚至数月。
例如,任何函数的trap-harness机制可被退出以防止在创建对象时的内存泄漏,该对象可能由于内存资源不足而失败。
然而SymbianC++采用的方式和其它许多C++语言不同,关于这点需要阅读很多文档和培训资料,以此来以帮助开发者更进一步掌握这项技术。
对于新的SymbianC++开发者来说,ForumNokia提供了很多可用资源。
我们最好从开发者资料库(DeveloperLibrary)开始,这里提供了有关S60C++应用程序的全部资料。
该资料库可直接在浏览器中浏览(进入资料库),也可以将其下载后作为单机程序运行或是嵌入Carbide.c++作为在线帮助。
另外ForumNokia网站文档部分的提供了阐释S60API用法的文档和范例源代码。
许多开发项目是由将应用程序定位在单一手机或是单一版本和功能包开始的,但请注意:
S60平台使开发者可以编写能在多部手机及多种版本和功能包上运行的软件。
《S60平台文档:
在主打机型和特定设备之间开发应用程序》就为创建多对象应用程序提供了极佳的方案。
更多信息仍然请您访问,ForumNokia网站的文档部分。
C++开发者可从SymbianDeveloperNetwork(SDN)网站上找到丰富的相关信息。
SDN是由Symbian创建的,网址为Wiki和讨论区等SymbianC++开发常用的信息。
感兴趣的开发者在这里还能找到有关认证Symbian程序员(AccreditedSymbianDeveloper)的信息。
该项目是一个开发者资质认定项目,即他们可以检验并证明自己在SymbianC++应用程序开发方面的技能。
详细的内容可从SDN网站的SymbianAcademy部分查阅到。
SymbianPress,SDN的一个服务提供商,出版了大量的有关SymbianOS开发内容的书籍。
详细的内容可查阅SDN网站的SymbianPress部分。
对于ForumNokia,它提供了一系列相关的培训机会,包括使用eLearning部分的自修教材和中文多媒体自学教程,以及由全球的认证培训中心提供的课堂培训。
详情可查阅ForumNokia网站的培训部分。
编辑本段 回目录标准C
当SymbianC++作为一个非常理想的选择适用于资源有限的移动手机的应用程序开发的同时,手机的计算能力也在S60平台发布之后得到了突飞猛进的发展。
这些硬件的改进使桌面环境开发者非常熟悉的标准C技术融入S60平台。
OpenC提供了来自9大注明的标准POSIX和C语言中间件的一系列函数库,他们是:
libc,libdl,libpthread,libm,libz,libcrypt,libcrypto,libglib和libssl。
开发者可使用OpenC很轻易地把桌面或服务应用程序移植到S60手机上。
OpenC是P.I.P.S.的一种扩展,代替P.I.P.S的是SymbianOS中的POSIX。
更多有关P.I.P.S.的详细内容可查阅SDNWiki网站。
OpenC的设计特点决定了它是用来帮助开发者创建中间件或应用程序引擎;OpenC不提供基于C的UI组件。
所以尽管OpenC能够使桌面开发者把他们的应用程序引入S60而不需要学习如何如何使用SymbianC++或S60API,然而S60手机UI应用程序的开发需使用另一套S60开发语言。
于是开发者有两个选择:
他们要么可以使用SymbianC++要么使用Python里的UI元素来实现S60的UI开发。
一般来说,Python对原型或开发初期阶段而言是很好的选择,而在应用程序即将发布的最后阶段建议使用SymbianC++。
这其中的主要原因是用SymbianC++编写的S60UI运行时无需任何附加软件,而PythonUI却需要在对象手机上安装Python解译器。
用一个应用程序安装Python解译器并不复杂,所以对很多应用程序来说它也是很好的选择。
OpenC已被成功地用于大量项目源代码到S60平台的移植,包括FTP客户端和SQLite。
更多内容可查阅ForumNokia网站的OpenC部分。
OpenC页面上的文档链接提供了有关OpenC开发的几个范例。
其中最有趣的范例是“OpenC:
短信加密范例(使用Python作为用户界面)v1.1”,它阐述了S60C++UI和基于Python的UI都使用OpenC的方法。
OpenC是S60第三版功能包2上已经成为一个标准内置技术,它也可作为S60第三版和S60第三版,功能包1的插件存在。
Carbide.c++目前已支持所有的OpenC的开发。
编辑本段 回目录Java开发
自从S60平台发布以来,JavaME开发就一直是其重要的特性。
和SymbianC++相比,JavaMIDP为开发者提供了轻便的操作环境,它允许应用程序不仅仅只为S60适用,而且可在来自各个不同手机制造商的Java手机上运行,特别是Nokia的Series40手机也适用。
然而这个轻便性是有代价的:
和SymbianC++相比,它对使用S60平台有严格的限制。
即使并非所有的S60手机都能使用Java环境,但S60上JavaAPI的应用还是相当广泛的。
对平台开发来说,Java能够达到的很多特性是可以和SymbianC++相媲美的。
在S60第三版,功能包2手机上所支持的Java规范标准(JavaSpecificationRequests,JSR)和附加的API如下:
·j2mePDA扩展包(JSR-75),该规范提供了文件系统和个人信息管理(PIM)功能,允许数据的本地存储及使用S60日历和名片夹应用程序的内容。
·蓝牙OBEX(JSR-82)支持的JavaAPI,可让用户使用蓝牙通信。
·无线消息API(JSR-120),允许发送和接收短消息(SMS)。
·移动多媒体API(JSR-135),可使用并控制声言和多媒体资源。
·J2MEWeb服务规范(JSR-172)API,使Java应用程序能够解析XML文件并和周边Web服务交互。
·J2ME安全和信任服务API(JSR-177),包括Crypto和PKI包,通过附加的密码API、数字签名服务和用户认证管理扩展了JavaME技术的安全性。
·J2ME位置API(JSR-179),提供了确定手机(来自内部或外部的全球定位系统GPS)当前位置以及获取标志信息的方法。
·J2MESIPAPI(JSR-180),允许使用会话发起协议(SIP)服务来发送和接收SIP消息。
·J2ME移动3D图形API(JSR-184),提供达到交互内容要求的帧速率的3D图形功能。
它包括3D场景管理和动画的设备,以及有关3D内容的高效空中下载(OTA)部署配置的文件格式。
·无线消息API2.0(JSR-205),允许发送和接收包含照片、语音及文本的多媒体信息(MMS)。
·J2ME可缩放2D矢量图形API(JSR-226),提供由应用程序生成的大小可变的2D矢量图片,包括W3CSVG-Tiny1.1格式的外部图像。
该API对地图可视化、可扩展图标及需要可缩放图形的应用程序、丰富的动画图形来说是很有用的。
·高级多媒体支持(JSR-234),允许Java应用程序使用手机的FM收音机调频及操作音乐和3D音响。
·NokiaUIAPI,为过去MIDP2.0出现之前提供的UI特性增强的API,目前仅作为确保应用程序兼容性之用。
Java开发的好处之一是它通过大量的手机向可执行应用程序提供了路径选择。
同时,当目标应用程序被大范围支持时,我们需格外注意。
S60平台为Java应用程序提供了更多资源,另外S60手机有着比其它手机更大的显示屏。
所以,如果应用程序需要在尽可能大的手机范围内推广,我们的开发需要定位在资源最受限的手机上。
相比在功能特性很弱的手机上最佳化一个具有S60全部特性的Java应用程序来说,在S60平台上利用其附加特性的优势来扩展应用程序的特性是比较容易的。
S60平台上的Java开发由SDK支持。
每个SDK包括S60平台JavaAPI、有用的文档、一系列范例应用程序代码及手机模拟器。
因为使用C++开发,手机模拟器支持PC测试。
这里要为S60Java应用程序开发推荐两个IDE:
NetBeans和Eclipse.特别为MIDP开发设计的插件在两个IDE上都有很好的例子。
对NetBeans来说,NetBeansMobilityPack可以被整合在IDE内。
更多详情可查阅NetBeans网站。
对于Eclipse,提供JavaME支持的插件是EclipseME。
更多相关信息可查阅Eclipse和EclipseME网站。
对于移动应用程序开发或S60平台新的Java开发者来说,ForumNokia提供了一些相关资源。
ForumNokia的Java资料可查阅ForumNokia网站的Java部分。
感兴趣的开发者也可查阅JavaME开发者资料库,它可在线阅读,作为一个单机帮助系统或作为Eclipse在线帮助组件。
该库为手机Java应用程序的开发提供了全面阐述。
SDN也为Java开发者提供了相关资源,另外SymbianPress已出版了相关主题的书籍。
更多消息请访问SymbianDeveloperNetwork网站.
编辑本段 回目录Python
基于S60的Python(也称作PyS60)为开发者提供了C/C++和Java之外的一个十分可行的选择。
Python是一种动态的面向对象的程序语言,它使用更接近自然语言的关键字,有很强的可读性。
它也被看作是简单易学的语言,提供给那些只有不多开发背景的开发者,拥有较短的学习周期。
S60的Python提供了Python标准库和S60平台之间的紧密整合。
这种整合给开发者使用S60特性提供了更高级的方法,包括大多数UI组件和大量平台功能函数。
S60的Python开发者所能使用的特性有,S60联系人和日历数据、声音录制和重放、手机摄像机、系统信息(包括国际移动设备识别码IMEI)、语音呼叫、通用分组无线业务(GPRS)、蓝牙网络支持及短消息(SMS)发送。
S60的Python也是可扩展的,允许通过C++模块添加新的特性。
与其它开发语音编写的应用程序不同,S60的Python应用程序可在S60手机以及PC上直接开发。
这个优势源于Python是一种解释语言而不是编译语言。
基于手机和基于PC上的Python开发最显著的唯一区别就是基于PC的开发需要用工具来把应用程序打包到一个单机安装包。
基于手机的开发要求有对象手机设备的版本和功能包对应的正确的手机安装包。
该安装包含有Python解释器,Python标准库,一个用于启动Python脚本的外壳脚本,一系列完整的原生扩展量和一个用于开发的交互性Python控制台。
图4在手机上开发Python程序
为了能在PC上开发S60平台的Python应用程序,开发者需要为他们将要开发的对象安装合适的S60SDK。
每个S60SDK上都要添加一个S60SDK的Python插件;每个SDK都有其各自的Python插件,该插件包含了完整的文档和范例代码。
因为S60的Python是一个开源项目,它由SourceForge网站提供页面维护,最新的SDK插件,手机上运行的解释器及外壳程序,都可以从这里下载。
关于S60的Python开发方面有两个有用的信息资源:
他们是诺基亚开源技术项目社区维基的PythonforS60一文和ForumNokia网站的ForumNokiaStart2Finish博客。
SymbianPress也于2007年10月最新出版了有关该主题的书籍:
MobilePython–RapidPrototypingofApplicationsontheMobilePlatform,作者:
JurgenScheible。
译者注:
对中文开发者来说,如果您想了解S60的Python平台,《在S603rdEdition上的PythonforS60简介》这篇文章可以说是必读篇目。
编辑本段 回目录FlashLite
由Adobe公司开发的Flash已成为Web上传送丰富的互动图形的实质标准。
在S60平台第三版以后的版本中FlashLite的可用性允许Flash的开发者将他们的Web开发技术运用于手机开发领域。
到目前我们所讨论的开发技术候选来看,Flas