Symbian OS SDK 开发基础

安装和配置

安装和配置 Series 60 2nd SDK的C++开发环境有点烦琐,网上也有几中不一样的做法。但万变总是不离其宗,刚开始的时候看的蒙蒙胧胧,研究了几天总算有点眉目了,现在写点东西算是给自己一个总结,也给大家一个借鉴。

首先是安装前的准备工作。

我安装SDK的是Series 60 2nd Edition SDK for Symbian OS, Supporting Feature Pack 2 For C++, Chinese Version。

下载地址:http://www.forum.nokia.com/main/0,,034-4,00.html.


在安装Series 60 2nd SDK 前建议先安装ActivePerl,目前的最新版本是:5.8.6.811,可以到他的官方网站下载。

下载页面:http://www.activestate.com/Products/Download/Download.plex?id=ActivePerl


另外还需要安装J2RE(且不管是否有用)和VC++6 ,SP3以上,VC++6的Service pack 可以到微软网站下载。

J2RE可到www.sun.com下载;


如果你的VC++6是英文版的,那么可以到这个地址下载vs6sp5:

http://www.microsoft.com/downloads/details.aspx?FamilyID=e41b1d62-f3cb-4867-b86a-a2fe4932cf70&DisplayLang=en


另外,建议把Series 60 2nd SDK 和以上这些安装的软件装在一个逻辑硬盘下,并且在以后的使用中把工程文件也保存到同一逻辑硬盘中。

在做完这些安装前的准备工作以后就可以安装Series 60 2nd SDK了。我的Series 60 2nd SDK安装在了C盘下,安装完后可以在C盘看到Symbian目录。若下文中没有特别说明的话,那么提到的目录都是位于C:/Symbian/8.0a/S60_2nd_FP2_SC目录下。

建议直接把 Series 60 2nd SDK 安装在 盘符根目录下,当然,这不是强制的, 原则上Series 60 2nd SDK 安装的时候,目录名不包含空格就可以了。

检查系统环境变量中是否有EPOCROOT,如果没有则添加该环境变量值为:/Symbian/8.0a/S60_2nd_FP2_SC/ 。按照我这种安装方式EPOCROOT的值是/Symbian/8.0a/S60_2nd_FP2_SC/,其他的就不一定了

完成后, 打开一个命令行窗口,输入 epoc , 如果你看到模拟器运行,就说明 Series 60 2nd SDK 已经安装好了。



图-1 Series 60 2nd SDK安装完成



VC++6 集成开发环境

<方法-1>

接下来的工作是集成开发环境,我这里以listbox为例来说明具体的步骤。这个例子位于Series60Ex目录下。在listbox目录下,你会看到你会看到若干文件夹,先不管这些文件夹是做什么的;直接进入Group目录。 Group目录包含了两个文件:aknexlist.mmp和bld.inf。先不管这两个文件是怎么来的,做什么用的,这些问题有待以后慢慢了解。现在在Group目录下编写一个批处理文件:

==mmkvc6.bat==

cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/listbox/group

makmake aknexlist.mmp vc6


运行mmkvc6.bat。step_1.bat运行以后,在group下产生四个文件VC++6的文件,这个马上可以看到。然后启动VC++6,来编译这个工程。需要注意的是,不要把这四个文件剪切到另外一个新建的目录中。我原先就犯了这个错误,以为这么多文件放在一起比较乱,然后在GROUP目录下又新建了一个vc6的目录,把mmkvc6.bat产生的四个文件放到了cv6中,这样造成了编译错误。

现在启动VC++6,选择菜单 FileàOpen Workspace,浏览到

C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/listbox/group目录,选择工作区文件AKNEXLIST.DSW打开。然后按编译按钮,进行编译,一般来说编译是可以通过的。但是在某些时候也会出现编译错误的情况,关于这个情况请参看下文中提到的<方法-2>ListBox这个例子建议首先使用<方法-2>进行编译,因为我在使用<方法-1>的时候是除了点问题的,Helloworldbasic这个例子用<方法-1>编译就没有什么问题。

