ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Series 60 2.0 :C++应用软件设计简介(下)(转)

Series 60 2.0 :C++应用软件设计简介(下)(转)

原创 Linux操作系统 作者:jcszjswkzhou 时间:2019-06-12 13:21:06 0 删除 编辑
5.10 资源文件
在Symbian 操作系统中,资源文件(如HelloWorldBasic.rss)被用来定义GUI 应用软件在屏幕
上的显示方式。很多用来定义应用软件的外观、行为和功能的信息都能够存储在一个资源文件
中,程序主体以外的东西,从状态框、菜单和热键到各个对话框等所有事件都能在源文件中进行
定义。各个资源文件能够在运行时根据需要进行非常有效的装载,因此所需的存储空间能够保持
在最小水平。
应用软件资源文件是用文本脚本文件(通常以.rss 为扩展名)定义的,在创建时,它们被编译和
压缩成二进制文件(在缺省情况下以.rsc 为扩展名),以便在运行时使用。资源文件在未对主程
序再编译的情形下就可以进行本地化。为了简化本地化的难度,所有的用户界面文本通常都被分到
独立的头文件中(习惯上以.loc 为扩展名),该头文件包含在主源文件内。.loc 文件需要送出,
以便将其翻译成各种不同的语言。
资源文件起初看起来比较复杂,但它们会逐步地变得简单易懂。在Series 60 SDK 中可查阅关
于应用软件资源文件的全面解释和范例。
5.11 源文件
以下文件构成了应用软件源文件的主体部分。
HelloWorldBasic.cpp -DLL 入点
HelloWorldBasicApplication.cpp -应用软件
HelloWorldBasicAppUi.cpp -应用软件的UI
HelloWorldBasicDocument.cpp -文档
HelloWorldBasicAppView.cpp - 视图
HelloWorldBasic.rss― ― 包含许多UI 定义的标准资源文件。该文件被资源编译器使用,而资源编
译器会在源文件编译前自动地被调用(仅当资源编译器最后一次运行之后资源文件被更新过)。资
源编译器的输出结果通常是一个二进制文件,在运行时,该文件被用来提供所需的资源信息,例
如,HelloWorldBasic.rsc。
HelloWorldBasic.uid.cpp― ― UID 源文件,由创建工具自动生成,这些创建工具位于
epoc32uildsymbian7.0sseries60_v20series60exhelloworldbasicgrouphelloworldbasicwins
的文件夹下。开发人员不应对该文件进行编辑。
Developer Platform 2.0 for Series 60: C++应用软件设计简介| 19
版本 1.0 | 2004 年1 月28 日
5.12 头文件
HelloWorldBasic.hrh― ― 包含了一些既在源文件(.cpp)又在资源文件(.rss)中用到的UI 控制列
举常量的定义。这些常量是专门为应用软件设置的命令ID、按键ID 或视图ID。它们可以用于对话
中的键盘处理或命令处理。目前,范例HelloWorldBasic 应用软件只有一个ID,即:
EHelloWorldBasicCommand1
值得注意的是avkon.hrh(位于Epoc32Include 目录下)包含许多由Series 60 UI 框架定义的枚
举常量,对于Series 60 应用软件而言,该文件很重要。例如,定义的常量之一是
EAknCmdExit,而应用软件的菜单选项Exit 总能够生成该命令。在应用软件结束时(例如,为了
系统备份)由框架传递的标准值是如在uikon.hrh 定义的EEikCmdExit。
HelloWorldBasicApplication.h -HelloWorldBasicApplication.cpp 的头文件
HelloWorldBasicAppUi.h -HelloWorldBasicAppUi.cpp 的头文件
HelloWorldBasicAppView.h - HelloWorldBasicAppView.cpp 的头文件
HelloWorldBasicDocument.h - HelloWorldBasicDocument.cpp 的头文件
Developer Platform 2.0 for Series 60: C++应用软件设计简介| 20
版本 1.0 | 2004 年1 月28 日
6 . 可执行文件和位置
本节描述由创建程序生成的可执行文件,也就是每个文件的类型和用途以及其在模拟器和目标设
备上的位置。
6.1 HelloWorld 控制台应用软件文件
在Series 60 模拟器上,HelloWorld 控制台应用软件由一个可执行文件组成,即
HelloWorld.exe。该文件的调试版本是在文件夹Epoc32ReleasewinsUDEB 中生成的,而发行
版本是在文件夹Epoc32ReleasewinsUREL 中生成的(模拟器一般不生成发行版本)。
在模拟器中,这些位置对于正确执行.exe 文件是至关重要的。在目标设备中,依据惯例,可执
行文件.exe 应放置在文件夹systemprograms 中,但它们可从任何位置执行。然而,目标设备
的消息收信箱可能会识别出以呼入消息附件形式的Symbian OS 可执行文件格式,但出于安全
考虑,不要打开消息和其附件。
6.2 HelloWorldBasic GUI 应用软件文件
一个最小的GUI 应用软件至少由两个文件组成,它们是.app 文件和 .rsc 文件 (例如,
HelloWorldBasic.app 和 HelloWorldBasic.rsc)。 HelloWorldBasic.app 文件是可执行的应用软
件,即由编译和链接程序生成的结果;HelloWorldBasic.rsc 文件是由资源编译器生成的二进制资
源文件。通常,应用软件也具有一个应用软件信息文件(.aif),它包含其支持语言的图标和字幕,
以及应用软件的性能,例如其是否支持嵌入等功能。如果没有.aif 文件,应用软件仍然可以执
行,但系统将为应用软件赋予一个缺省的图标,应用软件的其它属性也将由系统设置为缺省值。
如果已经指定了一个字幕资源文件,则将生成一个附加的安装文件
HelloWorldBasic_caption.rsc。参见后面的 ‘ AIF 文件’ 章节下的“ 字幕” 部分。
在Symbian 操作系统中, GUI 应用软件是动态链接库 (DLL) 的一种特殊形式,其文件后缀
为.app。 操作系统提供了一个特殊框架用来加载和正确地初始化GUI 应用软件。开发人员必须
遵守该框架的要求,而且必须提供许多纯虚函数的实现方法以确保应用软件能够正确地启动。另
外,在非强制的情形下,可能还需要提供许多其它虚函数的实现方法,以实现开发人员要求的特
定功能。
为使所有GUI 应用软件能够被系统自动识别,它们应遵守文件放置的惯例,即文件应放置在诸
如systemappsappname的文件夹中。因此在HelloWorld 范例中,以上描述的文件,即
Developer Platform 2.0 for Series 60: C++应用软件设计简介| 21
版本 1.0 | 2004 年1 月28 日
HelloWorldBasic.app 和HelloWorldBasic.rsc 应放置在systemappsHelloWorldBasic 文件夹
中。
为了使特定的应用软件能够正确运行,许多其它文件是至关重要的,例如,可能需要一个压缩的
多位图文件 (.mbm),以及一个特定的数据文件等。通常,这些必需的文件和关键的应用软件文
件放置在同一位置,即放置在 systemappsappname中。
6.2.1 AIF 文件
应用软件信息 (.aif)文件是在运行过程中使用的,并且它能够存储应用软件相关的数据。
这些数据包括:
系统用于表示应用软件的各种尺寸的图标
所支持语言的字幕
应用软件的功能,例如文档嵌入、新文件创建、文件是否隐藏、MIME 类型的支持优先
级等
每个应用软件应拥有一个信息文件 (或.aif 文件), 此文件用于包含与应用软件关联的一
个位图和字幕。如果没有.aif 文件,则应用软件将使用缺省图标,并且不支持将应用软件
名作为字幕(没有文件扩展名)、MIME 类型和嵌入等功能。可由Series 60 SDK 提供
的AIF 创建工具单独创建应用软件。AIF 创建工具能够以.aifb 扩展名来保存.aif 定义的细
节。
.aif 文件的组成内容也可在资源脚本文件(以.rss 为 扩展名)中手工定义,例如,
HelloWorldaif.rss ,并且可使用Aiftool 工具套件进行编译。关于Aiftool 工具套件和.aif
脚本文件语法的说明均包含在Series 60 SDK 文档中。
6.2.1.1 图标
当应用软件被嵌入或在应用软件shell 中显示时,图标可用于表示应用软件和与它们相关
的文件/文挡。提供的图标可能有各种尺寸,而被显示的图标是在当前容器缩放状态下尺
寸最合适的图标。提供各种尺寸图标将有利于确保图标在特定尺寸下显示时不用动态缩
放—因为在对尺寸较小的位图进行缩放时,其图象质量通常会显著地下降。
AIF Builder 可以运行图标设计工具,此设计工具可生成构成图标的位图和肖像。AIF 图
标设计工具能够帮助设计出专门针对Symbian 操作系统的位图文件格式的图标,此格式
称为多位图文件格式(.mbm)。
Developer Platform 2.0 for Series 60: C++应用软件设计简介| 22
版本 1.0 | 2004 年1 月28 日
如果应用软件要求为不同的语言提供不同的图标位图,则实现的方法是,通过Aiftool 生
成.aif 文件的多份拷贝,并且每个文件包含正确的位图。每个生成的.aif 文件需要进行本
地化,在保存文件时,将其后缀名设置为aXX,其中XX 是对应相应语言的两位语言代
码。此时,应用框架 (AppArc)软件已经被更改,以便加载与用户选取的当前语言相应的
aif 文件。
6.2.1.2 字幕
Avkon 能够为每个应用软件提供一行简短字幕。在缺省情况下,这些字幕与.aif 文件中的
字幕是相同的。尽管如此,应用软件的开发人员可以对不同语言产生独立的字幕文件,
这些文件将包含一般字幕和简短字幕。简短字幕能够用于应用软件的栅格显示,而较长
字幕可以用于应用软件的列表显示。字幕文件的生成方式与正常的资源文件相同。用于
创建字幕文件的资源结构是在apcaptionfile.rh 中定义的。
6.2.1.3 MIME 支持
多用途因特网邮件扩展(MIME)定义了传输非文本数据的文件格式,例如,这些文件
包括通过因特网传输的图像、音频和传真等。一个Symbian 操作系统下的应用软件能够
在.aif 文件中定义其支持的MIME 类型,以及每种类型分配的支持优先级。
关于 .aif 文件的更多信息,请参见Series 60 SDK文档。
7 . 为S e r i e s 6 0 设备创建可执行代码
Series 60 目标设备的构建在命令行状态下进行,通过调用GCC 交互-编译器能够创建ARM 二
进制格式的可执行文件。为了创建目标硬件的可执行代码,需打开命令提示符窗口,并且寻找到
GUI HelloWorld 项目的群目录,然后输入以下命令:
bldmake bldfiles
abld build armi urel
以上命令将通过GCC 工具链,使创建系统能够产生在目标设备上可执行的应用软件ARMI 版本
代码。这些步骤包括C++ 编译、链接、资源编译和.aif 生成。
可执行和数据文件(HelloWorldBasic.app, HelloWorldBasic.rsc) 将置于..epoc32 eleasearmiurel
之下。 为了在Series 60 设备上进行测试,这四个文件需要传输至相应的设备,并放置在文件夹
Developer Platform 2.0 for Series 60: C++应用软件设计简介| 23
版本 1.0 | 2004 年1 月28 日
systemappsHelloWorldBasic 中。关于进行文件传输的选项,参见本文下面章节“ 应用软件安
装” 。
关于其它创建类型和选项的更多细节,请参见Series 60 SDK 文档。
8 . 在S e r i e s 6 0 设备上执行
关于文件传输、PC 连接以及应用软件安装的选项,可能根据所使用的Series 60 设备具有的特
定软件和硬件会有所不同。
8.1 SIS 文件安装
Symbian 安装系统能够为Symbian OS 电话的应用软件、数据和配置信息的安装,提供简单一
致的用户界面。开发人员(或最终用户)可以安装组件,这些组件已经打包于SIS (.sis) 文件中。
下面是三种可能的安装选项:
• 通过调用在PC 上的SIS 文件进行安装,然后通过PC 和电话之间的红
外或蓝牙接口将应用软件安装到电话上。
• 通过OBEX、红外或蓝牙接口,从另外设备,例如PC、其它Symbian
OS 的电话或任一支持OBEX 的设备传输SIS 文件,使用电话中的
“ Application Controller” 选项进行应用软件的安装。
• 另外,SIS 文件可以作为e-mail 的附件进行传输,这样通过电话的
“ Application Controller” 选项,可进行应用软件的安装。然而,目标
设备的消息收信箱可能会认可以呼入消息附件形式的Symbian OS 可
执行文件格式,但出于安全考虑,不要打开消息和其附件。
安装之后,电话上将保留一个小的 “ 残留.sis 文件” ,如果以后需要的话,它可以用于应用软件
的卸载控制。
8.2 SIS 文件创建
SIS 文件是由Makesis 工具从输入(.pkg)文件中创建的,例如输入文件为
HelloWorldBasic.pkg。.pkg 文件是一个包含应用软件或文件安装信息的文本文件。它可手工创
建,或由Series 60 SDK 提供的Sisar 工具创建。 Sisar 能够将所有应用软件文件打包为一
个.sis 文件,以简化应用软件安装到目标硬件的过程。Sisar 可读入手工创建的.pkg 文件。
Developer Platform 2.0 for Series 60: C++应用软件设计简介| 24
版本 1.0 | 2004 年1 月28 日
注意在.pkg 文件中,需要包含一个 Series 60 平台的识别码。这样可产生一个内置机制,使得用
户试图在Series 60 设备上安装非Series 60 应用软件时产生告警。关于这个要求的更为完整解
释和实施细节,请参见:
http://www.forum.nokia.com/symbian
- 相关文档的标题为 “ Series 60 Platform Identification Code” 。
Developer Platform 2.0 for Series 60: C++应用软件设计简介| 25

<---->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126064/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-08-29

  • 博文量
    3488
  • 访问量
    2612411