当前位置:首页 >> 信息与通信 >>

Symbian系统开发教程(第一章)


第一章: 第一章:Symbian OS 简介
作者:谢兴 ---转载需注明出处

1.1. Symbian 系统简介
当前有很多手机运行 Symbian OS,数量甚至超出您的想象。到目前为止已经有超过 7500 万、100 多 种型号的手机运行 Symbian OS。这些电话大部分都形态迥异:有的配有键盘,有的采用笔控输入;有的配 备 TFT 彩色屏幕,有的则配备黑白 LCD 显示屏;有的擅长于音乐播放,有的专注于电子游戏、图像处理 甚至电视功能;有的手机面向个人消费者,有的专门针对商务用户;有的是为单手操作设计的,有的是为 双手操作设计的——种类繁多不一而足。 Symbian OS 手机受到广大消费者的喜爱。 2005 年就售出 3400 仅 万部 Symbian OS 手机——这相当于每不到一秒钟就有一部 Symbian OS 手机被出售。网络运行商同样青 睐 Symbian OS 手机。全球有 250 多个移动电话网络运行商选择了 Symbian OS 手机。所有这些都表明现 在市面上有成千上万的手机是基于 Symbian OS 的,所以为 symbian 系统开发的应用程序会得到广泛的应 用。现在已经有 5400 多种商业性应用软件可供 Symbian OS 手机应用。本教程旨在为您提供一些编写 Symbian OS 应用程序的入门知识。希望它会对您有所裨益,为开发 Symbian OS 应用程序打下一个良好 的基础。

1.2. 开发语言
从 开 发 初 期 起 ,Symbian OS 就 是专 门 为 移 动电话 而 设 计 的 , 因此 从 弹性 的 电 源 管 理 (resilient power-management)到内存资源的谨慎使用,全都是为了满足手机操作系统的特定需求。作为 Symbian OS 的开发人员,您将受益于 Symbian OS 这样一个专门为移动设备而创立并随着市场一起发展的开发平台。 Symbian OS 最“基本”的编程语言是一种改进的 C++。Symbian OS C++ 经过特殊设计与优化,以利于降 低手机电池能耗和内存使用。比如,为了节约电池耗电,所有 Symbian OS 程序都是基于事件(event-based) 的, 而当没有任何程序进行事件处理时, CPU 就进入休眠。 您在开发软件时也可以使用 Java、 Python、 .NET (使用 Visual Basic 和带 AppForge’s Crossfire 的 C#) 、Perl、OPL 和 Adobe Flash,但是 Symbian OS C++ 是最强大(它允许最大限度的利用操作系统提供的所有功能)也是最快捷(因为它直接以编译码运行,而 无需在运行时进行解译) 的语言。 这也就是为什么我们在本书中选择 C++ 来向您演示如何进行 Symbian OS 开发的原因。好了,闲言少叙,让我们言归正传。

1.3. 准备工作
首先您需要有一台电脑能创建并测试在Symbian OS 手机上运行的应用程序。这也就是说电脑要有一 个较快的CPU 处理器(至少1.5GHz)和相当大的RAM(512MB或更大)以及一个大容量硬盘(至少有2GB 剩余空间) 。该电脑必须能运行Windows 2000 或XP 操作系统。然后您需要开发软件来帮助您编写代码并 进行编译。这可通过包含编辑程序(editor)、编译程序(compiler) 和链接程序(linker) 的集成开发环境(IDE) 来完成。在这推荐两种适合Symbian OS 程序开发的IDE。对于开发非商业用途的Symbian OS 应用程序, Nokia 的Carbide.c++ Express 版本是最理想不过了,它建立在Eclipse IDE 的基础上,供免费下载。对于使

用 Visual Studio.NET 2003 的 程 序 员 来 说 , 也 可 选 择 Carbide.vs 。 这 是 一 套 基 于 Microsoft Visual Studio .NET2003 IDE 的工具,用于开发S60 和Series 80 软件。您还需要软件开发包(SDK), 专门用来编 写和创建Symbian OS 应用程序。基于不同手机类型,有不同版本的SDK 供选择,具体使用哪个SDK 请 见以下几页的说明。如果您还没有决定具体的手机类型或平台而无法确定选择哪个SDK,我们建议您一开 始可使用S60 和UIQ SDK。如果您想为最新款的手机(如Nokia 3250、E60、E61、N71、N80、N91、N73 或 N93)编写应用程序,那就选择基于Symbian OS v9 的SDK(UIQ 3 或S60 第三版) ,要么您就选择更低版 本的SDK(UIQ 2.1 或S60 第二版) 。 不同版本的Symbian OS 之间有什么区别?主要的分别是,在Symbian OS 9.1 版本之前,为较低版本 的Symbian OS编写的软件往往可在较高版本上运行, 但9.1 版本与以往的版本截然不同。 如要运行在9.1 版 的Symbian OS 上,应用程序必须稍加修改并进行再次编译。 接 下 来 您 需 要 下 载 您 所 选 择 的 IDE 和 SDK。以下章节将向您介绍如何在互联网上找到这些工具。

1.4. S60 平台
S60 平台是一个完整的应用程序包(package),用户接口和构建于 Symbian 系统技术的开发工具。 S60 用户接口 (UI) 经过精心的设计,方便用户使用,便于单手操作。从用户的角度看来,该平台最大的 特点在于它的用户界面:大的彩屏和各种输入键(两个软件键, 五方位的导航键,和几个专用的键)。 单 手操作和大彩屏的优点能使应用程序开发者提供更有吸引力的内容和提供更方便的导航功能,同时增加用 户使用手机时的愉快体验。 目前,s60 平台上已经存在各种各样的应用软件. 其中最重要的有:高级智能电话应用程序,个人信 息管理应用程序(PIM)(例如, 电话簿,日历, 相册), 短信, 网页浏览, 电子邮件和应用程序安装引擎, 它能够让您自由地从电脑上下载软件到您的手机上。 S60 第三版本支持两种不同的外观:

QVGA Portrait (240x320) QVGA Landscape (320x240)

1.5. 如何选择 SDK
基于Symbian OS 的手机外型各异, 用户界面(UI) 也不尽相同。 为了给特定的用户界面编写应用程序, 您必须选择特定的SDK(尽管应用程序的引擎往往与用户界面无关) 。大部分运行Symbian OS 的手机采用 的是S60 用户界面并使用键盘操作。S60 已经发布了一系列版本,选择正确的S60 SDK 和相应的Symbian OS 十分重要: S60 第三版– Symbian OS v9.1 S60 第二版功能包3 – Symbian OS v8.1 S60 第二版功能包2 – Symbian OS v8.0a S60 第二版功能包1 – 升级Symbian OS v7.0s S60 第二版– Symbian OS v7.0s S60 第一版– Symbian OS v6.1

您可在以下网站查到每一系列S60 SDK 所包含的手机型号列表: www.symbian.com/developer/sdks/sdks_series60.asp 其它大部分基于Symbian OS 的手机采用笔控输入的UIQ 用户界面。以下网站列出了基于各版本的 UIQSDK 的手机机型www.symbian.com/developer/sdks/sdks_uiq.asp 您可以到以Nokia的网站下载SDK www.forum.nokia.com

1.6. Carbide.c++ 集成开发环境(IDE) Carbide.c++ 开发环境(IDE)
前面已经提到了各种集成开发环境,这里我们主要介绍 Carbide.c++的集成开发环境。Carbide.c++的集 成开发环境(IDE)基于 Eclipse 集成开发环境版本 3。增添了能使 Eclipse 处理 symbian c++ 源文件和编译 Symbian 工程的插件。这些插件分为以下几类: C/C++开发工具箱(CDT) 。这是一个使得 Eclipse 管理和编译 symbian 工程的工具集 Symbian 插件。 这些插件由 symbian 开发, 使得 eclipse 能够处理 Eclipse C++的概念, 同时提供对 Symbian 操作系统软件开发工具箱和 Symbian 工具链的支持。 Nokia 插件。由 Nokia 开发,提供对 Symbian 操作系统工具箱的更多支持。插件实现了 C++编译器, symbian 系统的调试器,并且加入了 Carbide.c++系列产品的商业版本的高级特性。 很明显,因为 Carbide.c++是基本的 Eclipse 集成开发环境,开发者可以进一步定制其它的商业或免费 的插件,比如说,一个版本控制系统,一个 UML 建模系统等。 Carbide.c++有自己的安装程序,所以安装比较简单。在启动这个产品之后,用户看到的集成开发环境 和 Eclipse 开发环境十分类似,如下图所示,因为 Carbide.c++是设计用于处理 symbian c++应用程序的,所 以其集成开发环境的左边显示的是 c/c++工程视图,这个视图用于显示构成一个典型 symbian c++工程的源 文件、头文件和资源文件。

关于 eclipse 平台和插件的相关知识,不是本教程所关心的重点, 有兴趣的读者可参考相关的其他著述。

开发环境的 1.7. 开发环境的构建
第一步:安装 JDK5.0 第二步:安装 ActivePerl(需要 5.6.1 以上版本) 第三步:安装 Symbian sdk 第三步:安装 Carbide.c++1.2 版本。 Carbide 有不同的版本。 其中 Express 版本是免费安装的,但不 支持 UI 设计功能,也不支持在手机上调试的功能。 注意:这几个文件需要放在一个目录下面。否则,在编译程序的过程中,可能会出现难以预料的错误。

文件目录的 1.8. 文件目录的布局
在动手写代码之前, 我们有必要了解工程的文件组织结构。 如果您看过 SDK 中的例子工程, 或是用 IDE 的工程向导创建一个 UI 应用程序,您就会了解一个典型的工程文件结构布局是怎样的。 当工程增长到一定程度的时候,好的文件目录布局将有助于帮助跟踪代码的变更。工程中包含了各种 不同类型的文件,包括源文件和其他类型的文件,我们通常将这些文件分开来存放,下面我们简短地介绍 这些文件。

资源文件, 例如 .bmp 或 .wav 文件, 通常被单独地存放在一个目录下面。 测试代码也会和产品代 码分开来存放。所以,一个典型的 UI 应用程序会有如下这样一些目录结构和文件。 文件目录 data (S60) Gfx (S60) Group Images (UIQ) Inc rsrc (UIQ) src Test 存放文件类型 存放资源规格文件(.rss) 应用程序资源文件,例如图片和声音文件。 该目录存放工程文件 (例如 .mmp and bld.inf) 应用程序资源文件,例如图片。 该目录存放头文件 (typically .h, .hrh and .inl) 存放资源规格文件 (.rss, .ra) 该目录存放 .CPP 文件 存放测试代码

在 group 目录下面,有两个重要的文件,这两个文件都与创建 Symbian 工程相关: 如果,需要在命令行编译工程,必须创建如下两个工程文件:


工程定义文件 (.mmp file),这个文件对要编译的工程进行描述,并定义要构建的资源文件。 该 文件是环境无关的,编译工具用它来生成针对各种目标环境下的 make files 文件。 组件描述文件(bld.inf), 这个文件列出了一组相关的工程, 并包含一些编译指令.

CodeWarrior 和 Carbide.c++ 都能够导入工程定义文件,并用它来在 IDE 环境下创建工程。下面详细描 述这些文件的格式。

组件(component)描述文件: bld.inf Bld.inf 是一个文本文件。它的内容非常繁琐,主要包括工程定义文件 mmp 和其他的任何编译工具所 需要的文件。该文件分为多个节,其中,mmp 文件列表在 PRJ_MMPFILES 节中。即使一个工程文件只包含一 个 mmp 文件,bld 文件仍然是必须的。下面是一个典型的 bld.inf 文件。 // 目标平台 PRJ_PLATFORMS WINSCW GCCE // 从工程中输出的文件 PRJ_EXPORTS // None // 工程定义文件 PRJ_MMPFILES filebrowseapp.mmp // 工程定义文件(测试代码用) PRJ_TESTMMPFILES ..\test\FileBrowseTest.mmp

在上面的例子中, 如 PRJ_PLATFORMS 声明所示, 默认情况下工程被编译为针对 WINSCW 平台 和 GCC-E 平台的执行代码。 当您用 CodeWarrior 为模拟器编译代码的时候,您使用的是 WINSCW 平台, WINSCW 的 来由是,最终的代码运行于 Windows, 单线程模式(in a Single process),并用 CodeWarrior 编译。 平台的名称用来标识最终的可执行代码所运行的那个平台。 所以, 当上面的代码被编译完后,可执 行程序被放在 \epoc32\release\winscw 目录下面(根据是调试(debug)版本还是释放(release)版本, 被放在 \udeb 或 \urel 子目录下面)。 如果代码是针对手机硬件的, 需要选用 GCCE 平台。 这时, 最终的可执行代码被放到\epoc32\release\gcce\ 目录下面。 工程描述文件 (mmp)

mmp 文件中的每个语句都以一个关键字开头。下面是一个典型的 mmp 文件的例子。 // filebrowseapp.mmp TARGET filebrowseapp.exe TARGETTYPE exe UID 0x100039CE 0xE80000A6 VENDORID #ifdef __WINSCW__ CAPABILITY #else CAPABILITY #endif SOURCEPATH SOURCE SOURCE SOURCE SOURCE SOURCE SYSTEMINCLUDE USERINCLUDE 0

AllFiles NONE

// //

..\src FileBrowseAppUi.cpp FileBrowseDocument.cpp FileBrowseApplication.cpp FileBrowseBaseView.cpp RFsEngine.cpp \epoc32\include ..\inc

SOURCEPATH START RESOURCE TARGETPATH
HEADER END

..\data filebrowseapp.rss \resource\apps

START RESOURCE filebrowseapp_reg.rss TARGETPATH \private\10003A3F\apps END START RESOURCE filebrowseapp_loc.rss TARGETPATH \resource\apps LANG SC HEADER END START BITMAP filebrowseapp.mbm TARGETPATH \resource\apps HEADER SOURCEPATH ..\gfx SOURCE C16 folder.bmp SOURCE C16 file.bmp SOURCE 8 mask.bmp END LIBRARY euser.lib efsrv.lib cone.lib eikcore.lib eikcoctl.lib eikdlg.lib egul.lib eikctl.lib apparc.lib LIBRARY bafl.lib LIBRARY avkon.lib CommonEngine.lib 下面简单地描述每个关键字的作用: TARGET TARGETTYPE 该关键字指明了目标文件(exe 或 dll 文件)的名称。 该关键字指明了工程所产生的目标文件的类型,在上面的例子中,我们 生成了一个可执行文件。在大多数情况下,目标文件的类型为 dll,exe 或 是其他的插件(plugin) 。 目标(通常指可以执行的.exe 或.dll 文件)具有三个 UID,这些 UID 用来 标识组件,第一个 UID 是无须指定的。因为它是编译工具根据目标的类 型自动分配的。所以这里所指定的实际上是 UID2,这个值进一步指明了 目标的类型,上面例子中,值(0x100039CE)指明了目标文件是一个应 用程序, Symbian 系统使用这个值来标识所有的应用程序。 下一个指定的 UID 对每个应用程序来说都是唯一的,系统用它来标识应用程序的注册 资源文件和该程序的安装包文件(.pkg) 。所以为了保证这个值的唯一性, 您必须要向 Symbian 申请这个 UID,由他们负责从数据库中为您的应用 程序分配一个 UID。可到 Symbian 的网站上了解更多的相关信息。有一 些 UID 的值是用来测试的, 例如 SDK 中的例子: 文件系统浏览应用程序 (filesystem browser)所使用的 UID 为 0xE80000A6, 您也可以在测试您 的应用程序的时候使用这个值,但注意,不要在您的最终产品中使用它。 这是个可选的关键了,在上面的例子中没有出现。该关键字为应用程序 定义了安全标示符,用来指明这个程序可以访问哪个私有的目录。如果

UID

SECUREID

该关键字没有使用,用 UID3 来代替该关键字。 VENDORID CAPABILITY 该关键字是在 Symbian OS v9.1 版本新增的。用来指定软件提供商的 ID 号。该关键字不是必须的,可省略。 这是 Symbian OS 9.1 新增加的关键字。 该关键字指明了应用程序的权 限(或称作能力, 如:查看系统目录) 。大上面的例子中,应用程序在模 拟器上和在手机上被分配了不同的能力(capability) 。在模器上,该程序 被赋予了 AllFiles 的权限, 比在手机上运行时, 能看到更多的私有文件系 统的区域。没有被赋予 AllFiles 能力的程序不能看到\Sym 目录下的内 容。 应用程序只有在经过认证(certificate)以后才能获得 AllFiles 的能 力。关于认证和签名的内容,我们在这一章的后面会讲到。 SOURCE 关键字指明了有哪些源文件和资源文件需要编译, 而 SOURCEPATH 关键字指明了这些文件的位置。 这个位置既可以是相对路 径(相对于 mmp 文件) ,也可以是绝对路径。 这个关键字指定了系统头文件的位置, 系统头文件通常用#include<>语句 包含。 该关键字的作用类似于 SYSTEMINCLUDE, 它指明了在用户自定义头文 件所在的位置。 START RESOURCE 关键字表明了一个信息块的开始,这些信息指明了 如何编译资源文件。END 标示该信息块结束。 该关键字用来指定被编译后的资源文件的位置。 注意: 由于安全方面的考 虑,所有的可执行代码(exe 或 dll)都从手机上的\sys\bin\ 目录运行。 可执行代码不需要用该关键字指定位置。 TARGETPATH 关键字仅仅用来 指定编译后的资源文件的位置。 这是一个可选的关键字, 当它被使用的时候, 系统将会在\epoc32\include\ 路径下创建资源头文件(.rsg) 。这个头文件包含了允许以 C++代码引用 特定资源的标识符。 这个关键字列出了应用程序需要链接的库文件。 该关键字用来指定需要被静态链接的库文件 (库文件中的代码会被链接 到您的程序中,而不是需要时才装载到内存)。 这一节包含了应用程序图标所使用的位图(bitmap) ,以及如何将这些位 图编译成.mbm(Symbian 系统专有的图像格式)的方式。 该关键字是可选的,我们上面的例子中并未用到。在以前的 Symbian OS 版本中, 缺省的栈大小为 0X5000 字节。 v9.1 版本中, 在 缺省值为 0x2000。 为了增加栈的大小,可以使用该关键字。例如:EPOCSTACKSIZE 0x5000 。 要注意的是, 对栈设置仅仅对真实设备有效, 但对模拟器无效。 该关键字也是可选的,我们上面的例子中并未用到。这个关键字指定了 应用程序可以使用的最大、 最小堆空间。 缺省情况下, 为最小的尺寸, 4K 1M 为最大的尺寸。

SOURCEPATH 和 SOURCE SYSTEMINCLUDE USERINCLUDE

START RESOURCE…END TARGETPATH

HEADER

LIBRARY STATICLIBRARY START BITMAP…END EPOCSTACKSIZE

EPOCHEAPSIZE

第一个程序: HellowWorld 1.9. 第一个程序: HellowWorld 1.9.1. 创建工程
运行 Carbide 集成开发环境,在菜单栏上选择 file->New->Symbian OS C++ project,出现如下图所示的 对话框:

我们选择带用户界面设计器的图形用户界面应用程序(Carbide Express 版本不支持用户界面设计的功 能) 。然后点击“下一步”按钮。出现下面的对话框:

用户选择一个 sdk 的版本(笔者的机器上安装的是 s60_3rd_FP1 版本的 sdk) 。继续下一步。

按下一步,继续:

选择一个空的界面,这样我们可以自由地在上面添加控件。下面的步骤一直按“下一步” ,直到完成。

1.9.2. 在模拟器上运行和调试 模拟器上运行和调试
工程建立完成后,就可以构建(build)工程了。在将程序放到手机上运行之前,我们通常需要先在 模拟器上运行、调试程序。模拟器是 SDK 附带的一个软件,能够模拟真实手机的运行情况。 在工程透视图中,选中工程,点击右键,将活动构建设置为 Emulator Debug(Winscw)。如下图所示:

这样,编译出来的程序版本才是针对模拟器的。设置后,可以构建(build)工程了:在工程透视图中选 中工程,点击右键,选择“build Target Only” (只编译模拟器版本,节省时间) 。

最后,点击工具栏上的运行按钮

,选择 Run As->1 Run Symbian OS Application

Carbide 启动模拟器, 这个过程需要持续几十秒到几分种,依赖机器的配置。在模拟器启动后,点击模 拟器上的软件键 ,模拟器会出现下面的界面:

选择 Installed 选项后,可以看到应用程序的图标:

在模拟器上点击按钮,运行该程序。

手机上运行和调试 1.10. 在手机上运行和调试 1.10.1. 基本概念

能够在模拟器上运行、调试程序后,您可能想要在真实的手机上运行您的程序。但在这之前,先需要 搞清以下几个基本概念: GCCE 版本和 ARM 版本: 在真实设备上运行的程序版本不同于我们在模拟器上运行的程序版本,在设备上运行的版本必须 是 GCCE 版本或 ARM 版本。其中 GCCE 版本是用 SDK 自带的编译器的,使用它不需要付费,而 ARM 版本是专 门针对 ARM 平台的,代码经过优化,性能优于 GCCE 版本的程序,但需要付费。 .sis 文件和.pkg: 创建应用程序的 GCCE 版本以后,需要创建一个 Symbian 安装文件(.sis) 。从本质上来讲,.sis 文件只是一个压缩文件, 它包含了组成应用程序所需的 exe,dll,rss 文件,和一些手机接收应用程序时

所必须的信息(例如:语言种类,应用程序的 UID) 。现在的问题是,我们根据什么信息来创建这个 sis 文 件呢?答案在于 pkg 文件, 在创建这个文件之前,先需要创建一个 pkg 文件,pkg 文件中包含了一些有用 的信息,包括将工程文件拷贝到手机的哪个目录下面,程序的版本号等。 签名(sign): 在开发 s60 3rd 版本的应用程序时,所有的 .sis 文件在安装到手机之前,必须被签名。如果您的程序 没有用到 capability 或只用到了对所有的用户都开放的功能(utility) ,您可以使用自签名认证(Self Signed certificate) 。当在自己的手机上调试程序时,这种方法特别管用。 机上调试代理(on-device debug agent): 如果想要在真实的手机设备上调试程序,需要在手机上安装机上调试代理,这个手机上的代理程序 通过蓝牙或 USB 串行链路与调试器通信,在 Carbide.c++调试器和目标机器之间的起到接口的作用。调 试代理提供以下功能:
1. 2. 3. 4.

运行在 Symbian 系统上作为调试代理。 为 Symbian 系统提供一个稳定的集成的接口 能被用来在真实的设备上调试应用程序 能烧入到系统镜像中,或是被安装的 sis 文件。

使用机上调试代理, 我们可以使用 Carbide.c++ 集成开发环境来调试运行在手机硬件上的应用程序,这使得 调试过程更为容易。 机上调试代理可以在所有的 S60 3rd 版本的设备上工作。 包括在 UIQ 2nd 版本 和 UIQ 3rd 版本的设备上。

1.10.2.

编译、运行应用程序的手机版本 编译、运行应用程序的手机版本 应用

在清楚这些基本的概念后,下面我们看看,如何编译和运行 GCCE 版本的应用程序: 1. 2. 3. 4. 5. 编译这个应用程序的 GCCE 版本. 创建 Symbian 安装文件(.sis)。 给.sis 文件签名。 在 s60 手机上安装这个 sis 文件。 运行该应用程序。

首先,我们按下面的步骤,在 Carbide 中,编译 GCCE 版本和创建 sis 文件。 1) 从菜单上选择 Project > Properties 选项. 2) 在属性对话框上, 点击 C/C++ Build Build。 3) 从 Configuration 下拉菜单中选择 "S60 3.0 GCCE UREL Configuration UREL"。 S60 4) 点击 OK OK。 5) 从菜单栏上点击 Project > Build Project 。 如下图所示:

Carbide 根据工程的设置,创建了一个能在手机上运行的版本。如果编译的过中没有出错,可以在目录 \Symbian\9.2\S60_3rd_FP1\Epoc32\release\gcce\urel 中找到已经编译好的可执行文件。然后,可以进 行下一步:生成 sis 文件。 打开工程视图,找到 sis 文件夹中的 .pkg 文件,点右键,在弹出菜单中选择:build PKG file。如下 图所示:

如果边编译的过程没有出错, 可以在 sis 文件夹中找到经过签名的.sis 文件和扩展名为.cer 的证书文 件和扩展名为.key 的密钥文件。这两个文件是 Carbide 自动生成的。 将经过签名的.sis(或.sisx)文件通过 USB 接口下载到手机(WAP, 邮件附件, 红外, 蓝牙) ,然后 用文件管理器安装,如果安装的时候没有错误提示,我们就可以在手机上运行程序了。

1.10.3.

在手机上调试

在真实的手机设备上调试比在模拟器上调试更加准确,而且不必使用昂贵的硬件调试设备。 前面我 们提到过,在手机上调试, 需要安装调试代理,有两不同的机上调试代理,分别为:Application TRK 和 System TRK
Application TRK—仅仅支持应用程序的调试。 System TRK—不但支持应用程序的调试,还支持有限的 ROM 调试。设备制作商可用它来调试设

备驱动程序。 现在,我们来看看: 如何在手机上安装调试代理软件

打开..Carbide\plugins\com.nokia.Carbide.trk.support_1.2.0.29\trk\s60 目录, 可以看到有一个 s60_3_1_app_trk_2_7.sisx 文件,该文件就是调试代理(debug agent)的安装程序,下面我们通过 USB 接口(或红外、蓝牙)将这个程序下载到手机上安装。步骤如下: 1. 将电脑和手机设备通过 USB 接口连接。 在手机识别出 USB 连接线后,设置手机,让它从 PC 上接收文件。 1) 选择 USB Mode > File Transfer, 然后按 OK 键,这时有通知消息出现:手机将处于离线状态。 2) 按 OK 软件键确认该消息。 2. 将 SISX 文件拷贝到 MMC 卡。 3. 用“安全删除硬件”的方式断开手机和 PC 之间的 USB 连接。 4. 在手机上,用文件管理器安装 SISX 文件 。

在安装好调试软件后,现在就可以开始调试程序了。 PC 和手机的通信接口有两种:蓝牙和 USB,由于大多数的 PC 机中只有 USB 接口,下面我们就以 USB 连接方式来调试程序。 1.安装最新的 USB 连接软件,例如,S60 设备使用的 Nokia PC 套件。 2.用 USB 线连接 Pc 和 手机。 3.目标设备被连击后,在 S60 设备上,选择 PC 套件作为 USB 连接模式。 4.下载 APP TRK 或 System TRK SISX 文件到手机上。(如果在已经下载安装过该调试代理,这一 步可省略) 5.在 PC 上,打开设备管理,找到 S60 手机 USB 的条目,如下图所示:

记下端口号(在我们的例子中为 COM5) ,后面我们要用到。 在手机的 USB 模式列表上选择 PC 套件模式。 然后在手机上启动 App TRK,将连接方式设置为 USB,如下图所示:

选择“back”,然后重新启动 App TRK。

在 Carbide 集成开发环境上(IDE) ,选择工具栏上的

调试按钮,选择“debug” ,如下图:

这时,会启动一个“调试面板” ,我们选择第一项: “Symbian OS App TRK” ,双击此项,将会生成一个启 动配置项(launch Configuration) ,在这个面板的右边有一些关于调试的选项,如下图所示:

安装要求填写这些配置项, 这一步比较容易,有两点要注意的是:Connection 面板中,Serial port 选择的值(这里为 com5)必须是我们前面在设备管理器中所记录下来的值。另外,在 Installation 面板 中,需要指明要安装的文件,这个文件就是我们在前面生成的经过签名的 sis 文件,如下图:

用命令行方式编译、 方式编译 1.11. 用命令行方式编译、运行 GCCE 释放版本
下面我们以 SDK 自带的 helloworldbasic 工程为例子,演示如何用命令行的方式来编译和运行 GCCE 版本的程序。 第一步:创建 GCCE 释放版本: 1. 打开一个命令行窗口。 2. 用 cd group 进入工程的 group 目录。 3. 输入下面的命令: bldmake bldfiles。 4. 再输入:abld build gcce urel 或 abld gcce udeb (该命令产生手机上的调试版本)。上面的编译脚本 创建了一个 GCCE 版本的应用程序,在下面的目录可找到该文件: Epoc32\release\gcce\urel\ 第二步:创建 sis 文件 我们通过使用 makesis 工具来编译.pkg 文件得到.sis 文件, 在我们的例子中, pkg 文件位于例子中的 该 \sis 目录下。

