应用软件设计简介

Series 60 2.0 :C++应用软件设计简介

 

术语定义 
本文将使用下列术语和缩略语。 
API
 应用编程接口 
AVKON UIKON 
Symbian OS 应用框架的Series 60 扩展和更改 
IDE
 集成开发环境 
GUI
 图形用户界面 
OBEX 
:对象交换-即对象转移,例如通过红外和蓝牙接口,在两个设备之间传送文件和数据 
SDK 
:软件开发套件 
UI
 用户界面 
UIKON Symbian OS 
设备的公用UI 和控制框架 

1 . 
简介 
1.1 
目的和范畴 
    
本文介绍了在 Developer Platform 2.0for Series 60 上使用C++开发两种不同的“ Hello World” 应用程序的方法。Developer Platform 2.0for Series 60 设备基于Symbian v7.0s 操作系统,它是一个开放的、稳定的、多任务的操作系统,专为支持数据业务的移动电话设计。Symbian 操作系统主要使用C++语言编写,同时也是第三方开发的主要选择。 
    
本文将对Developer Platform 2.0 for Series 60 Symbian OS v7.0s 进行介绍。本文还将介绍Series 60 SDK 和相应的开发工具以及关于更多阅读材料的消息。本文假定读者不需要事先具备Symbian 操作系统的特定知识,但需要熟悉C++并已经获得了Series 60 C++的软件开发包(SDK)。

2 . D e v e l o p e r P l a t f o r m 2 . 0 f o r S e r i e s 6 0 
    Developer Platform 2.0 for Series 60 
是一个完整的智能电话参考设计平台,它包括大量的无线应用软件。平台建立在Symbian 操作系统(Symbian OS)之上,并附带一个可配置的图形用户界面库和一个完备的参考应用程序套件。Developer Platform 2.0 for Series 60 能够提供一组功能强大的组件和许多不同的API。所提供的API 可广泛用于“ 标准” 的应用程序套件,并且其设计目标也能满足第三方应用开发人员重复使用它们的要求。

3 . S y m b i a n O S v 7 . 0 s 
    Developer Platform 2.0 for Series 60 
的成功关键是Symbian 操作系统,它是该产品的基础。Symbian 操作系统是一个32 位多任务操作系统,通常,其事件异步发生,并且其应用软件之间能够相互作用。例如,一个电话呼叫可能中断用户正在编写email 消息的操作;一个用户可以在通话过程中从email 应用软件转到日历应用软件;或者一个呼入SMS 可以触发用户访问联系簿数据库,然后转发此SMS。依据平台的结构和软件设计指南,应用软件开发人员可以对智能电话用户的这些日常操作进行常规处理。 

4 . S e r i e s 6 0 C + + S D K / S e r i e s 6 0 C + + S D K 
    Developer Platform 2.0 for Series 60 
自带基于Symbian SDK SDK。其API 能够支持第三方使用C++开发新的Series 60 应用软件,这些应用软件可以包含在他们的产品之中或作为增值和售后市场的应用软件。为了帮助开发人员,Series 60 SDK 提供了文档、工具和示例编码,以及一个基于Microsoft Windows 的仿真器软件。SDK 是开发、测试和调试C++应用软件的必备工具。

5 . C + + 
应用软件范例 
    
以下将介绍用于Series 60 设备的两个“ Hello World” 应用软件,一个控制台应用软件和一个基本GUI 应用软件。在创建这些应用软件时,需要使用Microsoft Visual C++ 6.0 (Service Pack 3),并且,由于SDK 创建系统使用Perl 脚本,因此需要安装Perl 
5.1 Hello World 
控制台应用软件 
    
第一个“ Hello World” 范例是一个控制台应用软件,它由以扩展名为.exe 的单个可执行文件组 成。在Symbian 操作系统中,这样的可执行文件有两个主要目的:要么作为无用户界面的服务器,要么作为具有极简单文本界面的测试配件。通常,复杂的GUI 应用软件利用了应用软件框架和用户界面库。本文稍后将描述一个基于GUI “ Hello World” 应用软件。 
5.1.1  
从命令行创建和运行应用软件 
    