编译时在epoc32/BUILD/SYMBIAN/8.0A/S60_2ND_FP2_SC/SERIES60EX/LISTBOX/GROUP/AKNEXLIST/WINS/UDEB 目录下产生目标文件,这些是模拟器运行所需要的文件。编译后点运行按钮,VC++6 出现一个对话筐,询问可执行文件的路径,可执行文件也就是EPOC.exe文件,这个文件位于:C:/Program Files/Common Files/Symbian/tools目录下,但是这里需要注意的是VC++这里使用的是DOS命令,所以这个路径应该是:C:/Progra~1/Common~1/Symbian/tools/Epoc.exe,确定后运行,VC++启动模拟器。可以在模拟器中看到ListBox;




图-3 运行 ListBox



<方法-2>

在实践中我发现,使用上述方法来集成开发环境在某些情况下会发生编译错误,错误原因有的是包含文件找不到,有的是perl的错误。使用下面的方法集成开发环境,基本可以避免编译时的错误。首先编写三个批处理文件:

==getAbld.bat==

cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/listbox/group

bldmake bldfile


==makeWin.bat==

cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/listbox/group

abld build wins udeb


==abld_makeFile_vc6.bat==

cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/listbox/group

abld makefile vc6


mmk_makeFile_vc6.bat 也可以这样写,我把它另存为mmk_makeFile_vc6.bat 。

cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/listbox/group

makmake aknexlist.mmp vc


getAbld.bat运行以后,在C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/listbox/group下产生一个ABLD.BAT文件。在 epoc32/BUILD/SYMBIAN/8.0A/S60_2ND_FP2_SC/SERIES60EX会多出一个listbox文件夹,在它的Group目录下包含了一大堆Make文件。可见,bldmake:这个命令工具可以创建一个命令文件(Abld.bat),用这个文件可以编译并连接你的应用程序。 Bldmake需要bld.inf文件来完成这些工作,Abld.bat文件是应用程序编译的入口点. 在makeWin.bat和makeFile_vc6.bat中都使用了这个命令。

接着运行makeWin.bat, makeWin.bat执行以后在epoc32/BUILD/SYMBIAN/8.0A/S60_2ND_FP2_SC/SERIES60EX/LISTBOX/GROUP下多了一个AKNEXLIST目录,在AKNEXLIST目录的WINS目录的UDEB下存放了可以在Windows下模拟器中运行的LISTBOX程序。现在可以打开模拟器,开始->程序->Series 60 Developer Tools->...->Emulator (Debug),启动模拟器。,在应用程序列表中(需要往下拉一点)可以看到listbox这个程序。事实上makeWin.bat是对ListBox工程进行了编译,在UDEB目录下产生了一系列目标文件。当然,我们现在的目的是使Symbian OS的工程转化为VC++6的工程,所以还需要运行abld_makeFile_vc6.bat或mmk_makeFile_vc6.bat以生成VC++6所需要的一系列工程文件。

打开abld_makeFile_vc6.bat ,程序会在epoc32/BUILD/SYMBIAN/8.0A/S60_2ND_FP2_SC/SERIES60EX/LISTBOX/GROUP/AKNEXLIST/WINS目录下生成VC++6所需要的工程文件。打开AKNEXLIST.DSW工作区文件,编译。这个时候你可以先把C:/Symbian/8.0a/S60_2nd_FP2_SC/epoc32/BUILD/SYMBIAN/8.0A/S60_2ND_FP2_SC/SERIES60EX/LISTBOX/GROUP/AKNEXLIST/WINS/UDEB目录下的文件全部删除,VC++6会重新编译生成这些文件。所以使用VC++6来编译的目的就是你可以先在VC++6中编辑工程的,然后重新编译,VC++6是一个开发工具。当然,你可以不用abld_makeFile_vc6.bat来生成VC++6的工程文件,而用mmk_makeFile_vc6.bat来生成。运行mmk_makeFile_vc6.bat 以后,在Series60Ex/listbox/group下产生vc++6工程文件,同样打开AKNEXLIST.DSW工作区文件,编译。

