Symbian s60入门

转载自 http://dev.csdn.net/htmls/62/62134.html

  摘要: Symbian OS 是目前市场占有率最高的移动设备 OS 。本文是 Symbian 开发的入门性文章,从零开始介绍了进行 Symbian 开发首先需要了解的一些东西,同时介绍了一些好的开发资源。阅读本文几乎不需要相关的基础知识。

1.       Symbian 简介

1.1       Symbian 起源

Symbian 成立于 1998 年 6 月,是由爱立信、 Matsushita (松下)、摩托罗拉、诺基亚、 Psion 、西门子和索尼爱立信共同持股的独立私营公司。 Symbian 在移动计算设备和手机软件技术开发领域拥有近二十年的丰富经验,是一家由各主要无线通信技术公司持股的软件许可证授权公司,为支持数据分组传输的手机提供高级、开放式、标准化的操作系统— Symbian OS ™。

1.2       Symbian 发展和现状

您可以前往 这里查看 Symbian发展史大事记 。

目前,全球主流手机操作系统主要有四种:

Symbian OS

Windows Mobile

Palm OS

Linux OS

Symbian OS 一支独秀,市场占有率达到了 70 %,而微软的 windows mobile 和其他操作系统一共只有 30 %的份额。

截至目前,以发布的采用 Symbian OS 的手机有:

Nokia 7610 , Siemens SX1 等等,您可以在 这里找到完整的列表 。那里还包括了正在开发中的基于 Symbian OS 的手机列表。

此外,您还可以在 这里找到 Symbian的合作伙伴列表 。

1.3       更多信息

需要从整体上了解 Symbian 系统,最为权威和准确的描述,莫过于 Symbian 的官方文档了。请参见 "Symbian介绍 " 。 得益于 “中文 Symbian” 的成果,这是一篇中文文档。

2.       Symbian 开发

2.1 Symbian SDK 简介

为 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 系统定义文档给出了更进一步的细节信息。您可以自行查阅。

Symbian OS System Definition

Symbian OS System Definition - Detailed View (updated to include v8.0)

我们可以看到 SDK 主要分为两大类,即 Nokia Series 系列和 UIQ 。而 Series 系列中又以 Series 60 平台最为流行。需要指出的是,以上只是从开发平台上对 SDK 进行了划分,划分粒度是非常粗的。每种平台都会对应着一系列具体的开发工具,您需要根据自身情况,做出选择。

本文将以“ SERIES 60 2ND EDITION SDK FOR SYMBIAN OS SUPPORTING FEATURE PACK 2 SUPPORTING MICROSOFT VISUAL C++ AND BORLAND C++BUILDERX ”这个 SDK 为基础,通过一个简单的 C++ 示例程序,让您对开发过程有所了解。您可以在 这里下载 此 SDK 。由上面这个长的有些恐怖的名字我们可以了解到,这个 SDK 支持在 VC++ 或 BCB 的 IDE 下开发程序。本文会先讲解如何通过命令行一步步的构建我们的第一个程序,然后还会简单介绍结合 VC++.NET 2003 IDE 的开发。此外,在安装该 SDK 以前,您需要安装 Java Runtime Environment v 1.4.1_02 以及 ActivePerl 5.6.1 。前者,推荐大家直接安装 JDK ,而不仅仅安装 JRE ,这些都可以在 http://www.sun.com 得到。后者大家可以前往 http://www.activestate.com 下载。

对于 Java 的开发,本文将不做介绍。您如果有兴趣,可以自行参考本文后面的推荐资源。

2.2 搭建开发环境

Ø         安装 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)

2.3 Series 60 平台介绍

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

2.4 从“ Hello World ”开始

从 K&R 开始,“ Hello World ”几乎成了入门必修课。呵呵,我们也顺其自然吧。

我们先将整个流程过一遍,然后再解释每一步都发生了什么。以下涉及到的各种路径都是以笔者的实验环境为依据的,您需要自行替换为自己机器上的路径。

2.4.1 从命令行编译

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

图 2  Hello World 运行效果

这会调用 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 库即可运行。

2.4.3 发生了什么?

上面只是按部就班的讲述了如何构建一个简单的程序,之所以没有涉及细节,是为了使您可以快速的体验一下开发过程(不包括调试,生成最终的发布版,载入实际目标设备运行等步骤)。下面就具体的介绍一下 Symbian OS 构建过程。

目前,构建 Symbian 程序的两条主要的工具链为:

基于 Metowerks CodeWarrior 编译器的工具链。

