S60 3rd Edition中的一些关键变动,改变了应用软件开发的方式。这些变动包括:一个新的编译器、一个新的内核和平台安全性的执行。简而言之,S60 3rd Edition和以前版本之间的最大差别在于:
· 针对ARM架构的ABI编译器
· 实时内核(Symbian 9.0及后续版本)
· 平台安全性
· Symbian Signed
· 新的工具链
针对ARM架构的ABI编译器
从S60 3rd Edition开始,以面向ARM®架构的应用二进制接口(Application Binary Interface)为基础的编译器被用于编译各种应用。ARM C/C++ ABI是行业标准,它确定如何让各种可执行文件和共享对象协同工作。采用ARM ABI编译器标准之后,S60平台通过提升内存使用效率和缩短数据访问时间,使系统和第三方应用的性能表现得到提升。
实时内核(Real-time kernel)
S60 3rd Edition的底层操作系统是Symbian OS v9.1,该操作系统具有一个实时核,即EPOC Kernel Architecture 2(EKA2),EPOC是Symbian OS的原名,其早先内核是EKA1。新版多线程内核的许多内核服务时间是可预测的,且降低了延迟时间,因而非常适用于诸如通讯和IP栈这类时间敏感应用,诸如视频流及IP电话(VoIP)等需要很高带宽的多媒体应用。
平台安全性(Platform security)
S60 3rd Edition引入了平台安全新方案。这方面改变的初衷是要确保S60终端的完整性,使用户们对其终端具有信心,相信它是安全、可靠、可预测的。为此目的,第三方应用软件对手机的敏感数据和终端的某些操作的访问是受控制的。
这些改变意味着:开发伙伴们只要得到验证就可以访问更加广泛的API。这些改变也提供了一些保护,从而避免了因为一些应用的某些缺点而产生不希望出现的副作用。从商务角度看,这些增强提升了S60平台作为稳定、安全的操作系统的良好声誉。平台安全得到模拟器的充分支持,从而使开发伙伴们能测试这些功能对其应用的影响。
请注意,“平台安全”并不是指S60平台已经提供的功能,也不是指第三方对该平台的扩展中所提供的功能,如加密、防火墙、Javaä MIDP安全域模型、防病毒,或一些通信协议的安全版等。
信任计算基(Trusted Computing Base)
为执行S60 3rd Edition所引入的一些安全措施,系统中使用了名为信任计算基(Trusted Computing Base)的一组软件。TCB包含内核(kernel)、文件系统(file system)及软件安装器(software installer)。它负责保证:只有具有必要许可及权限的应用才能被安装到终端上,及被允许访问终端的受限制区域。
数据锁定(Data caging)
数据锁定的目标是:控制对文件系统的访问(access)以保证数据安全。每个应用都有其自己的private目录用于储存私有数据,且不允许其他应用访问(除非该应用具有足够的capabilities)。某个应用能访问文件系统中其private目录之外的大部分区域但是也有限制。
如果与终端制造商之间没有协议,储存可执行文件的/sys目录是不允许访问的,而保存诸如位图等应用资源文件的/resource目录则为只读。为能访问那些特定的目录,某个应用需要具备一些capabilities。对终端中特定目录的capability需求如下表所示:
目录(包括子目录) |
需要的Capabilities | |
读访问 |
写访问 | |
/resource |
无 |
TCB |
/sys |
AllFiles |
TCB |
/private/<ownSID> |
无 |
无 |
/private/<otherSID> |
AllFiles |
AllFiles |
/<other> |
无 |
无 |
图1
这里的“SID”指的是应用独有的安全ID(SecureID)。每个应用都有自己的安全ID及按照安全ID而定义的独有的私有目录,如“c:/private/20000001”。
能力模型(Capability model)
Capability模型的目的是确保:只有获信任的应用才能使用某些敏感的API和系统资源。用户可以在应用被安装时授予某些许可,如发送短消息(SMS)及读写用户数据等。然而,有许多Capabilities则只授予给通过Symbian Signed认证的应用。
在S60平台上,共有四套Capabilities:
u 完全开放:这些Capabilities对所有应用都开放,应用无需Symbian Signed。
u 安装时由用户授予:这些Capabilities(完整的位置信息除外)由用户在安装时向应用授予,并被称为未认证沙箱(unsigned sandbox)。通过Symbian Signed的应用,无需用户授予许可就可以使用所有这些capabilities。
u 通过Symbian Signed授予:这些Capabilities包括安装时由用户授予的那些Capabilities加上需要Symbian Signed后应用才能使用的一个Capabilities扩展集。
u 制造商授予:这些Capabilities需要与制造商签订协议,以允许在Symbian Signed过程中授予这些Capabilities。
不同的Capabilities需要不同种类的证书。在开发阶段,用户也许需要申请不同的证书用于测试。一个证书可用于认证具有该证书中所定义的Capabilities的子集的任何应用。下图说明了S60的Capabilities:
图2:S60的capabilites
“Symbian Signed” 和“新的工具链”部分将不在本文介绍,请参考相关链接。
S60应用开发步骤
对开发新手来说,在S60 3rd edition上进行开发在某种程度上是比较困难的。本节着重介绍S60 3rd Edition的开发步骤,它与之前的一些平台(1st和2nd 平台)相比,S60 3rd Edition的应用在向真实终端部署上略有不同,并在开发上有一定的难度。下面详细介绍了所有的相关步骤。
安装
l 在诺基亚论坛网站上注册一个账户
诺基亚论坛网站上的许多下载需要预先注册,虽然也有一些下载无需注册。注册是免费的,所有的SDK、文档和范例代码等下载都是免费的。诺基亚论坛注册网站是:http://www.forum.nokia.com/main/registration/registration.html
l 安装开发工具
目前有很多开发工具可供S60 3rd Edition开发使用,如:
1. Microsoft Visual Studio.NET 2003。开发伙伴需要先安装Microsoft Visual Studio.NET 2003,然后去诺基亚论坛网站免费下载“Carbide_vs_2_0_1.html">Carbide.vs 2.0.1”。开发伙伴可以在诺基亚论坛主页上选择“Tools and SDK”,然后选择“All tools and SDKs”。进入页面后就可寻找所需的“Cabide.vs”插件。
2. Metrowerks CodeWarrior
诺基亚将不再继续提供Metrowerks Codewarrior这个产品(诺基亚拥有该产品),它将逐步淡出。取而代之的是一个全新的开发工具,名为“Carbide. c++”。开发伙伴可以从诺基亚论坛网站下载Professional, Personal版本,或OEM版本。安装后可获得一定时间的试用期。开发伙伴可以在诺基亚论坛主页选择“Tools and SDK”,然后选择“Symbian C++/tools”,找到这个工具。
该工具支持终端在线调试。为支持终端在线调试,开发伙伴需要安装下列CodeWarrior更新:CodeWarrior On-Device Debug Kit for Series 60 3rd Edition。开发伙伴可以到诺基亚论坛网站下载视频文件“Symbian OS C++应用的终端在线调试”。诺基亚论坛网站还提供了有关终端上调试的用户指南“Symbian OS软件的终端在线调试”。
请注意:如果开发者想使用下列命令:bldmake bldfiles、abld build winscw udeb、abld build gcce urel在MS-DOS窗口中来编译自己的应用,请下载并安装CodeWarrior,否则这些命令可能无法正常运行。如果没有许可证书,CodeWarrior IDE界面可能无法启动,但是只要CodeWarrior被安装,这些命令行命令是可以被成功执行的。
当在MS-DOS命令框中编译一个应用时,请确保“EPOCROOT”环境变量设置恰当。关于“EPOCROOT”设置方面的更多信息请参考SDK帮助。另一种方法是不使用“EPOCROOT”,而使用“devices”命令来选择所需的SDK,如果在PC上安装了多个SDK的话。开发伙伴们可以在MS-DOS命令框中输入下列命令,获得有关“devices”命令的更多信息:devices --help
3. Carbide C++ Express 1.0/1.1
这是用于S60 3rd edition开发的唯一免费工具,用户可以到诺基亚论坛网站免费下载该工具。开发伙伴可以在“Symbian C++/tools”分区找到这个工具。您也可以到下列地址下载:www.forum.nokia.com/carbide。
4. Carbide C++ 1.0/1.1
这是诺基亚论坛提供的最新开发工具,它既支持UIQ也支持S60平台。开发伙伴可以在诺基亚论坛网站上找到更为详细的信息。同时,开发伙伴们可获得一段时间的免费试用期。
它支持终端在线调试且在工具集中提供出色的用户界面设计器,大大加快了Symbian应用的开发速度。同时,“Professional”和“OEM”版本还提供了更为先进的性能测试和调试功能。
诺基亚论坛网站上有一个名为“Carbide on-device Debug Screencast”的视频录像。开发伙伴们还可以到诺基亚论坛网站下载“Cabide.c++ Developer and Professional Edition, 1.1”。
建议开发伙伴们先安装这些工具,然后才安装S60 3rd Edition SDK,因为安装SDK会更新相关工具中的某些组件。
l 安装S60 3rd Edition SDKs
用户请到下列网站下载S60 3rd edition SDKs:www.forum.nokia.com请在主页选择“Tools and SDKs”,然后选择“Symbian C++/tools”。网站上有几个S60 SDK。用户可以在该网站上下载下面这些SDK用于S60 3rd edition应用开发:3rd Edition、FP1、3rd Edition、Maintenance release。
用户也许会发现另一个“3rd Edition”版本,这是S60 3rd Edition刚推出时的较早发行版。开发伙伴们如果想开发能运行于所有S60 3rd Edition手机(包括那些FP1/FP2及后续版本)上的应用,我们建议去下载“Maintenance”版的SDK用于开发工作,因为这是一个比较成熟的版本,也是以后所有S60 3.0 SDK的基础,尽管以后的feature packs会引人一些高级功能。
虽然以前某些S60的版本出现过中文版本的SDK,对中文开发者来说,S60第三版SDK并没有独立的中文版SDK供下载。中文版本的SDK已经被集成到了欧洲语言版的SDK中。开发伙伴在电脑上需通过下列步骤就能启用中文环境:
“Start” ==> “Programs” ==> “S60 developer tools” ==> “3rd Edition SDK” ==> “1.1 MR” ==> “Languages” ==> “Change to Chinese”
l 插件
开发伙伴也可为“Maintenance”SDK安装如下的插件,以追求更佳的多媒体模拟效果:Extensions plug-in for S60 3rd Edition SDK for Symbian OS, for C++, MR。开发伙伴也可安装在诺基亚网站上的“S60 3rd Edition: Device Management Plug-in”。开发者也可为诺基亚的运动手机5500安装“Sensor plug-in”。
如果开发伙伴不能成功安装SDK,建议其参阅诺基亚论坛网站的讨论区的帖子:Can't install S60 3rd SDK。这个帖子提供了解决这一问题的迂回方案。开发伙伴需要创建一个空文件“S60_3rd.xml”,并将其置于3rd Edition SDK安装包被解压缩到的那个安装目录中,然后再进行安装。
如果开发伙伴们多次安装并卸载S60 3rd edition maintenance SDK,安装文件目录的名字将不断改变,如“\Symbian\9.1\S60_3rd_MR_1”或“\Symbian\9.1\S60_3rd_MR_2”为去除安装序列号“1” 或“2”,开发伙伴需要于安装前在您PC的Windows注册码数据库中删除下列注册码:HKEY_LOCAL_MACHINE\SOFTWARE\Nokia\com.nokia.s60。
如果开发伙伴们希望用命令行编译其应用,请参阅SDK帮助以获取更多信息。有时候在一台计算机上需要安装几个SDK,为了便于从一个SDK切换到另一个,请使用“environmentswitch.exe”工具,该工具并不存在于3rd Edition SDK中。开发伙伴们可以到早先的SDK安装中寻找这个工具。例如,在2.0平台的SDK中:\Symbian\8.1a\S60_2nd_FP3\Series60Tools\environmentswitch\environmentswitch.exe 。
l 安装Java运行时环境
开发伙伴可以到http://java.sun.com网站下载最新版Java SDK和运行时环境(如Java 1.5.0_06)。请确保使用“控制面板”将所需的路径和环境变量正确添加到计算机的环境变量中。
l 安装Perl
请从下面的网站下载最新版perl: www.activestate.com (ActivePerl-5.6.1.635)。请在PC的“控制面板”中为Perl设定正确的路径。
S60 3rd Edition应用开发过程
本节介绍在S60 3rd Edition上进行开发的过程。由于在S60 3rd Edition中引入了平台安全概念并使用了新的编译器,其开发过程与S60 2nd Edition上的开发略有不同。在S60 3rd Edition上的开发过程可以用下图表示:
图3
文档《S60 3rd Edition:工具链、IDE及开发过程》讲解了整个过程。该文档可在下列地址中下载: http://www.forum.nokia.com/info/sw.nokia.com/id/5d1433ce-482a-4d12-9e48-d3ada8107aea/S60_3rd_Ed_Tool_Chain_IDEs_And_Development_Process_v1_2_en.pdf.html。www.symbiansigned.com网站上也有一篇介绍开发过程的好文章:https://www.symbiansigned.com/app/page/overview/process。
l 编码(Coding)
开发伙伴可以导入一个.mmp文件来启动一个现有的工程,也可以用IDE工具中的“Wizard”来生成一个模板应用。通常这是推荐的方法。
在开发阶段,请预先安排好本地化和可缩放用户界面问题。因为该应用可能运行于所有的终端上,而这些终端又可能具有不同的屏幕尺寸和显示屏布局。此外,应用也许要支持不同的语言。在.loc或.rls中定义本地化字符串永远是获得良好的本地化支持的好习惯。如果应用需要支持本地化,请不要在.cpp文件或.rss文件中定义需要进行本地化的字符串。
l 编译(Building)
开发伙伴既可以使用IDE工具中的编译功能也可以使用MS-DOS命令来编译范例代码。至于如何编译一个应用请到SDK帮助中寻找更多信息。
l 测试(Testing)
开发伙伴们可以在PC模拟器环境中编译并运行应用。如果没有发现问题,就能将这个应用部署到一台真实的目标机中进行测试。在S60 3rd edition上,应用的部署与S60 2nd edition也略有不同,同时还涉及到Symbian Signed。后面几节将有更为详细的介绍。在开发阶段中,开发伙伴可以申请开发伙伴证书,用于对正在开发的应用进行认证以便测试。后面章节将介绍如何申请开发伙伴证书。
开发伙伴可以到www.symbiansigned.com中寻找有关Symbian Signed测试标准方面的更多信息:https://www.symbiansigned.com/app/page/overview/testcriteria。如果出于某些商业原因某个应用需要被预装到一款诺基亚终端上,那么这个应用就必须通过诺基亚测试标准(Nokia test criteria)。更多详情请访问:http://www.forum.nokia.com/main/technical_services/testing/index.html
l 认证(Signing)
所有S60应用都必须强制签名,然后才能被部署到真实终端上。有两种认证:
· 自认证:一个应用使用的UID位于0x80000000 – 0xFFFFFFFF之间,即非保护区域,这个应用只能使用某些基本的capabilities。更多信息请参考图2。
· Symbian Signed:一个应用使用的UID位于0x00000000 – 0x7FFFFFFF之间,即保护区域,这个应用可能使用某些敏感APIs。
有关UID范围方面的说明在http://www.symbiansigned.com中有更为详尽的信息,地址为:https://www.symbiansigned.com/app/page/dev/uidfaq。请注意:成功登录后方可点击该链接。
开发伙伴全面测试某个应用之后,如果需要通过Symbian Signed,就应该将这个应用递交到测试机构进行进一步的测试。目前在全球范围有三家测试机构:
l mPhasis
l Capgmini
l NSTL
三家测试机构的价格各不相同,开发伙伴可以自由选择任何一家。
请到www.symbiansigned.com了解更多有关Symbian Signed及测试帮助方面的信息。在这个网站上可以找到有关认证过程的详细信息:https://www.symbiansigned.com/app/page/overview/process。
请注意,开发伙伴向测试机构递交应用前需要申请一个ACS publisher ID,而在开发阶段申请开发伙伴证书就不需要。如果开发伙伴拥有一个ACS publisher ID,就可以用这个ID来申请一张适用于最多不多于100台移动终端的证书。有关开发伙伴证书方面的更详细信息请参阅:https://www.symbiansigned.com/Developer_Certificate_Request_Process_v2.0.pdf
由于一些原因,中国开发伙伴们申请ACS publisher ID可能会比较困难。根据与Verisign达成的一项协议,已经为中国的开发伙伴们设立了一个“绿色通道”。请于www.symbiansigned.com了解更为详细的信息,文档则位于:https://www.symbiansigned.com/SymbianSigned-General2006_v1_1.pdf。
l 传送和发布(Transferring and distributing)
应用经过正式认证之后,就可以发布了。下面一些章节提供了一些发布的链接,同时诺基亚NCD(Nokia content Discover)也可用于分发。NCD是一个安装于手机客户端的应用。用户使用NCD可以方便地下载所需要的应用。
S60 3rd Edition的部署
开发并在模拟器环境中充分测试应用之后,可以将该应用部署到某台真实的终端上。如上所述,必须对S60 3rd Edition进行强制认证然后才能将其部署到真实终端上。
l 对于自认证应用,开发伙伴需要在命令行中用“makekeys”来生成一个密钥及证书,用于对该应用进行认证:
makekeys -cert -password 12345 -dname "CN=username OU=NOKIA CO=CHINA EM=xyz@abc.com" mykey.key mycer.cer;
另一种方法则是用Symbian 的“Certificate Request”(后面介绍)应用来生成一个密钥。
l 对于需要进行Symbian Signed的应用来说,开发伙伴在开发过程中需要一个开发者证书来进行开发。开发者证书的有效期只有半年的时间。使用下列步骤来生成所需的开发伙伴证书:
1. 从www.symbiansigned.com下载最新版“Certificate Request”应用,安装该应用;
2. 启动“Certificate Request”应用,选择一个.csr名(证书请求)。在此步中,如果并没有有效的密钥文件,请不要在文本编辑器字段输入密钥文件,而是在“Private Key”字段点击“…”按钮。这时当创建一个请求文件时会生成一个密钥文件;
3. 完成余下步骤,最后生成了一个.csr和一个 .key文件;
4. 进入www.symbiansigned.com网站。注册一个账户,登录到这个网站。登录后,“My Symbian Signed”标签成为可见。请在该页面上选择“Developer certificate”,并上传先前生成的.csr文件。
如果这个证书申请过程并不涉及到制造商capabilities,那么开发伙伴就可以在上传请求后立即从这个网站下载一个.cer证书文件。对于含有制造商capabilities的那些证书,请联系诺基亚论坛业务经理或相关的业务集团,要求协助以证明这些业务理由的正当性,然后才能递交请求。
针对“gcce” 和“armv5”(如果开发伙伴具有这个编译器)对应用进行编译。通常情况下,“armv5”编译器编译出来的代码比“gcce”要小得多。但是“gcce”是SDK安装包中自带的免费编译器。开发伙伴可以使用下列命令来对应用进行针对“gcce”的编译:
bldmake bldfile
abld build gcce urel
使用“makesis”命令来生成一个.sis文件:makesis myapp_gcce.pkg。在“myapp_gcce.pkg”文件中,它定义了所需安装文件安装的路径。开发伙伴得到了.key 和.cer文件之后就可以使用以下命令对应用进行认证,以便将其部署到真实的终端上:signsis myapp_gcce.sis myapp_gcce.sisx mycer.cer mykey.key mypassword
这里,“signsis”命令用于认证应用,而“myapp_gcce.sisx”是输出的被认证的文件,尽管在这种情况下扩展名并不重要。开发伙伴也许需要在命令中放置正确的路径,以便使该命令能得到正确执行。应用被认证之后就可以通过蓝牙或红外部署到真实终端中进行测试。
某些IDE提供一些用户界面来管理证书和密钥。开发伙伴可以方便地选择针对“gcce” 还是“armv5”的编译,然后在编译阶段对应用进行自动认证。Carbide.c++ 和Carbide.vs都具有这项功能。
当开发者完成了自己的应用开发后,开发者需要把自己的应用发送给上面列出的三家测试机构中的任何一家来进行Symbian Signed。经过认证过后的应用就可以发布了。
结论
S60平台是移动电话市场中的先进智能手机平台。目前正被一些移动电话制造商广泛采用。S0平台是一个面向第三方开发伙伴的开放平台,并在不断变化和发展中。S60 3rd Edition集成了一些新的特性,如平台安全性及新一代的操作系统内核等。由于引入了新的安全模型,S60 3rd Edition上的开发过程与其早期版本(S60 2nd Edition)略有不同。S60终端是安全的,覆盖各个细分市场的广泛范围。同时,新ARM二进制接口和平台安全的引入要求开发伙伴们改变其使用的开发工具,且在某些应用中需要使用附加的证书。S60 3rd Edition的推出向开发伙伴们既提供了新的商机。
相关链接
目前开发伙伴们可以通过下面一些网站找到有关S60的所有最新信息:
http;//www.nokia.com/developers
http://www.symbian.com
作者:peterzb(个人开发历程知识库 -
博客园)
出处:http://peterzb.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。