打开一个命令提示符并切换到包含Series 60 SDK 的驱动器。搜索包含项目代码的文件夹,例如: 
/Symbian/7.0s/Series60_v20/Examples/Basics/HelloWorld 
该文件夹包含三个文件: 
HelloWorld.cpp - 
源文件 
HelloWorld.mmp - 
项目定义文件 
Bld.inf - 
组件定义文件 
下面创建范例。键入: 
bldmake bldfiles 
此命令将产生一个新文件,即ABLD.BAT;这个命令文件总是在需要的时候产生,并且无需进行编辑。下面编译并链接项目。键入: 
abld build wins udeb 
这将为Series 60 调试仿真器软件创建项目。运行该应用软件: 
在命令提示符下,搜索含有Helloworld.exe 程序的文件夹,例如: 
/Symbian/7.0s/Series60_v20/Epoc32/Release/wins/udeb 
在命令提示符下,键入: 
helloworld 
Series 60 
仿真器启动,并且应用程序将如图所示: 
1 控制台仿真器 
注意该应用软件仅在等待PC 上的任何按键操作。按下任意键将结束该应用软件并关闭仿真器。 
5.1.2 
IDE 创建和运行应用软件 
通常,诸如Helloworld 应用软件的项目是在Microsoft Visual C++6.0 IDE 内进行创建和运行的,如下所示。 
如果ABLD.BAT 文件不存在(或如果.mmp 文件或bld.inf 文件已经改变),必须以键入的方式生成下面的创建命令文件: 
bldmake bldfiles 
接着键入: 
abld makefile vc6 
这将为Visual C++创建项目和工作空间文件(.dsp 文件和.dsw 文件)。它们位于 
/epoc32/build 
子目录结构下,例如: 
/epoc32/build/symbian/7.0s/series60_v20/examples/basics/helloworld/helloworld/wins 
通过打开在Visual C++中的工作空间文件Helloworld.dsw,并且按F7 键,就能在IDE 内创建应用软件,然后,按Ctrl+F5 可运行该软件。控制台仿真器将随着Helloworld 应用软件的运行自动启动。 
5.1.3 
控制台测试配件 
    
请注意,Helloworld.cpp 文件中的项目代码很简单,它实现了一个称为doExampleL()的单一函数功能,该函数被头文件CommonFramework.h 中定义的函数callExampleL()调用。该文件是提供的Series 60 SDK 中的一个部分,并且在一般开发工作中,非常适用于基于控制台的测试配件。由于不需要加载GUI 库,控制台应用软件和仿真器启动非常快。控制台软件主要的缺陷(除界面简单外)是在仿真器中只能同时运行一个应用软件。
5.2 Hello World GUI 
应用软件 
    
为了改善应用软件的可维护性和灵活性,Symbian 操作系统下的应用软件通常被分为两个主要部分:引擎部分,也就是众所周知的软件模型,和用户界面(UI)。引擎部分包括了用于描述应用软件数据、算法和任何数据持续性的数据结构。用户界面(UI)通常又被分为数据的屏幕显示和一个决定应用软件整个运行行为的处理程序。本文稍后将对Symbian 操作系统GUI 应用软件中的四个关键的类进行详细的讨论。 

5.2.1 
从命令行创建和运行应用程序 
    