基于 Microsoft Visual C++ 编译器的工具链。

您可以根据自己的意愿或需要来选用合适的工具,并配合相应的 IDE 来方便开发。但是一般来说不可以混合使用它们。

由于 Symbian 程序的构建工具以及最终目标的多样性, Symbian 项目通常会先以一种通用的格式来描述。然后,可以使用相应的构建工具链来处理这个中立的项目文件,生成特定的项目文件。

刚开始,只有 HelloWorld.cppHelloWorld.mmpBld.inf   这三个文件。其中 HelloWorld.mmpBld.inf 就是两个关键的项目文件。

HelloWorld.mmp 项目定义文件,描述了将要构建的项目信息,还定义了一些资源文件和应用程序信息文件。它是一个环境中立的文件,可以使用各种工具来处理并生成各种目标环境的 make 文件。您可以使用文本编辑器查看该文件。里面的信息还是很简明的,包括构建目标,构建类型,源路径,库文件,头文件等等信息。

Bld.inf 组件描述文件,它列出了一个组件当中包括的所有项目,还包括一些额外的构建指令。您也可以使用文本编辑器查看该文件。对于本实例来说,仅包括一个项目 HelloWorld.mmp 。

2.4.3.1 Bldmake 命令的作用

当我们运行

bldmake bldfiles

这个命令时,会处理当前目录下的 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 文档了解详细信息。

2.4.3.2 abld 命令的作用

由 bldmake 处理 bld.inf 文件得到的 abld.bat 文件,使得 abld 命令可用。 Abld.bat 控制着构建一个项目的方方面面。 Abld 命令的语法非常地灵活,它拥有许多命令行选项,它们的组合涵盖了各种构建需求。最常用的组合,莫过于 abld build 和 abld clean 相关了。

当我们运行

abld build wins udeb

这个命令时,将为 wins 平台(即通常的 VC++ 环境)生成一个 debug 版本的程序。

具体来说,在

D:/Symbian/8.0a/S60_2nd_FP2/epoc32/BUILD/SYMBIAN/8.0A/S60_2ND_FP2/EXAMPLES/BASICS/HELLOWORLD/HELLOWORLD/WINS/UDEB

D:/Symbian/8.0a/S60_2nd_FP2/epoc32/release/wins/udeb

下面各生成了一些文件,比如 Helloworld.exe 文件。

如果只是调用

abld build

那么会为所有可能的平台构建程序。

而运行

abld clean

会删除属于当前组件的,编译过程中生成的所有中间文件和可执行文件,以及由链接器导入的库文件。

您也可以指定只删除某个平台的文件。

具体的 abld 语法,请查看 SDK 文档。

2.4.3.3 makmake 命令的作用

简而言之,就是处理 .mmp 文件,生成各种目标平台的 make 文件。既可以针对命令行来生成,也可以针对 IDE 来生成。用于命令行的 makefile 无法用于 IDE 。

所以我们的命令:

makmake helloworld vc7

就为 VS.NET 2003 IDE 生成了相关的 makefile ,然后我们就可以通过这些文件借助 VS 的强大功能了。

更多的 makmake 语法,请查看 SDK 文档。

3 开发资源不完全索引

Symbian OS 官方网站 不用多说,这是 Symbian 相关信息的最权威来源。

诺基亚论坛 这是最为活跃的移动开发技术社区。尤其是关于 Nokia Series 系列的资源非常的丰富。 而且,现在还有 诺基亚论坛简体中文版 这极大的方便了国内的开发者学习相关技术。

SDKs 之外的开发工具 除了各种 Symbian SDK 之外 , 还有许多有用的工具和 SDK 插件可供开发者使用。

基于 Symbian OS 的优秀开源项目 提高自己水平的一个有效途径就是学习或加入一个优秀的开源项目。

专门针对 Series 60 系列的网站 基于 Symbian OS 的 Series 60 平台是目前业界领先的智能电话平台。

UIQ 的官方网站 UIQ Technology AB 成立于 1999 年,是完全归 Symbian 公司所有的一家子公司。他们面向开发移动设备的 UI Platform——UIQ ,并授权给那些全球领先的移动设备制造商。

4 小结

正如本文的摘要所述,这是一篇入门的文章。为此,文章舍弃了许多内容。笔者认为那些内容更适合出现在其他主题的文章中。呵呵,希望这篇文章能给您带来一些收获,帮助您顺利的搭上 Symbian 开发的快车。

欢迎指正,欢迎讨论!