1. 打 开 命 令 行 窗 口 , 并 进 入 到 HelloWorldBasic.pkg 文 件 所 在 的 路 径 : <S60_SDK_installation_directory>\Symbian\9.2\S60_3rd_FP1\S60ex\helloworldbas ic\sis 2. 输入 makesis helloworldbasic.pkg 命令: 3. 我们可以看到,在该文件夹下生成了一个 helloworldbasic.SIS 文件。 第三步:用 signsis 工具为 sis 文件签名 在进行签名之前,我们需要两个文件:私钥文件和自签名认证(self signed certificate)文件。这涉及 到密码学的知识,读者可自己参考相关著作。这里,我们用只是 makekeys 工具生成这两个文件。makekeys 工具在下面的目录可找到。 <SDK_installation_directory>\Symbian\9.2\S60_3rd_FP1\Epoc32。 1. 为了产生私钥文件和自签名认证,在命令行下敲入以下命令:

运行完该命令后(可能要花几分钟的时间) ,可以看到,在该目录下产生了两个新的文件:mykey.key 和 mycert.cer。 2. 给 sis 文件签名,在命令行下敲入以下命令:

第四步:在手机上安装 sis 文件。 这一步比较简单, 仅仅将准备好的 sis 文件下载到您的手机。这个过程可以通过不同的数据通道完成 (WAP, 邮件附件, 红外, 蓝牙, USB 接口), 采用何种方式,取决于您的手机。