打开一个命令提示符并切换到包含Series 60 SDK 的驱动器。搜索包含项目定义(.mmp)和组件定义文件(bld.inf)的文件夹,例如:/Symbian/7.0s/Series60Ex/HelloWorldBasic/group. 
下面创建范例。键入: 
bldmake bldfiles 
此命令将产生一个新文件,即ABLD.BAT;这个命令文件总是在需要的时候产生,并且无需进行编辑。 
下面编译并链接项目。键入: 
abld build wins udeb 
这将为Series 60 调试仿真器软件创建项目。 
下面在命令提示符下运行该应用软件。键入: 
epoc 
Series 60 
调试仿真器将启动,并且 Series 60 系统的外壳如图所示。使用仿真器面板上的方向键或PC 机上的方向键能够寻找到HelloWorldBasic 应用程序,然后,按下方向控制键中间的执行按钮即可调用该应用程序。 
5.2.2 
IDE 构建和运行应用软件 
通常,诸如HelloWorldBasic 应用软件的项目是在Microsoft Visual C++6.0 IDE 内进行创建和运行的,如下所示。 
如果ABLD.BAT 文件不存在(或如果.mmp 文件或bld.inf 文件已经改变),必须以键入的方式生成下面的创建命令文件: 
bldmake bldfiles 
接着键入: 
abld makefile vc6 
这将为VisualC++创建项目文件和工作空间文件(.dsp 文件和.dsw 文件)。它们位于/epoc32/build 子目录结构下,例如: 
/epoc32/build/symbian/7.0s/Series60Ex/helloworldbasic/helloworldbasic/wins 
通过打开在Visual C++中的工作空间文件Helloworld.dsw,并且按F7 键,就能在IDE 内创建应用软件,然后,按Ctrl+F5 可运行该软件。一旦需要执行文件,可在SDK 根目录下文件夹/Epoc32/Release/wins/udeb 中找到Epoc.exe。这样就能够启动调试仿真器,这也是开发项目的缺省方法。 
Series 60 
调试仿真器将启动,并且 Series 60 系统的外壳如图所示。使用仿真器面板上的方向键或PC 机上的方向键能够寻找到HelloWorldBasic 应用程序,然后,按下方向控制键中间的执行按钮即可调用该应用程序。 
除此之外,通过按下调试器的F5 键,也可以运行应用软件。不要理睬关于Epoc.exe 程序无调试信息的告警提示。 注意:是应用软件(本质上是一个DLL),而不是仿真器软件本身需要调试。在告警提示的小方块中打勾,以便以后不再显示此项目的告警提示。应用软件和其相关的调试信息位于 
Epoc32/Release/wins/udeb/z/system/apps/HelloWorldBasic. 

5.3 
应用软件UI 元素 
  
状态框是靠近屏幕顶部的实条(蓝色)加上其上部的区域。主框是状态框和位于屏幕底部的软键标记之间的中间部分。控制框是包括软键标记在内的紧接着主框下的区域。 
“ Hello world” 
应用软件 
状态框显示了当前应用软件和当前状况的状态信息,以及关于设备状态的一般信息,如信号强度 
和电池充电状态等。它占据屏幕的顶部。在一些应用软件中或某些情形下,如在游戏软件中,状 
态框是不可见的。 
主框是屏幕的主要区域,应用软件在此显示其数据。通常该区域指客户矩形框,将被一个应用软件视图完全占据。 
控制框占据屏幕的底部并显示与两个软键有关的标记。 
控制框下的两个按钮为左软键和右软键,它们用于选择当前关联的选项菜单或标记操作。四方向的导航键可以进行上、下、左、右滚动,或按下中心部位进行选择操作。

5.4 Symbian OS 
下的应用软件架构 
    UIKON 
和标准EIKON 是应用软件框架的关键部分。它们不仅提供了启动应用程序的框架,而且 
提供了一组丰富的标准控制组件(如:对话框、数字编辑器、日期编辑器等),这些组件是应用 
软件在运行时需要使用的。一个典型的为Symbian OS 编写的应用软件实际上由四个独特的组件,每个组件对应UIKON/EIKON 框架内的相应类。它们是: 
应用软件外壳― ― CEikApplication 派生而来。该类首先被框架实体化。在被创建之后,它就负责对其它代码进行初始化。然后,就创建出新的CEikApplication 派生类。 
文档― ― CEikDocument 派生而来。所有应用软件都有一个CEikDocument 派生类,并在应用软件首次运行时由缺省CEikDocument 创建一个缺省文档文件。但不是所有应用软件都基于文件。即它们可能没有必要向提供用户创建、打开或编辑文档的功能。在这种不基于文件的应用软件中,例如如电话应用软件,文档类的实例是一个为创建一个AppUi 类实例需要的外壳,通常,它是一个模型/引擎 
实例。在基于文件的应用软件中,文档类也能够对永久存取器的数据存储和恢复进行管理。 
应用软件的UI― ― Uikon CEikAppUi 派生而来。该类提供了所有应用软件的主要功能,诸如事件处理,控制生成,访问许多有用系统的调用等等。通常, CEikAppUi 派生类负责创建一个或多个应用软件视图。 
视图― ― 提供用户实际在屏幕上看到的情景。所有应用软件都有一个缺省的视图,一些较复杂的应用软件,如日历应用应用软件,能提供多个视图。视图仅仅用于显示数据(如HelloWorld 内所示)或在交互式的应用软件中从用户收集数据。例如,在许多数据输入应用软件中,数据编辑器仅仅是视图中包含的Uikon 所提供的标准控件。在大多数的应用软件中,视图都由CCoeControl 派生而来的,即它们自己本身就是控件 