生成目标机器代码

为了是使程序能够在目标机器( 诺基亚3650、7650)上运行,需要编写两个批处理文件 makeArmi.bat和makeInstall.bat:

==makeArmi.bat==

cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/Listbox/group

abld build armi urel


==makeInstall.bat==

cd C:/Symbian/8.0a/S60_2nd_FP2_SC/Series60Ex/listbox/sis/

makesis listbox.pk


makeArmi.bat批处理文件功能是生成可在目标机器( 诺基亚3650、7650)上运行的代码。makeArmi.bat运行以后,可以在epoc32/BUILD/SYMBIAN/8.0A/S60_2ND_FP2_SC/SERIES60EX/LISTBOX/GROUP/LISTBOX/看到多了一个ARMI目录。最后,还要制作可以在手机上安装的.sis文件。转到Series60Ex/listbox的sis目录下,运行makeInstall.bat,这时并没有产生.sis文件,同时程序报错:文件没有找。



图-10 生成目标机器代码运行错误



现在用记事本打开listbox.pkg把里面的出现的thumb目录改成armi目录。重新运行makeInstall.bat,运行后马上可以在SIS目录看到sis文件生成了,使用这个安装文件就可以把ListBox程序安装到手机上。

创建自己的Symbian OS工程

<工程生成文件>

很多人会想,在Series60Ex下的这么多Symbian OS工程是怎么创建出来的。在S60_2nd_FP2_SC SDK中提供了一个Application Wizard来创建Symbian OS工程。由于 Symbian OS程序可以使用多种开发工具,而每一种工具又有其特有的工程结构和文件格式,所以有必要使用一种中立的工程结构和文件格式来保存Symbian OS工程,然后利用SDK所提供的工具把它转成特定开发工具所兼容的格式。这种通用格式的核心文件包括:组件描述文件和工程定义文件。

·组件描述文件:在这个文件中罗列了组件中所包括的所有工程以及额外的编译指令。这个文件通常被命名为bld.inf,被bldmake命令用来定义abld.bat文件。bld.inf可以由若干部分组成,每一个部分都包括一个头字符串,头字符串可以是:prj_platforms, prj_exports, prj_testexports, 和 prj_mmpfiles,它们不区分大小写、头字符串可以重复出现、可以用一个反斜杠(/)表示续行、注释的语法和C++一样。例如:

PRJ_MMPFILES

Graphic/

s.mmp

//I am LeeFangJie


·工程定义文件(.mmp文件):这个文件描述了一个将要被编译的工程。这是一个中立文件,可以被SDK工具用来创建指定开发工具的工程文件,当然,这些开发工具必须是被DSK工具所支持的,比如说VC++6。在mmp文件中,同时也定义了需要被编译的资源文件和应用程序信息文件。makmake命令可以利用工程定义文件创建特定开发平台的工程文件。在abld命令中实际上是调用了makmake命令,但是它要比makmake命令使用更加方便。Mmp文件定义时要求每一个语句独占一行,一行无法写下时,用反斜杠表示续行;注释语法和C++一样。另外续行符要和目录分割符相区分(都是反斜杠:/),在目录结尾不需要写反斜杠,以免被误认为是续行符。以下是一个mmp文件:

SOURCE GraphicsAppUi.cpp

SOURCE GraphicsDocument.cpp

SOURCEPATH ../../helperfunctions

SOURCE bitmapmethods.cpp

SOURCEPATH ../data

RESOURCE Graphics.rss

RESOURCE Graphics_caption.rss

USERINCLUDE ../inc

USERINCLUDE ../../helperfunctions

SYSTEMINCLUDE /epoc32/include

START BITMAP images.mbm

HEADER

TARGETPATH /system/apps/graphics

SOURCEPATH ../gfx

SOURCE c12 image1.bmp

SOURCE c12 image2.bmp

SOURCE 1 image2_mask.bmp

END

LIBRARY euser.lib

