当前位置:首页 >> IT/计算机 >>

symbian系统开发教程


symbian 系统开发教程 2009-05-14 00:07 分类:默认分类 字号: 大大 中中 小小 第一章:Symbian OS 简介 作者:谢兴 enigma19971@hotmail.com ---转载需注明出处 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 开发的原因。好了,闲言少叙,让我们言归正传。 准备工作 首先您需要有一台电脑能创建并测试在 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 应用程序。基于不同手机类型,有不 1.3.

同版本的 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++的集成开发环境。 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) 存放资源规格文件(.rss) Gfx (S60) 应用程序资源文件,例如图片和声音文件。 Group

该目录存放工程文件 (例如 .mmp 和 bld.inf) Images (UIQ) 应用程序资源文件,例如图片。 Inc 该目录存放头文件 (typically .h, .hrh 和 .inl) rsrc (UIQ) 存放资源规格文件 (.rss, .ra) src 该目录存放 .CPP 文件 Test 存放测试代码 在 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 0

#ifdef __WINSCW__ CAPABILITY AllFiles // AllFiles on emulator since no signing is required #else CAPABILITY NONE // No capabilities on hardware - otherwise SIS file signing is required #endif SOURCEPATH SOURCE SOURCE SOURCE SOURCE SOURCE ..\src FileBrowseAppUi.cpp FileBrowseDocument.cpp FileBrowseApplication.cpp FileBrowseBaseView.cpp RFsEngine.cpp

SYSTEMINCLUDE \epoc32\include USERINCLUDE ..\inc

SOURCEPATH

..\data

START RESOURCE filebrowseapp.rss TARGETPATH \resource\apps HEADER END 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, 您也可以在测试您的应用程序的时候使用这个值,但注 意,不要在您的最终产品中使用它。 这是个可选的关键了,上面的例子中没有出现。该关键字为应用程序 定义了安全标示符,用来指明这个程序可以访问哪个私有的目录。如 果该关键字没有使用,用 UID3 来代替该关键字。 该关键字是在 Symbian OS v9.1 版本新增的。 用来指定软件提供商的 ID 号。该关键字不是必须的,可省略。

UID

SECUREID

VENDORID

CAPABILITY

这是 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 。要注意的是, 对栈设置仅仅对真实设备有

SOURCEPATH 和 SOURCE

SYSTEMINCLUDE

USERINCLUDE

START RESOURCE…END TARGETPATH

HEADER

LIBRARY STATICLIBRARY

START BITMAP…END EPOCSTACKSIZE

效,但对模拟器无效。 EPOCHEAPSIZE 该关键字也是可选的,我们上面的例子中并未用到。这个关键字指定 了应用程序可以使用的最大、最小堆空间。缺省情况下,4K 为最小的 尺寸,1M 为最大的尺寸。

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. 运行在 Symbian 系统上作为调试代理。 2. 为 Symbian 系统提供一个稳定的集成的接口 3. 能被用来在真实的设备上调试应用程序 4. 能烧入到系统镜像中,或是被安装的 sis 文件。 使用机上调试代理, 我们可以使用 Carbide.c++ 集成开发环境来调试运行在手机硬件上的应 用程序,这使得调试过程更为容易。机上调试代理可以在所有的 S60 3rd 版本的设备上工作。 包括在 UIQ 2nd 版本 和 UIQ 3rd 版本的设备上。 1.10.2. 编译、运行应用程序的手机版本 在清楚这些基本的概念后,下面我们看看,如何编译和运行 GCCE 版本的应用程序: 1. 编译这个应用程序的 GCCE 版本. 2. 创建 Symbian 安装文件(.sis)。 3. 给.sis 文件签名。 4. 在 s60 手机上安装这个 sis 文件。 5. 运行该应用程序。 首先,我们按下面的步骤,在 Carbide 中,编译 GCCE 版本和创建 sis 文件。 1) 从菜单上选择 Project > Properties 选项. 2) 在属性对话框上, 点击 C/C++ Build。 3) 从 Configuration 下拉菜单中选择 "S60 3.0 GCCE UREL"。 4) 点击 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. 4. ?

用―安全删除硬件‖的方式断开手机和 PC 之间的 USB 连接。 在手机上,用文件管理器安装 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\helloworldbasic\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 目录中) 。

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