5.5 Series 60 
应用 软件框架 
    Avkon 
是一个专用于Developer Platform 2.0 for Series 60 UI 层。它提供了大量的用户界面组件,并实现许多由UIKON  标准EIKONK 框架基类派生的类,而UIKON EIKON 标准框架基类可以提供Avko 应用软件特性和Developer Platform 2.0 for Series 60 的行为特征。 
? CAknDocument
-该类是以一个基类的形式提供给应用软件文档的,它由CEikDocument 派生而来。利用该类,不需要启动就可以访问缺省应用软件文档文件。这种情况对大多数Avkon 应用软件是适宜的。当CEikDocument 类被用作应用软件文档的基类时,在缺省情况下,Avkon 不能进行文档文件的创建。 
? CAknAppUi
Avkon 应用软件(视图结构应用软件除外)由此类派生。该类支持多个Avkon 特有的功能: 
支持KeySound 
CBA StatusPane 提供附件 
? TextResolver
-从CAknAppUI::HandleError()Avkon 特定的错误报告 
? Avkon 
视图结构集成 
? Control dumping
-调试功能
CAknViewAppUi 
所有基于视图结构(参见下面的可选GUI 设计)的应用软件都必须由此类派生,而此类派生于CAknAppUi。应用软件视图可以由CAknView 派生而来。 
应用软件启动― ― 一个CeikApplication 类由 CAknApplication 派生而来。该类通过重载PreDocConstructL()OpenIniFileLC(RFs& aFs)CEikApplication 进行修改。重载PreDocConstructL 可以确保被创建的应用软件实例不会已经出现。如果已经出现,则应用软件就切换到现有的实例并退出。这种检查操作只针对非嵌入应用软件。在缺省情况下下,Series 60 应用软件不支持.ini 文件。OpenIniFileLC()被重载为一个简单实施,即一旦被调用就退出。当使用.ini 文件时,应用软件就必须实施应用软件类中的这一方法,以便调用CEikApplication::OpenIniFileLC  <BR< p>

5.6 可选的GUI 设计 
    
应用软件的UI 可以简单得只有一个主屏幕,如计算器应用软件,或者包括多个屏幕的较复杂的应用软件,如消息应用软件。因此,经过挑选,可以采用下面三种结构方法来编写应用软件的GUI 
传统的Symbian 操作系统控制结构― ― 派生于CCoeControl 的视图 
基于对话框的结构― ― 所有派生于对话框类的视图 
视图结构――视图切换,其中应用软件的试图由CAknView 派生而来。 
应用软件结构的选择依赖于应用软件的复杂度、视图浏览、通信需求和屏幕布局的要求。无论选择那种结构,每个应用软件的顶层应用UI 类均从一个单应用软件UI 基类派生而来。基类并不强迫对UI 结构的任何选择,而这些选择必须由开发人员确定。 
一直以来,Symbian 操作系统下的应用软件均采用由CCoeControl 派生的定制视图控件来编写,这些控件放置在应用软件控制堆栈之上,以便作为应用软件的视图。这些控件可以根据应用软件要求进行创建、终止、显示和隐藏,以便提供适当的行为。这种方法非常适合Avkon 中的应用软件。因为许多Avkon 应用软件将基于现有的以传统方法编写的UI,所以采用与Avkon 相同的方法是顺理成章的。

5.7 UI 
的风格 
    
应用软件的视图、菜单和对话框等的实际外观可以按照Series 60 UI Style Guide进行较为专业的设计,该指南是Series 60 SDK 文档的一个部分。

5.8 Series 60 
应用软件Wizard 
    
