Symbian 成立于1998 年6 月,是由爱立信、Matsushita(松下)、摩托罗拉、诺基亚、Psion、西门子和索尼爱立信共同持股的独立私营公司。Symbian 在移动计算设备和手机软件技术开发领域拥有近二十年的丰富经验,是一家由各主要无线通信技术公司持股的软件许可证授权公司,为支持数据分组传输的手机提供高级、开放式、标准化的操作系统— Symbian OS™。
目前,全球主流手机操作系统主要有四种:
Symbian OS
Windows Mobile
Palm OS
Linux OS
Symbian OS一支独秀,市场占有率达到了70%,而微软的windows mobile和其他操作系统一共只有30%的份额。
截至目前,以发布的采用Symbian OS的手机有:
为Symbian OS开发应用程序的第一步就是获得一个SDK。Symbian OS SDKs支持基于Java和C++的开发。
这些SDK提供:
1、便于构建和开发Symbian OS应用程序的一组二进制文件和工具。
2、所有API和工具的系统文档。
3、基于PC的Symbian OS手机模拟器。
4、带支持文档的样例应用程序。
由于Symbian OS本身不包括用户界面等,所以,通常会由一些伙伴厂商为Symbian OS提供特定的UI Platform。因此SDKs都是基于一个特定的UI Platform来构建的。一个UI Platform提供一个独特的UI,还有一系列面向各种任务的相关系统应用程序。这些常见的任务包括:收发消息、浏览、电话功能、多媒体功能和联系方式/日历管理等等。这些应用通常都会使用由Symbian OS提供的一些应用引擎。
从Symbian OS v6.0开始,共有以下各种SDK:
UIQ
Nokia Series 90
Nokia Series 80 (previously “9200 communicator series”)
Nokia Series 60
Nokia Series 40
此前的SDK都是特地于某个设备,比如the Pison netPad。Symbian不再支持这些遗留SDK了。
对于一个软件开发者来说,在你为一个特定的手机开发应用程序时,首先需要了解的就是与它相关的UI Platform。然后,你需要了解这个手机所使用的Symbian OS的版本。有了这两方面的信息,你就可以决定自己需要那个SDK了。
在大多数情况下,依靠这个SDK,你就可以开发一个单一版本的应用程序,然后能够在所有的基于相同的UI Platform和Symbian OS版本的手机上运行。
对于那些基于同一SDK的手机之间可能出现的各种差别,Symbian OS 系统定义文档给出了更进一步的细节信息。您可以自行查阅。
<a href="http://www.symbian.com/developer/techlib/papers/SymbOS_def/symbian_os_sysdef.pdf">Symbian OS System Definition</a>
我们可以看到SDK主要分为两大类,即Nokia Series系列和UIQ。而Series系列中又以Series 60平台最为流行。需要指出的是,以上只是从开发平台上对SDK进行了划分,划分粒度是非常粗的。每种平台都会对应着一系列具体的开发工具,您需要根据自身情况,做出选择。
对于Java的开发,本文将不做介绍。您如果有兴趣,可以自行参考本文后面的推荐资源。
Ø 安装VC++.NET 2003。需要指出的是,我们需要VC++的编译器来编译代码,但是其IDE却是可选的。我们也可以从命令行来编译我们的代码。
Ø 安装JDK或JRE
Ø 安装ACTIVEPERL
Ø 安装SERIES 60 SDK 2ND
Ø 设定环境变量。这恐怕是新手们最头疼的问题之一。网上对这个问题的解答,也可谓五花八门。所以最好的方法就是参考别人的意见,然后动手实践。以下内容均基于我的实践。有不同意见,欢迎讨论。
首先我想说,这一步完全是多余的,根本不需要。您甚至不需要严格的按照上面列出顺序来安装各种工具。不过我还是希望您可以耐心的把这段话看完,呵呵。
然后我想说,请使用VC++.NET带的“命令提示”工具来进行以下的实验。而不是使用Windows“附件”菜单中的那个“命令提示”工具。
原因如下:这里问题的关键是让各种工具可以在命令行上可见,这样我们就可以利用它们来编译我们的代码。而VC++.NET带的“命令提示”工具与Windows“附件”菜单中的那个“命令提示”工具的区别之一就是其PATH变量的值不同。前者的PATH变量包括:
1、安装VC++.NET过程中,添加的一些路径,包括主要的编译链接等工具。
2、系统环境下PATH变量的内容(通常可以这样设置:右击我的电脑—>属性—>高级—>环境变量—>系统变量。安装JDK,ACTIVEPERL,SERIES 60 SDK后,各种相应工具的路径也会添加到这里)。
而后者的PATH变量只包括2中的内容。
所以,如果不使用VC++.NET带的“命令提示”工具,您就会因为找不到相应编译工具,而无法继续下去。如果自己勤快一些,可以手动把1中的内容加到系统PATH中去,呵呵。这样就可以用Windows“附件”菜单中的那个“命令提示”工具了。
下面介绍一下我机器上的实验环境:
Ø VS.NET 2003(具体路径一大堆,故省略)
Ø Perl 5.8.6(D:\Perl\bin)
Ø JDK 1.5 (D:\Program Files\Java\jdk1.5.0_01\bin)
Ø SERIES 60 SDK 2ND (D:\Symbian)
Series 60平台基于Symbian OS 技术构造,包括用户界面、各种应用程序以及各种开发工具。Series 60的用户界面(UI)针对方便单手使用的目的进行了精心的设计。
从用户的角度来看,最为重要的特性也许正是它的UI。它的UI包括一个大屏彩显(176 x 208 pixel, 256 color display)以及各种输入按键(两个软键,五路导航键five-way navigation,收/发键等等,见图1)。Series 60平台包括一些常用的应用程序,比如个人信息管理(PIM)程序(比如,电话簿、日历、相册等),电子邮件程序,浏览程序,消息收发程序等等。Series 60平台还有一个安装引擎,通过它用户就可以安装或删除应用程序,既可以通过PC连接也可以通过“空中(OTA)”服务来完成。
图1 Series 60 Platform UI

从K&R开始,“Hello World”几乎成了入门必修课。呵呵,我们也顺其自然吧。
我们先将整个流程过一遍,然后再解释每一步都发生了什么。以下涉及到的各种路径都是以笔者的实验环境为依据的,您需要自行替换为自己机器上的路径。
1、打开VS.NET 2003自带的命令行,进入以下目录:
D:\Symbian\8.0a\S60_2nd_FP2\Examples\basics\helloworld
这里有我们即将涉及到的三个文件:
HelloWorld.cpp C++源文件
HelloWorld.mmp 项目定义文件
Bld.inf 组件定义文件
2、构建我们的例子,请输入:
bldmake bldfiles
这一步会生成一个文件ABLD.BAT。
3、编译和链接,请输入:
abld build wins udeb
这一步会生成供Series 60 调试模拟器使用的文件。
4、运行,请在命令行进入:
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb
这个目录含有刚生成的helloworld.exe文件。然后输入:
helloworld
这会调用Series 60的模拟器,并在其中运行helloworld.exe程序。效果如图2所示
2.4.2 与VS IDE配合
1、先重复2.4.1节的步骤1和2
2、请输入以下命令:
abld makefile vc7
这会在目录:
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS
下面生成VS.NET 2003所需的解决方案文件、项目文件等等。
还有一种方法是,输入以下命令:
makmake helloworld vc7
这也会生成VS.NET 2003所需的解决方案文件、项目文件等等,只不过是在当前的目录下。
3、通过上述过程生成的文件,即可在VS.NET 2003的IDE中打开helloworld项目。然后就可以按照构建、运行、调试其它项目的方法来处理该项目了。比如:输入HELLOWORLD.sln,然后用Ctrl+Shift+B生成,再用Ctrl+F5直接运行(不调试),效果与图2一样。您会注意到,模拟器出现的很快。那是因为该项目是个简单的控制台程序,无须载入各种GUI库即可运行。
上面只是按部就班的讲述了如何构建一个简单的程序,之所以没有涉及细节,是为了使您可以快速的体验一下开发过程(不包括调试,生成最终的发布版,载入实际目标设备运行等步骤)。下面就具体的介绍一下Symbian OS构建过程。
目前,构建Symbian 程序的两条主要的工具链为:
基于Metowerks CodeWarrior 编译器的工具链。
基于Microsoft Visual C++编译器的工具链。
您可以根据自己的意愿或需要来选用合适的工具,并配合相应的IDE来方便开发。但是一般来说不可以混合使用它们。
由于Symbian程序的构建工具以及最终目标的多样性,Symbian项目通常会先以一种通用的格式来描述。然后,可以使用相应的构建工具链来处理这个中立的项目文件,生成特定的项目文件。
刚开始,只有HelloWorld.cpp,HelloWorld.mmp,Bld.inf 这三个文件。其中HelloWorld.mmp和Bld.inf就是两个关键的项目文件。
HelloWorld.mmp:项目定义文件,描述了将要构建的项目信息,还定义了一些资源文件和应用程序信息文件。它是一个环境中立的文件,可以使用各种工具来处理并生成各种目标环境的make文件。您可以使用文本编辑器查看该文件。里面的信息还是很简明的,包括构建目标,构建类型,源路径,库文件,头文件等等信息。
Bld.inf:组件描述文件,它列出了一个组件当中包括的所有项目,还包括一些额外的构建指令。您也可以使用文本编辑器查看该文件。对于本实例来说,仅包括一个项目HelloWorld.mmp。
当我们运行
这个命令时,会处理当前目录下的bld.inf文件,具体来说会执行以下处理过程:
1、生成目录
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD
2、在这个目录下,生成一系列的Make文件,针对各种目标环境。比如VC7.MAKE,CW_IDE.MAKE等等。
3、在当前目录下生成abld.bat文件,这个文件会在随后用到。您可以查看该文件的内容。但是建议不要手工的更改它的内容。
Bldmake命令也支持其他的命令行选项,您可以直接输入bldmake来查看简要的介绍,还可以查看SDK文档了解详细信息。
由bldmake处理bld.inf文件得到的abld.bat文件,使得abld命令可用。Abld.bat控制着构建一个项目的方方面面。Abld命令的语法非常地灵活,它拥有许多命令行选项,它们的组合涵盖了各种构建需求。最常用的组合,莫过于abld build 和 abld clean 相关了。
这个命令时,将为wins平台(即通常的VC++环境)生成一个debug版本的程序。
具体来说,在
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS\UDEB
和
下面各生成了一些文件,比如Helloworld.exe文件。
如果只是调用
abld build
那么会为所有可能的平台构建程序。
而运行
abld clean
会删除属于当前组件的,编译过程中生成的所有中间文件和可执行文件,以及由链接器导入的库文件。
您也可以指定只删除某个平台的文件。
具体的abld语法,请查看SDK文档。
简而言之,就是处理.mmp文件,生成各种目标平台的make文件。既可以针对命令行来生成,也可以针对IDE来生成。用于命令行的makefile无法用于IDE。
所以我们的命令:
就为VS.NET 2003 IDE生成了相关的makefile,然后我们就可以通过这些文件借助VS的强大功能了。
更多的makmake语法,请查看SDK文档。
正如本文的摘要所述,这是一篇入门的文章。为此,文章舍弃了许多内容。笔者认为那些内容更适合出现在其他主题的文章中。呵呵,希望这篇文章能给您带来一些收获,帮助您顺利的搭上Symbian开发的快车。
欢迎指正,欢迎讨论!
本文转自peterzb博客园博客,原文链接:http://www.cnblogs.com/peterzb/archive/2009/06/11/1501606.html,如需转载请自行联系原作者。