相关文章:
一位骨灰级塞班开发者的自白_教育指南_百度教育攻略.pdf
PC机的教程,但C++语言在PC和手机上还是有很大差别的,比如,要开发塞班系统的软件...当时塞班的一个系统限制,就是你换一个壁纸的话,它只有中间一个区域,屏幕的...
Symbian初级教程第3章_图文.pdf
Symbian初级教程 11年2月27日星期日 知识结构 掌握Symbian开发技术 开发环境 ...以下是UML常见的应用:◆ 信息系统(Information System) ◆ 技术系统(Technical ...
Symbian系统S60平台三版模拟器安装【SDK教程】.doc
Symbian系统S60平台三版模拟器安装【SDK教程】_IT/计算机_专业资料。Symbian系统...开发,使应用程序可被高效创 建,并在不同版本的平台上进行验证; 4、Symbian ...
塞班系统发展史.txt
Symbian专区 > 诺基亚塞班系统发展史安卓软件汉化详细图文教程戴尔智能云手机 D43...世界上数以万计的手机软件开发人员在塞班的SDK系统上开发出无数令使用者雀跃不...
Symbian系统发展历史回顾.ppt
随后Symbian OS v6.0则在v5.0的操作系统的基础 上增加了GPRS、WAP1.2浏览器及蓝牙技术的支持, 用户可以运行第三方基于C++和J2ME开发的程序, 智能操作系统的特点...
如何搭建Symbian S60 5th的C++开发环境.doc
symbian 入门(二)Carbide C++和 VS2003 环境搭建 入门( 和 s60 的 sdk 环境搭建请见 symbian 入门(一)Symbian 操作系统简介及开发环境入门 导入、 一、利用 ...
嵌入式Linux系统开发教程(第二版)参考答案(贺丹丹).doc
嵌入式Linux系统开发教程(第二版)参考答案(贺丹丹) - 参考答案 第一章
《Android项目驱动式开发教程》第一章开发入门_图文.ppt
《Android项目驱动式开发教程》第一章开发入门_计算机软件及应用_IT/...仅正式推出四年操作系统的 Android已经超越称霸十年的诺基亚 Symbian系统,...
嵌入式Linux系统开发教程最完整答案-贺丹丹版.doc
嵌入式Linux系统开发教程最完整答案-贺丹丹版_计算机软件及应用_IT/计算机_专业...生活中最常见的嵌入式系统恐怕要数智能手机了, 包括 Symbian、 Windows Mobile、...
嵌入式Linux系统开发教程很完整的习题答案.doc
嵌入式Linux系统开发教程很完整的习题答案 - 参考答案 第一章 一、填空题。
嵌入式Linux系统开发教程参考答案.doc
嵌入式Linux系统开发教程参考答案 - 参考答案 第一章 一、填空题。 计算机
嵌入式Linux系统开发教程参考答案.doc
嵌入式Linux系统开发教程参考答案_工学_高等教育_教育专区。Linux 系统开发教材参考...生活中最常见的嵌入式系统恐怕要数智能手机了,包括 Symbian、Windows Mobile、 ...
Java ME移动开发教程第一讲_图文.ppt
Java ME移动开发教程第一讲_计算机软件及应用_IT/计算机_专业资料。Java ME移动...Symbian曾经是手机领域中应用范围最广的操 作系统Symbian主要支持的开发语言为...
嵌入式Linux系统开发教程参考答案_已修改.doc
嵌入式Linux系统开发教程参考答案_已修改_教育学_高等教育_教育专区。参考答案第...?2? 生活中最常见的嵌入式系统恐怕要数智能手机了,包括 Symbian、Windows ...
Android移动开发教程第一讲_图文.ppt
Android移动开发教程第一讲_计算机软件及应用_IT/计算机_专业资料。Android移动...Symbian曾经是手机领域中应用范围最广的操 作系统Symbian主要支持的开发语言为...
Android移动开发项目式教程第一讲_图文.ppt
Android移动开发项目式教程第一讲_调查/报告_表格/模板_实用文档。Android移动...Symbian曾经是手机领域中应用范围最广的操 作系统Symbian主要支持的开发语言为...
!嵌入式系统开发资料(入门必备).pdf
!嵌入式系统开发资料(入门必备) - 学习资料,仅供学习、交流用,不得做商业用途
Android手机开发教程.txt
Android手机开发教程_计算机软件及应用_IT/计算机_专业资料。Android手机开发教程 ...与Windows Mobile、Symbian等厂商不同的是,Android操作系统免费向开发人员提供,...
RAM开发工程师入门宝典.pdf
RAM开发工程师入门宝典 - 获取更多权威电子书 请登录 www.eetchina.com ARM 嵌入式系统开发综述 ARM 开发工程师入门宝典 获取更多权威电子书 请登录 www.ee...
嵌入式Linux系统开发教程参考答案.doc
嵌入式Linux系统开发教程参考答案 - 参考答案 第一章 p20 一、填空题。
更多相关标签: