本文一步步的介绍了如何利用工具快速搭建一个Symbian开发平台(s60_fp2_sc+vc6)。如果想了解如何手动的生成工程并编译运行,请参考SDK文档。
一、什么是Symbian OS
Symbian OS是一个为移动设备而定制的操作系统。在全球智能手机操作系统的市场份额中,处于领先地位。紧随其后的是windows Mobile、Palm OS和Linux。智能手机和PDA是两个概念,Symbian主要针对智能手机,不过二者已经逐渐出现了融合的趋势。Symbian OS由Symbian组织负责维护和发展,该组织由许多不同背景的公司组成。其中最主要的推动力量是Nokia。
Symbian OS系统按照人机界面交互大致分为Series60、Series80、Series90、UIQ,其中Series90会逐步的并入Series80。对应的Nokia的手机产品线则分为Series40(底端,非智能平台)、Series60(中端,逐步代替Series40)、Series80(高端)。
S60手机是智能手机中最常见的,市场份额最大。S60也有众多的版本存在,一些版本的变更还带来了二进制代码的兼容性问题。因此,要查阅官方资料了解目标手机对应的版本,再选择正确的SDK。
Series 60版本:
l Series 60第一版 对应Symbian OS 6.1
l Series 60第二版 对应Symbian OS 7.0s
l Series 60第二版Pack 1 对应Symbian OS 7.0s
l Series 60第二版Pack 2 对应Symbian OS 8.0a
l Series 60第二版Pack 3 对应Symbian OS 8.1a
l Series 60第三版 对应Symbian OS 9.1
关于各个版本的差异,请参考Nokia forum。
二、环境配置
2.1安装SDK
第一步,到Nokia论坛下载SDK, http://www.forum.nokia.com/main/0,6566,034-4,00.html,这里选择的是S60 2nd Feature Pack 2 简体中文版。请注意不同的版本对应的IDE也各不相同,参考上述页面中的说明。例如,S60 2nd Feature Pack 2支持Microsoft Visual Studio 6 和Microsoft Visual Studio .NET 2003 Professional。
J 如果你下载的不是这个版本,可能这篇文章并不完全适合你。因为几乎Symbian的每个版本的安装都有细微变化,参考安装文件下的realeasenotes.txt
第二步,下载Perl和Java的运行时环境,SDK需要他们的支持。到http://www.activestate.com 网站下载最新的Active Perl Script 安装程序。S60 2nd Feature Pack 2需要Active Perl 5.6.1 build 531。到http://www.java.com/下载J2RE,1.4.1_02版本以上。事实上还需要MSXML4.0,不过大部分windows已经自带。
第三步,安装Perl和J2RE。
第四步,安装SDK,最好安装到独立目录,例如D:\Symbian。
第五步,安装VC6,打好SP5补丁(最少SP3)。VC的安装和SDK的安装是独立的,没有先后顺序的要求。坦率的说对于Symbian开发,VC6不是一个非常好的IDE,不过开发者(至少我)对其相当的熟悉。如果你采用其他的IDE,比如VC.net或 CodeWarrior,请参考SDK的文档。
2.2 配置环境
也许你之前已经看了一些手动环境变量的文章。手动配置环境的一个缺点是当你安装了不同版本的SDK后,在这些版本间做切换变得十分麻烦,尽管可以利用Sbset命令做磁盘影射来巧妙的解决这一问题。对于新手,可以使用Symbian\8.0a\ S60_2nd_FP2_SC\Series60Tools下的environmentswitch工具来配置环境。该工具利用一个XML来配置多种环境下的变量,并提供了一个任务栏上的常驻图标来切换不同的环境。如图有两个环境,一个是我配置的Series 60 2nd Ed. SDK,另一个是系统自带的Demo。活用这个工具可以帮助你。
点击Setup…将打开settings.xml文件。
<settingsfile>
<environment name="Series 60 2nd Ed. SDK for Symbian OS, FP 2 - Chinese version(VC6)">
<env key="PATH" action="prepend" value="C:\Perl\bin;"/>
<env key="PATH" action="prepend" value="D:\Symbian\8.0a\S60_2nd_FP2_SC\Epoc32\Tools\;"/>
<env key="PATH" action="prepend" value="D:\Symbian\8.0a\S60_2nd_FP2_SC\epoc32\gcc\bin;"/>
<env key="PATH" action="prepend" value="C:\Program Files\Common Files\Symbian\tools;"/>
<env key="PATH" action="append" value=";D:\Microsoft Visual Studio\VC98\Bin;D:\Microsoft Visual Studio\Common\MSDev98\Bin"/>
<env key="EPOCROOT" action="replace" value="\Symbian\8.0a\S60_2nd_FP2_SC\"/>
<command value="devices -setdefault @S60_2nd_FP2_SC:com.nokia.series60" binding="entry"/>
<command value="epoc.exe" binding="menu" caption="Emulator UDEB"/>
<command value="epoc.exe -rel" binding="menu" caption="Emulator UREL"/>
</environment>
<environment name="Demo">
<testwindow on="Entered empty Demo environment" off="Goodbye"/>
</environment>
</settingsfile>
environment元素
一个environment元素代表一个环境,name代表在任务栏上显示的名称。
env元素
env元素是environment的子元素,代表了一个环境变量。key是名字,value是值,action代表动作。可选的动作有"prepend"、"append"、"replace",分别代表前置、后置和替换。
在上面的例子中,首先是配置Path:分别配置了Perl、VC、Symbain的Path路径,请参考你的安装目录进行配置。配置Path一般不要使用" replace "作为Action。如果使用" prepend ",请确保Value的最后一个字符是";"。如果使用"append",请确保Value的第一个字符是";"。
配置EPOCROOT,也就是SDK的根目录,value="\Symbian\8.0a\S60_2nd_FP2_SC\"。这个参数要以"\"开始,以"\"结尾,不能包含驱动器号。
command元素
command元素是environment的子元素,代表了一个命令。命令元素包含以下属性:
'value' 属性(必需) – 执行的命令
'directory'属性- 工作目录
'binding'属性- 何时执行,可选值有:
"entry" –环境被选择时执行。
"exit" –退出环境时执行 (当EnvironmentSwitch退出或用户切换到别的环境)。
"middlebutton" – 鼠标中键双击时执行,很方便的功能哦。
"doubleclick" – 鼠标左键双击时执行。
"menu" – EnvironmentSwitch菜单被选中时执行,这个最常使用。
'caption' attribute – 如果'binding'为menu,代表菜单上显示的名称
举个例子代表在菜单中我们配置了一个调用模拟器的命令。
三、使用ApplicationWizard创建目标工程
ApplicationWizard是一个辅助工具用于为不同的IDE建立Symbian的工程。该工具位于 Symbian\8.0a\S60_2nd_FP2_SC\Series60Tools下。如果使用environmentswitch,请确保切换到正确的环境下。
运行wizard.bat开启ApplicationWizard。
设定好工程的目录。接下来一路Next下去,设置好一系列的附加选项。使用默认的也可以。在IDE中选择你使用的IDE,这里仅仅安装了一个VC6所以只有一个选项,点击Generate,生成工程。最后会提示你是否打开VC6,编辑工程。

打开VC6编译工程,并手动开启模拟器Debug版(通过开始也可,通过刚刚配置的environmentswitch命令也可)。在模拟器的底部可以看到刚刚编译好的程序。如果对代码作适当修改后要重新运行,则应首先关闭模拟器并rebuild工程,再次打开模拟器运行程序,过程显得比较麻烦。
编译过后,会在\Symbian\8.0a\S60_2nd_FP2_SC\epoc32\release\ wins\udeb\z\system\APPS下生成你的工程文件,如果需要从模拟器中删除已经生成的工程,只要在这里删除相应目录就可。如果要彻底移除工程,则在\Symbian\8.0a\S60_2nd_FP2_SC\下搜索工程名称,将检索到的所有内容删除。
CodeWarrior(CW)是Metrowerks公司的产品,对Symbian的支持非常好,s60 fp3及以后的版本都优先支持CW,该IDE支持不用重启模拟器就可重新编译程序,并可以设置端点进行调试,很方便。如果有朋友拿到License可以试用一下。
如果对安装配置还有问题,请参考SDK的文档,该文档位于:D:\Symbian\8.0a\ S60_2nd_FP2_SC\Series60Doc\S60_SDK_Help.chm,想比晦涩难懂的MSDN,这份文档要有友好很多。即使没有太好的英文基础的朋友也可以流畅的阅读,并且图文并茂。初学者80%的问题都能在这里得到解答。
四、使用vc
1.1.2 配置VC
如果我们使用的是VC 6.0,我们要保证系统至少打了SP3补丁,否则系统会有警告提示。如果我们使用的是VS.NET2003, 我们就只能安装 Series 60 SDK for Symbian OS v2.1,因为 Series 60 SDK for Symbian OS Nokia Edition SDK v1.2在VS.NET2003无法正确建立工程。
如果要直接在vc6里创建新项目,要把\Symbian\6.1\Series60\Series60Tools\ Application Wizard目录下的 AvkonAppWiz.awx和AVKONAPPWIZ.HLP文件拷贝到vc6的模板目录C:\ Program Files\ Microsoft Visual Studio\ Common\ MSDev98\ Template下。这样我们就可以在VC的新建工程中看到Series 60 AppWizard v 1.9这个选项.
填入Project Name 以后,确认。
一路“Next”,一个最简单的Symbian应用程序就建立好了。
如果要将已经建立好的工程导入到VC6.0中,比如我们将SDK中的例子HelloWorld转换成一个VC6的项目,我们首先进入\Symbian \6.1\Series60\Series60Ex\HelloWorld目录。在这里我们可以看到,在Symbian中,一个Project通常是按 inc, src, group等目录组织,group目录里通常放的是项目文件,所以编译时要先到这里。用命令提示符模式进入刚才说的那个目录下,然后执行:
bldmake bldfiles
这个命令会在group目录下生成一个abld.bat的批处理文件,并且会在\Symbian \6.1\Series60\Epoc32\BUILD 下生成\Symbian\6.1\Series60\Epoc32\BUILD\SYMBIAN\6.1\ SERIES60\SERIES60EX\ HELLOWORLD\GROUP这个目录,并在最底层目录下生成一堆 .make文件。
然后,我们在同一个目录运行刚才生成的abld.bat:
abld makefile vc6(这个步骤可以没有,他是生成VC下的一些工程文件,好方便你在VC下打开)
这样就会自动生成vc6的dsw文件,位置在\Symbian\6.1\Series60\Epoc32\BUILD\ SYMBIAN\6.1\ SERIES60\SERIES60EX\HELLOWORLD\GROUP\HELLOWORLD\WINS。然后我们就可以在VC6种打开这个 Symbian工程了。
1.2 编译
我们可以直接使用SDK提供的工具编译Symbian 工程,也可以使用VC6提供的集成环境来编译转化过的Symbian 工程。编译的结果存放在\ Symbian\6.1\Series60\Epoc32\ Release\wins\UDEB\Z\SYSTEM\apps目录中。
2.2.1使用SDK提供的工具编译Symbian 工程
我们在上一节的那个位置继续输入:
abld build wins udeb
这个命令会编译我们的程序,最后在\Symbian\6.1\Series60\Epoc32\Release\wins\UDEB目录下生成我们的 helloworld,然后我们可以从开始菜单里运行模拟器的debug版,在模拟其中就可以运行helloworld了。
1.2.2 使用VC6编译Symbian 工程
我们直接打开运行abld makefile vc6后生成的dsw文件,VC自动装载转化过的工程。按F7便可以直接编译工程,编译结果同样放在\ Symbian\6.1\Series60\Epoc32\Release\ wins\UDEB目录中。然后我们打开模拟器debug 版,就可以看到我们编译好的工程了。
1.3 打包
我们以SDK 1.2提供的HelloWorld为例,制作可以在手机中安装的.SIS文件:
1.3.1.检查程序
首先,在命令行格式下,进入HelloWorld工程mmp文件所在目录,输入bldmake bldfiles和abld build wins udeb,然后打开模拟器,检测程序有无错误。
1.3.2.编译工程
在程序无错误后,在命令行输入abld build armi urel 。执行这个命令之后会在目录d:\symbian\6.1\series60\ epoc32\release\armi\urel生成HELLOWORLD.APP和HELLOWORLD.RSC两个文件。
1.3.3.建立.pkg文件
在d:\Symbian\6.1\Series60\Series60Ex\helloworld\sis 用记事本建立或者修改工程的pkg文件,内容如下:
; HelloWorld.pkg
;
;Language - standard language definitions
&EN
; standard SIS file header
#{"HelloWorld"},(0x10005B91),1,0,0
;Supports Series 60 v 1.2
(0x101F8202), 0, 0, 0, {"Series60ProductID"}
;
"d:\symbian\6.1\series60\epoc32\release\armi\urel\HelloWorld.APP"-"!:\system\apps\HelloWorld\HelloWorld.app"
"d:\symbian\6.1\series60\epoc32\release\armi\urel\HELLOWORLD.rSC"-"!:\system\apps\HelloWorld\HELLOWORLD.rSC"
其中,前面"d:\symbian\6.1\series60\epoc32\release\armi\urel\HELLOWORLD.rSC"是要打包安装的文件,"!:\system\apps\HelloWorld\HELLOWORLD.rSC"是安装的目标位置。在其中要注意的是,我们在目标位置中用“!”代替了实际的盘符。这样做得好处是在用户安装的时候,手机系统会提示用户选择要安装的位置,这就给了用户更大的灵活度。另外,在 Symbian 系统中,安装的应用程序默认位置是“!:\system\apps ”。
编辑好pkg文件后,保存至相应目录。
1.3.4.打包程序
在命令行中,转至pkg文件所在目录,运行命令makesis HelloWorld.pkg。之后我们就在同一目录下得到了打包好的.sis文件。
1.4 手机测试
将打包好地.sis文件上传至手机中,然后在手机的应用程序管理器中就可以看到我们打包好的文件。选择“安装”命令,系统会提示用户要安装的位置,选择安装位置后,我们制作的应用程序就安装到手机中了。
我们回到手机的主菜单,就会发现新安装的HelloWorld 应用程序。打开运行,结果和在模拟器中看到的基本是一样的。
注意:SDK1.2以下版本需要EPOCROOT
SDK以上用DEVICES设置
传递到目标硬件上的应用程序的形式为Symbian安装系统(.sis)文件。.sis文件是一个压缩的存档文件,它包含了安装所需要的所有文件,还包括了安装过程的选项信息。Symbian安装系统为把应用程序、数据或配置信息安装到基于Symbian操作系统的设备上提供了简单的和一致的用户界面。开发者(或最终用户)安装的组件都包含在.sis文件中。
我们可以使用Series 60 SDK提供的交互式工具sisar来执行.sis文件的生成工作。为了容易在目标硬件上安装应用程序,sisar把所有的应用程序文件打包到一个.sis文件中。
制作安装(.sis)文件所有需要的信息都在示例项目HelloWorld中提供了--它们位于\install folder下。在示例项目中我们使用了一个专用的安装包源文件(HelloWorld.pkg)和Symbian提供的一个工具makesis.exe。
建立SIS安装文件
在你建立了HelloWorld应用程序的armi发布版之后,你需要把所有的应用程序组件打包到一个安装程序包(.sis)文件之中。打开命令提示符并导航到HelloWorld项目的SDK文件夹。切换到\install folder,接着输入下面内容建立.sis文件:
makesis helloworld.pkg
成功的建立将会输出类似"Created helloworld.sis"的消息。安装程序包(.sis)文件将建立在\install folder下面。现在你必须它把传输到设备上。
SIS文件的安装
你可以在三种潜在的安装选项中作出选择,这依赖于你使用的设备和其它可以使用的工具--例如,你是否能够通过红外线或蓝牙设备访问PC,或访问基于Symbian Connect(Nokia PC Suite,或其它设备厂商提供的这类东西)的一些软件:
· 安装通过调用PC上的.sis文件进行,后续的Series 60设备的应用程序安装过程通过PC与目标设备之间的红外线或蓝牙对话,由软件(例如Symbian Connect)建立连接来完成。
· 安装通过OBEX(OBject EXchange),经由红外线或蓝牙,从任何设备(例如PC、Symbian OS电话或其它任何可以使用 OBEX的设备)把.sis文件传输过去。这个过程可以由Messaging应用程序来管理,它可以截取附加在消息上的文件--当你打开消息的时候,它会在电话上自动启动应用程序安装过程。
· 作为选择,.sis文件可以作为电子邮件附件发送。应用程序安装也是通过电话上的Messaging应用程序管理的。当你打开消息的时候,它自动地启动安装程序。
前面两种方法依赖于你在开发项目的PC和Series 60设备之间建立连接。典型情况下设备厂商提供了适当的通讯软件,你必须参考连接软件提供的特定指令。
在安装之后,.sis文件大幅度简化的版本依然保留在Series 60设备上用于控制应用程序的卸载,如果需要,请使用应用程序"Manager(管理器)"。这个简化的.sis文件仅仅包含卸载应用程序所需要的信息,典型情况下比原始文件小很多。
如果.sis文件作为消息附件传递,而且原始消息没有从Messaging应用程序的Inbox文件夹中删除,那么原始的.sis文件也可能存在于设备上。
在目标设备上运行
把helloworld.sis文件使用上述的方法之一传输到目标硬件上。在传输之后,你就可以在设备上安装应用程序了。运行应用程序按照"定位和运行应用程序"一节列举的进行。你会确信目标设备上定位和运行的应用程序于模拟器上的是一样的--只有一个小小的差别:应用程序不会位于"Other"文件夹中。