开发人员可能希望使用控制台HelloWorld 应用软件作为一个测试工具的基础,或者将GUI 版本 
作为应用软件的起点。 
另外,Series 60 AppWizard(包括在Series 60 SDK 之中)能够为开发人员提供了一个简单而方便的方法,以便在Visual Studio 内产生一个基本的GUI 应用软件项目。该应用软件Wizard 能够产生符合上述的三种UI 结构之一的项目。 
AppWizard 
将产生: 
四个基类(App, AppUI, Document  View)的代码段和说明,这些基类与大多数Symbian 操作系统下应用软件是关联的 
所有构建项目所需的构建和项目文件 
简单的资源文件和用作缺省应用软件图标的位图 
将应用软件安装到设备上需要的文件 
AppWizard 
的使用方法将在 “ Series 60 AppWizard Installation & User’ s Guide” Series 
60 SDK 
文档中有更为深入的描述。

5.9 GUI 
应用软件的项目文件 
    
开发人员必须为每个开发项目生成组件定义(bld.inf)文件和一个项目定义(.mmp)文件。一个项目 
必须具有一个bld.inf 文件并与一个或多个.mmp 文件关联,即一个文件对应一个组件。简单项目只 
具有单个组件,如一个用于应用软件的.mmp 文件的引用。在诸如DLLs 这种除应用软件外还包括 
其它组件的较复杂的项目中,将会存在多个.mmp 文件。工具链利用组件定义文件和项目定义文件 
创建一个构建文件(ABLD.BAT)。该文件可有多种用途,例如,为Visual C++开发环境创建其它 
项目和工作空间文件,或者为调试或正式版本的模拟器或目标设备创建项目。 
如需获得更详细的有关bld.inf  .mmp 文件的语法描述,请参见Series 60 SDK 文档。 
5.9.1  bld.inf 
PRJ_MMPFILES 
// Specify the .mmp files required for building the important component 
// releasables. 
/Symbian/7.0s/Series60_v20/Series60Ex/HelloWorldBasic/group/HelloWorldbasic.mmp 
以上的组件定义文件(bld.inf)范例涉及到的文件是单个项目定义文件,即HelloWorldBasic.mmp。对于一个简单的应用软件或单个组件来说,通常所有定义都存放在一个bld.inf 文件中。 
5.9.2 HelloWorldBasic.mmp 
下面列出了HelloWorldBasic.mmp 文件的关键部分,并提供了对其主要声明语句的简短解释。一个项目定义(.mmp)文件能够定义平台中的项目特性和编译器不受约束的方式;然后, SDK 创建工具(abld.bat)将使用它为一些特殊平台产生特定的生成文件。 
TARGET HelloWorldBasic.app 
TARGETTYPE app 
UID 0x100039CE 0x10005B91 
TARGETPATH /system/apps/helloworldbasic 
SOURCEPATH ../src 
SOURCE HelloWorldBasic.cpp 
SOURCE HelloWorldBasicApplication.cpp 
SOURCE HelloWorldBasicAppView.cpp 
SOURCE HelloWorldBasicAppUi.cpp 
SOURCE HelloWorldBasicDocument.cpp 
SOURCEPATH ../group 
RESOURCE HelloWorldBasic.rss 
USERINCLUDE ../inc 
SYSTEMINCLUDE /epoc32/include 
LIBRARY euser.lib 
LIBRARY apparc.lib 
LIBRARY cone.lib 
LIBRARY eikcore.lib 
LIBRARY avkon.lib 
? TARGET 
是应用软件的名称。 
? TARGETTYPE 
app,即GUI 应用软件。 
? TARGETPATH 
指应用软件和其组件的所在位置― ― 通常在/system/apps/TARGETPATH 目录下。 
? UID 
行为GUI 应用软件指定了一个唯一的系统识别符是0x100039CE 以及为应用软件本身指定的识别符是0x10005B91 
? SOURCE
SOURCEPATHUSERINCLUDE SYSTEMINCLUDE 声明语句均是指源文件,这些源文件是用于具有源文件以及应用软件和系统头文件的路径信息的项目的。 
? RESOURCE 
声明语句是指用来定义大多数用户界面元素如菜单、对话、字符串等的源文件。 
? LIBRARY 
声明语句列举了为链接一个GUI 应用软件所需的应用软件框架和图形库。 
? AIF 
声明语句是指包括图标和其它在应用软件资源文件中定义的应用软件特性的一个应用软件信息文件― ― 这些内容在稍后的章节6.2.1 节中将有更多的说明。
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 
源文件,由创建工具自动生成,这些创建工具位于 
/epoc32/build/symbian/7.0s/series60_v20/series60ex/helloworldbasic/group/helloworldbasic/wins 
的文件夹下。开发人员不应对该文件进行编辑。 

5.12 
头文件 
    HelloWorldBasic.hrh― ― 
包含了一些既在源文件(.cpp)又在资源文件(.rss)中用到的UI 控制列
举常量的定义。这些常量是专门为应用软件设置的命令ID、按键ID 或视图ID。它们可以用于对话 
中的键盘处理或命令处理。目前,范例HelloWorldBasic 应用软件只有一个ID,即: 
EHelloWorldBasicCommand1 
值得注意的是avkon.hrh(位于/Epoc32/Include 目录下)包含许多由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 的头文件 
6 . 
可执行文件和位置 
本节描述由创建程序生成的可执行文件,也就是每个文件的类型和用途以及其在模拟器和目标设 
备上的位置。 
6.1 HelloWorld 
控制台应用软件文件 
Series 60 模拟器上,HelloWorld 控制台应用软件由一个可执行文件组成,即 
HelloWorld.exe
。该文件的调试版本是在文件夹/Epoc32/Release/wins/UDEB 中生成的,而发行 
版本是在文件夹/Epoc32/Release/wins/UREL 中生成的(模拟器一般不生成发行版本) 
在模拟器中,这些位置对于正确执行.exe 文件是至关重要的。在目标设备中,依据惯例,可执 
行文件.exe 应放置在文件夹/system/programs 中,但它们可从任何位置执行。然而,目标设备 
的消息收信箱可能会识别出以呼入消息附件形式的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 应用软件能够被系统自动识别,它们应遵守文件放置的惯例,即文件应放置在诸 
/system/apps/appname/的文件夹中。因此在HelloWorld 范例中,以上描述的文件,即 
HelloWorldBasic.app 
HelloWorldBasic.rsc 应放置在/system/apps/HelloWorldBasic/ 文件夹 
中。 
为了使特定的应用软件能够正确运行,许多其它文件是至关重要的,例如,可能需要一个压缩的 
多位图文件 (.mbm),以及一个特定的数据文件等。通常,这些必需的文件和关键的应用软件文 
件放置在同一位置,即放置在 /system/apps/appname/中。 
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++
应用软件设计简介
如果应用软件要求为不同的语言提供不同的图标位图,则实现的方法是,通过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/release/armi/urel 
之下。 为了在Series 60 设备上进行测试,这四个文件需要传输至相应的设备,并放置在文件夹 
/system/apps/HelloWorldBasic/ 
中。关于进行文件传输的选项,参见本文下面章节“ 应用软件安 
”  
    
