天天看点

Symbian开发入门 1.      Symbian简介 2.      Symbian开发 3 开发资源不完全索引4 小结

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变量的内容(通常可以这样设置:右击我的电脑—&gt;属性—&gt;高级—&gt;环境变量—&gt;系统变量。安装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

Symbian开发入门 1.      Symbian简介 2.      Symbian开发 3 开发资源不完全索引4 小结

从K&amp;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所示

Symbian开发入门 1.      Symbian简介 2.      Symbian开发 3 开发资源不完全索引4 小结

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,如需转载请自行联系原作者。