LIBRARY apparc.lib

LIBRARY cone.lib

LIBRARY eikcore.lib

LIBRARY avkon.lib

LIBRARY fbscli.lib

LIBRARY bitgdi.lib

LIBRARY Commonengine.lib

LANG SC

AIF Graphics.aif ../aif GraphicsAif.rss c12 qgn_grap_list_icon.bmp qgn_grap_list_icon_mask.bmp qgn_grap_pane_icon.bmp qgn_grap_pane_icon_mask.bmp

// End of File



<使用 Application Wizard创建 Symbian OS 工程文件>

现在我们可以利用Application Wizard一步一步的创建Symbian OS工程文件。Application Wizard可以被认为是一个插件管理器,而这些插件可以被方便的安装到Application Wizard上,做为Application Wizard的一部分。利用这些插件可以轻松的生成Symbian OS应用程序筐架,在应用程序筐架生成过程中Application Wizard要求你输入关于你要创建的应用程序的各种信息,最后根据这些信息,Application Wizard 生成程序的所有代码。



现在启动Application Wizard,开始->程序->Series 60 Developer Tools->...->tools->Application Wizard。出现Application Wizard界面:



图-4 建立自己的Symbian OS 工程文件-1



在Select wizard plugin中选择Series 60 Application Wizard,在project name中输入mySymbianTestPrj,这是我要创建的工程名称。Project folder,是一个保存工程文件的目录,建议和你的S60_2nd_FP2_SC SDK 安装文件在同一个逻辑硬盘中。最后点[Create],首先出现general面板:



图-5建立自己的Symbian OS 工程文件-2



在what type of application would you like to create?中已经默认选择了EIKON,这里是让你选择Symbian OS应用程序的筐架。如果你选择EIKON,则应用程序的Main View会从CCoeControl 类继承;如果选择Dialog Based则Main View会从CEikDialog继承。这里的Main View可以理解为主窗口。另外还有一个选项是Support view architecture,如果你选中了这个选项,那么应用程序向导将会为你创建两个视图(view),每个视图不是继承于CCoeControl类就是继承于CEikDialog类。关于Symbian OS应用程序的筐架你可以参看一些其他的资料。

Application Title 是指应用程序名称。Application UID是指应用程序的UID(unique identification)。Symbian OS 用一个唯一的 UID 数值来确定和区分安装在设备上面的应用程序,UID必须是16进制的,它的范围在0x00000001 - 0x0FFFFFFF之间。在同一个设备上,UID必须是唯一的,如果有重复的UID存在,那么相同UID的程序将不会在面板上出现。

INI file 和 Document file 这两项通常不需要选种,它询问你是否产生INI file和Document file,这两个文件通常被认为是没有必要的,它们只会增加系统的访问次数。如果你想要系统支持basic Skins 那么可以选种Skin选项。

然后[Next]。Other 面板:



图-6建立自己的Symbian OS 工程文件-3



在other面板中可以输入程序作者以及版权信息,然后[Next] 出现Class 面板:



图-7建立自己的Symbian OS 工程文件-4



在Class 面板你可以修改默认的.cpp文件和.h文件的文件名,然后[Next], 出现Folders 面板:



图-8 建立自己的Symbian OS 工程文件-5



在Folders 面板中可以修改默认的应用程序文件夹名称,然后[Next],出现 IDE options面板:



图-9 建立自己的Symbian OS 工程文件-6



在IDE options面板 主要让你选择产生何中IDE下的工程文件,我的机器上安装了两个IDE所以他出现了Microsoft Visual C++ 6.0和Microsoft Visual Stdio .NET 2003两个选项,我这里选择了Microsoft Visual C++ 6.0。最后[Genreate]就可以了。然后你可以看一下C:/Symbian目录下是不是多了一个mySymbianTestPrj文件夹,这就是刚才创建的工程。

结束

掌握了开发环境之后,下一步是掌握Symbian C++的一些专有语法,然后是熟悉 Symbian的application framework. 然后就可以开始学习写一些简单的UI application了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值