Symbian s60入门(转载)相关推荐

  1. 网秦手机杀毒软件 v2.1 symbian s60 _symbian 7.0+ 免费

    Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...

  2. Symbian S60平台手机软件开发

    求教 小弟虚心求教,哪位给我讲讲Symbian S60平台手机软件开发的相关内容,最好能指导一下小弟. 我正在准备制作一个课题,有关手机软件开发的,正要补充相关知识. 走过路过的能推荐点东西的也谢谢了 ...

  3. JAVACC 入门(转载)

    JAVACC 入门(转载) JavaFlashIDEA算法Unix  读了JavaCC自带文档中的SimpleExamples之后,有一点心得,于是总结一下,以备遗忘. JavaCC的输入文档是一个词 ...

  4. Symbian S60 Camera

    Symbian S60 Camera引擎 //在S60v2上验证,Nokia系列手机都没有问题 今天没什么事情,写篇S60的Camera的文章给大家参考一下,S60Camera主要是通过操作CCame ...

  5. Symbian S60替换应用程序图标

    Symbian S60替换应用程序图标 2010-10-13 09:47 3版上可以使用svg和bmp两种格式的图标,下文说的是使用svg的情况,如果要使用bmp,请看如下链接:http://wiki ...

  6. symbian S60 Qt 初体验

    QT被Nokia收购以后,顿时风声鹊起,似乎Nokia的应用开发将采用Qt已成必然之势:固小体验一把在Symbian s60上完成自己的处女作: 在上一篇Symbian开发环境搭建之事必躬亲的基础上, ...

  7. Symbian S60 第三版真是烦人啊!

    以前在梦飞工作室的时候,朋友给我说Symbian S60系统很爽,几乎整个系统都可以定制.当时没有S60的系统,只是向往哪天能有一个S60的手机,可以看看能够开发一些什么小玩意儿玩玩. 当梦想成真的时 ...

  8. [转贴]Symbian开发入门 - UIQ开发教程

    文章作者:无双: 原发处:loveunix.net 欢迎转载,但是保留原作者与发表网站 保留版权声明 文章作者:无双: 原发处:loveunix.net 欢迎转载,但是保留原作者与发表网站 保留版权声 ...

  9. 【转】symbian操作系统 入门篇

    一.symbian简介 Symbian是一个实时性.多任务的纯32位操作系统,具有功耗低.内存占用少等特点,非常适合手机等移动设备使用,经过不断完善,可以支持GPRS.蓝芽.SyncML.以及3G技术 ...

最新文章

  1. 快速排序(快排)--->注释超详细
  2. response返回一段html,iframe调用后台方法通过response返回html代码
  3. MFC中的MainFrame Dlg,App,Doc,View的关系
  4. Haproxy+Heartbeat 高可用集群方案操作记录
  5. 神策 FM | 将定价作为产品竞争优势的 5 种策略
  6. compose配置文件参数详解
  7. C语言有参函数调用时参数值传递问题
  8. 关于配置Webapck的 exclude 不过滤 node_modules Babel却没有处理转换node_modules的源码
  9. GDAL不支持创建PCIDSK的面状矢量格式
  10. MATLAB 设置文件的相对路径
  11. 一文读懂模拟电路和数字电路之间的区别和联系
  12. 【前端面试题】02—59道CSS面试题(附答案)
  13. LINUX矩阵键盘简单介绍,矩阵键盘程序流程图详细介绍
  14. ioncube linux,lamp安装版,安装ionCube不成功
  15. 定量风险分析技术__蒙特卡罗分析
  16. Gym - 101177K Kiwis vs Kangaroos 水题手动打表
  17. USYD悉尼大学DATA1002 详细作业解析Module6
  18. uni-app踩坑记录
  19. Spring注解定义 bean 的12种方法
  20. weblogic部署前后端分离项目

热门文章

  1. 船舶强度与结构设计大作业二matlab,船舶强度与结构设计最新版
  2. DDOS和CC是什么
  3. 如何杀掉“熊猫烧香”
  4. java打开密码pdf,在Java中使用密码解密PDF文档
  5. python发送notes邮件_使用python 驱动 lotus notes发送邮件 | 学步园
  6. 又一波利好,FN难道又要起飞了?
  7. 管道模型(Pipeline)
  8. 需求调研报告模板_2020年全球TAC薄膜行业市场现状调研报告-国内需求增速超世界水平...
  9. 金典Windows98虚拟机系统程序分享+适合怀旧
  10. 一套全开源的智慧园区管理系统源码