关于其它创建类型和选项的更多细节,请参见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 文件。 
注意在.pkg 文件中,需要包含一个 Series 60 平台的识别码。这样可产生一个内置机制,使得用 
户试图在Series 60 设备上安装非Series 60 应用软件时产生告警。关于这个要求的更为完整解 
释和实施细节,请参见: 
http://www.forum.nokia.com/symbian 
相关文档的标题为 “ Series 60 Platform Identification Code” 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件设计说明书 版本:V1.0 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 目 录 1 引言 1 1.1 文档控制 1 1.2 目的 1 1.3 范围 1 1.4 定义、首字母缩词和缩略语 1 1.5 参考资料 1 1.6 概述 1 2 整体说明 1 2.1 业务背景 1 2.2 功能模型 1 2.3 用例模型概述 1 2.3.1 子系统一 1 2.4 假设和依赖关系 1 3 包1:出入库 2 3.1 冲补帐务-样例1 2 3.1.1 系统用例 2 3.1.2 类关系图 2 3.1.3 类图 3 3.1.4 顺序图 4 3.2 冲补入库单-样例2 4 3.2.1 入库单冲账 4 3.2.2 入库单补账 6 引言 文档控制 目的 范围 定义、首字母缩词和缩略语 参考资料 概述 整体说明 业务背景 [此小节应说明软件的业务背景,包括组织机构、业务流程等。] 功能模型 [此小节应说明用例包的组织,以用例包的形式来表达软件的功能。] 用例模型概述 子系统一 用例图 [此小节应说明此子系统下的用例图。] 主角列表 [此小节以列表的形式说明此子系统相关的主角。] 用例列表 [此小节以列表的形式说明此子系统相关的用例。] 假设和依赖关系 [本节说明所有重要的技术可行性假设、子系统或构件可用性假设,或者可作为此文档所述软件可行性的基础的其他与项目有关的假设。] 包1:出入库 画出包图、核心业务处理流程、状态转换图来说明核心业务的工作方式。 冲补帐务-样例1 系统用例 类关系图 类图 实体类 边界类 控制类 顺序图 分仓保管帐建帐处理流程 备注: 去掉价位一栏; 收获年限改为“年限“,入库年限改为非必输项; 国别改为必输项; 等级改为非必输项; 增加建帐的修改功能:只能修改等级、入库年限、产地。 冲补入库单-样例2 入库单冲账 前台界面 名称:account_grainin_strike.jsp 界面说明: 序号 界面名称 表 字段 字段含义 备注 1 编号 入库单 RC_RKD_RKDBH 入库单编号 顺序号 入库单 RC_RKD_SXH 顺序号 计划安排表 入库单 RC_RKD_RKJHAPBNM 入库计划安排表内码 需要转化为编号 计划明细 入库单 RC_RKD_JHMXNM 计划明细内码 需要转化为编号 入库通知单编号 入库单 RC_RKD_ZGKRKTZDNM 直管库入库通知单内码 需要转化为编号 客户名称 入库单 RC_RKD_KHNM,RC_RKD_KHMC 客户名称 客户内码 合同号 入库单 RC_RKD_HTNM, RC_RKD_HTH 合同号 合同内码 到库时间 入库登记信息 RC_RKDJXX_DKSJ 到库时间 收获年份 入库单 RC_RKD_NX 年限 等级 入库检验信息 RC_RKJYXX_WLDJNM 物料等级内码 后台服务 功能简介 入库账务服务 包名 com.digitalchina.zcl.stock.account 类名 AccountGraininServer 方法 名称 参数 返回值 描述 入库单补账 前台界面 名称:account_grainin_repair.jsp 界面说明: 序号 界面名称 表 字段 字段含义 备注 1 编号 入库单 RC_RKD_RKDBH 入库单编号 顺序号 入库单 RC_RKD_SXH 顺序号 扣杂 入库检验信息 RC_RKJYXX_KZZ 扣杂质(%) 扣水% 入库检验信息 RC_RKJYXX_KSF 扣水份(%) 备注 入库检验信息 RC_RKJYXX_JYYJBZ 检验意见备注 3 选择类型 入库检验信息 RC_RKJJXX_JJLX 检斤类型 0,称重;1,标准包 毛重 入库检验信息 RC_RKJJXX_MZ 毛重 水分扣量 入库检验信息 RC_RKJJXX_SFKL 水分扣量 杂质扣量 入库检验信息 RC_RKJJXX_ZZKL 杂质扣量 其它扣量 入库检验信息 RC_RKJJXX_QTKL 其它扣量 后台服务 功能简介 入库账务服务 包名 com.digitalchina.zcl.stock.account 类名 AccountGraininServer 方法 名称 参数 返回值 描述 补账 repairAccount 被补入库单内码 入库单补账; 根据被补单据产生一笔单据(RC_RKD): 红单标志为蓝单; 补帐标志为1补帐 补帐单据内码为被补单据内码; 补帐日期为当前日期; 审核标志为未审核; 能否记保管帐为1能; 能否记统计帐为1能; 保管帐记帐标志为未记帐; 统计帐记帐标志为未记帐; 删除标志为未删除; 制单时间为当前时间; 其余要素用户录入;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值