在开发Symbian程序时一个典型的问题就是使它适应一些不同的平台。
一直到去年,都有以下事实:
如果目标对象为诺基亚那么开发者必须使用Nokia Series 60 v1.x SDK和Symbian激活的IDE,因为它们最后有自己的Nokia SDK版本。(Visual Studio, Metrowerks Codewarrior和Borland C++Builder)。
如果目标对象为SonyEricsson那么开发者没有其他的选择必须使用SonyEricsson/UIQ 2.0 SDK和Metrowerks CodeWarrior。
与Series 60 v2.0相比,Series 90和UIQ 2.1平台变得更复杂一些,因为SDK的数目正在快速地增加。
注意:没有提及Siemens SX1 SDK, Sendo SDK...现在在单机上安装若干SDK已经很普遍了。(就我来说,我一般使用Nokia Series 60 v1.2, Nokia Series 60 v2.0和UIQ v2.1 SDKs)此外,Visual Studio和Borland C++Builder的使用者不再需要到Codewarrior关注UIQ。事实上, 不是所有的SDK使用相同的方法配置自己:
基于SDK的Symbian 6.1(所有的Series 60 v1.x SDKs) 使用EPOCROOT环境变量
Symbian 7.0/7.0 SDK(UIQ ,Series 60 v2.0和Series 90)不是很容易使用的配置命令。
EnvironmentSwitch工具
很令人高兴的是,诺基亚提供了最新的(NS60 v2.0 and NS90 v1.0的第二版本)一个小的有用的程序叫做EnvironmentSwitch,它对于完成所有SDK的兼容是非常有用的(即使不是诺基亚的)。这个工具在:
C:\ Symbian\7.0s\Series60_v20\Series60Tool\environmentswitch
或
C:\ Symbian\7.0s\Series90_v10b_CW\Series90Tool\environmentswitch
My EnvironmentSwitch menu
需要两个文件运行这个工具:
environmentswitch.exe是可执行文件
settings.xml是配置文件。
settings.xml文件可以适当地配置系统。 EnvironmentSwitch在下面的位置中寻找它:
通过一个命令行完整地说明了路径(目录和文件名),或者
通过环境变量ENVSWITCHCONFIG来(目录和文件名)指定, 或者
从它的安装目录下一个叫做settings.xml的文件。
启动之后,一个小的黄色图标将会出现在任务栏里等待你选择运行你的SDK。
EnvironmentSwitch配置
配置文件是一个简单的基于XML的简单文件。在文章的下面有一个简单的例子。文件类型是settingsfile没有属性。
根目录的所有子目录都是配置环境下的。每个环境要素都是有代表性的定义一个新的SDK配置。一个环境要素包含以下属性:
name(强制)-菜单标题
icon(可选)-当这个环境被选择的时候ico文件象以前的EPOCICON一样
tooltip(可选)-当这个环境被选择时-默认值
一个环境要素的子要是为env或commond型。
env修改环境变量:
· key (强制) – 修改变量
· value (可选) –数值
· action (可选) – 如何修改当前值
o " prepend "
o " append "
o " replace " (默认) 注意: 使用 "replace"未安装变量
· registry (可选) – 如果 "yes", 在注册中修改当前控制设备来影响其它进程。(默认为”no”)
当环境取消选定时(包括注册),环境变量会恢复。(或 EnvironmentSwitch 终止)
指令成分描述了一个指令执行:
· value –指令 (强制)
· directory - (可选)工作目录在调用它的下面 – 旧的工程目录
· binding - (可选) 执行时,默认"entry":
o " entry " – 当环境被选择时运行
o " exit " – 当被取消选定时运行 (或EnvironmentSwitch 终止)
o " middlebutton " – 在中间滚轮时执行
o " doubleclick " – 在左键双击时执行
o " menu " - EnvironmentSwitch (鼠标右键) 菜单
· outputwindow - (可选) 如果 "yes", 捕获任何指令输出 (stdout和stderr) to错误消息- 支持 ’devices -setdefault’
· caption - (可选)如果与"menu"一起则为菜单项, 否则忽略。默认为数值属性
配置文件例子
这是我用的settings.xml 文件:
<?xml version="1.0" standalone="yes"?> <settingsfile>
<!------------------------------------- -- Symbian 6.1 / Series60 v1.2 SDK ------------------------------------> <environment name="Series60 v1.2"> <env key="PATH" action="prepend" value="C:\Symbian\6.1\Series60\Epoc32\Tools\;"/> <env key="PATH" action="prepend" value="C:\Symbian\6.1\Shared\Epoc32\Tools\;"/> <env key="PATH" action="prepend" value="C:\Symbian\6.1\Shared\EPOC32\gcc\bin\;"/> <env key="PATH" action="append" value=";C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin"/> <env key="EPOCROOT" action="replace" value="\Symbian\6.1\Series60\"/> <command value="cmd.exe /k title Series60 v1.2" directory="C:\Symbian\6.1" binding="middlebutton"/> <command value="cmd.exe /k title Series60 v1.2" directory="C:\Symbian\6.1" binding="menu" caption="Shell"/> <command value="cmd.exe /k title Series60 v1.2" directory="C:\Symbian\Projets" binding="menu" caption="Projets"/> <command value="epoc.exe -wins" binding="menu" caption="EPOC emulator"/> <command value="msdev.exe" binding="menu" caption="VC++ 6.0"/> <command value="C:\CBuilderX\bin\CBuilderW.exe" binding="menu" caption="C++BuilderX"/> </environment>
<!------------------------------------- -- Symbian 7.0s / Series60 v2.0 SDK -------------------------------------> <environment name="Series60 v2.0"> <env key="PATH" action="append" value=";C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin"/> <env key="PATH" action="prepend" value="C:\Program Files\Fichiers Communs\Symbian\Tools\;" registry="yes"/> <command value="devices -setdefault @Series60_v20:com.nokia.series60" binding="entry" outputwindow="yes"/> <command value="cmd.exe /k title Series60 v2.0" directory="C:\Symbian\7.0s\Series60_v20" binding="middlebutton"/> <command value="cmd.exe /k title Series60 v2.0" directory="C:\Symbian\7.0s\Series60_v20" binding="menu" caption="Shell"/> <command value="cmd.exe /k title Series60 v2.0" directory="C:\Symbian\Projets" binding="menu" caption="Projets"/> <command value="epoc.exe -wins" binding="menu" caption="EPOC emulator"/> <command value="msdev.exe" binding="menu" caption="VC++ 6.0"/> <command value="C:\CBuilderX\bin\CBuilderW.exe" binding="menu" caption="C++BuilderX"/> </environment>
<!------------------------------------- -- Symbian 7.0 / UIQ v2.1 SDK -------------------------------------> <environment name="UIQ v2.1"> <env key="PATH" action="append" value=";C:\Program Files\Microsoft Visual Studio\VC98\Bin;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin"/> <env key="PATH" action="prepend" value="C:\Program Files\Fichiers Communs\Symbian\Tools\;" registry="yes"/> <command value="devices -setdefault @UIQ_21:com.symbian.UIQ" binding="entry" outputwindow="yes"/> <command value="cmd.exe /k title UIQ v2.1" directory="C:\Symbian\UIQ_21" binding="middlebutton"/> <command value="cmd.exe /k title UIQ v2.1" directory="C:\Symbian\UIQ_21" binding="menu" caption="Shell"/> <command value="cmd.exe /k title UIQ v2.1" directory="C:\Symbian\Projets" binding="menu" caption="Projets"/> <command value="epoc.exe -wins" binding="menu" caption="EPOC emulator"/> <command value="msdev.exe" binding="menu" caption="VC++ 6.0"/> <command value="C:\CBuilderX\bin\CBuilderW.exe" binding="menu" caption="C++BuilderX"/> </environment> </settingsfile>
This file configures three SDKs [2]:
Series 60 v1.2 SDK (位于 C:\Symbian\6.1\Series60\)
Series 60 v2.0 SDK (位于 C:\Symbian\7.0s\Series60_v20)
UIQ v2.1 SDK (位于 C:\Symbian\UIQ_21)
对每个,我使用以下指令:
一个为SDK根目录打开内核的指令
一个打开工程目录的指令
一个开始选择SDK EPOC模拟器的指令
一个启动 Visual C++ 6 IDE指令
一个启动Borland C++BuilderX IDE指令
[1]你可以通过安装MSXML Core Services 4.0 SP2更新你的系统,从而消除开始时的warning。
[2]注意有一些行对我的窗口配置是有用的。为了重新使用这些文件,你需要更改每个包含C:\Program Files\Fichiers Communs路径从而适合你的系统(可能 C:\Program Files\Common Files.)
2004.1.5 作者: Bustarret
此文为开发视界翻译转载者请注明出处否则追究法律责任
|