1.12. 导入工程
如果 symbian c++的开发者在自己的计算机上已经有了各种各样的 symbian 工程,并且用 codewarrior 或者命令行工具链编译过该工程,他们会发现可以很方便地移植这些工程到 Carbide.c++,不需要创建一个 新的工程和手工插入这些源文件。Eclipse 实现了从集成开发环境导入和导出信息的框架,并通过向导来实 现这个过程。Carbide.c++也实现了这种工具。从菜单栏选择 File->import 菜单项,用户就启动了一个有很 多选项的导入面板。如下图所示:

例如: 如果我们想导入 sdk 中自带的 filebrowser 的例子工程, 我们在导入面板中选择 Symbian OS Bld.inf file 选项, 然后点击下一步, 这时会启动 “文件导入向导” 对话框, 在对话框中输入 filebrowser 工程中的 bld.inf 文件(通常,这个文件在 group 目录中) 。

然后,一直点击“下一步”按钮,直到这个过程结束。如果工程被成功导入,在左边的工程视图中会出现 该工程的信息。


相关文章:
基于android操作系统的软件开发
操作系统的软件开发 第一章 绪论 ......虽然如今的智能手机系统市场仍被 Symbian、 Windows Mobile 的占领...Android程序开发初级教程... 21页 1下载券 基于Androi...
Android手机日程管理系统的开发与设计
了基于 Google Android 平台的日程管理系统开发过程...第一章 绪论 1.1 选题背景随着移动通信的发展以及...而 Symbian,windows Mobile,Palm OS 等手机平台过于...
嵌入式系统开发技术复习资料(2017)
式操作系统主要有 Windows CE/Windows MobileLinux、 uCos、和 Symbian 3、...23、请根据实验环境环境,阐述如何搭建一个嵌入式开发环境? 24、简述再进行基于 ...
安卓系统编程开发报告
(Nokia)Symbian OS 系统,采用 Android 系统主要手机...我们选择第一个(即 eclipse IDE for java EE Developers...Android应用开发入门教程... 130页 1下载券 Andro...
更多相关标签: