您的位置:首页 > 编程语言 > C语言/C++

用Carbide C++ 2.0 搭建Symbian开发平台

2009-09-28 09:44 176 查看
一、软件准备1. ActivePerl
必须要ActivePerl-5.6.1.635版本的。
ftp://ftp.activestate.com/ActivePerl/Windows/5.6/ActivePerl-5.6.1.635-MSWin32-x86.msi
2. J2SE 5
最好是j2se 5的,据说j2se 6的会有问题。
http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-1_5_0_18-windows-i586-p.exe?BundledLineItemUUID=N15IBe.piNMAAAEgRjcRNmTG&OrderID=x1lIBe.pIo0AAAEgLzcRNmTG&ProductID=79FIBe.nKlMAAAEfLBlzHdQ4&FileName=/jdk-1_5_0_18-windows-i586-p.exe
3. Carbide 2.0 http://www.forum.nokia.com/info/sw.nokia.com/id/dbb8841d-832c-43a6-be13-f78119a2b4cb.html
4. S60 SDKs supporting Symbian C++
Sdk必须根据自己的需要选定不同的版本。
http://www.forum.nokia.com/info/sw.nokia.com/id/4a7149a5-95a5-4726-913a-3c6f21eb65a5/S60-SDK-0616-3.0-mr.html
二、平台搭建
因为某些原因,最好把开发工具都安装在一个盘符下,而且项目目录也需要在同一个盘符。

l Perl安装l J2se安装l Carbide安装
Carbide c++ 2.0要求装在vista或者xp sp2上面,但是我的xp sp3不知道有什么影响。可以选择professional Edition。

安装完之后要运行安装目录下 /x86Build/env_switch/env_update.exe

l SDK安装l 目录结构如图所示:三、简单例子1. 创建项目
打开Carbide c++

File—new—project

 

2. 编译项目
设置build类型:右键选择项目,选择build configurations,设置成编译成winscw版本即仿真器运行版。

Build项目:右键选择项目,选择build project

 

3. 运行项目
右键选择项目,选择run as

编译会根据编译的类型把生成的文件放到EpocRoot的不同目录下去,现在是winscw版:

现在就可以看到我们的第一个程序了,不过里面什么也没有:

 

四、杂记
1. Symbian是操作系统,和windows是一样类型的玩意。而s40、s60等是基于Symbian OS之上的平台,提供各种接口,等于是一层API壳。

2. 项目目录结构

data(S60) 资源规格文件(.rss)

Gfx(S60) 应用程序资源文件,例如图片和声音文件

Group 工程文件,例如 .mmp和 bld.inf

Image(UIQ) 应用程序资源文件,例如图片

Inc 头文件

rsrc(UIQ) 资源规格文件(.rss .ra)

src .cpp

3. bld.inf文件

一个必须的文本文件,主要包括项目定义文件和其他任何编译工具所需要的文件。

PRJ_PLATFORMS //目标平台

 

 

 

WINSCW ARMV5 GCCE

PRJ_EXPORTS //项目的输出的文件

PRJ_MMPFILES //项目定义文件

gnumakefile icons_aif_scalable_dc.mk

myFirst.mmp

 

 

4. 项目描述文件 .mmp

TARGET myFirst.exe

 

 

 

UID 0x100039CE 0xE22DC27E

VENDORID 0

TARGETTYPE exe

EPOCSTACKSIZE 0x5000

SYSTEMINCLUDE /epoc32/include /epoc32/include/variant /epoc32/include/ecom

USERINCLUDE ../inc ../data

SOURCEPATH ../data

START RESOURCE myFirst.rss

HEADER

TARGETPATH resource/apps

END //RESOURCE

START RESOURCE myFirst_reg.rss

TARGETPATH /private/10003a3f/apps

END //RESOURCE

LIBRARY euser.lib apparc.lib cone.lib eikcore.lib avkon.lib

LIBRARY commonengine.lib efsrv.lib estor.lib eikcoctl.lib eikdlg.lib

LIBRARY eikctl.lib bafl.lib fbscli.lib aknnotify.lib aknicon.lib

LIBRARY etext.lib gdi.lib egul.lib insock.lib

LIBRARY ecom.lib InetProtUtil.lib http.lib esock.lib

LANG 01

START BITMAP myFirst.mbm

HEADER

TARGETPATH /resource/apps

SOURCEPATH ../gfx

SOURCE c12,1 list_icon.bmp list_icon_mask.bmp

END

SOURCEPATH ../src

#ifdef ENABLE_ABIV2_MODE

DEBUGGABLE_UDEBONLY

#endif

SOURCE myFirstContainer.cpp MyFirstContainerView.cpp myFirstDocument.cpp myFirstAppUi.cpp myFirstApplication.cpp

 

 

TARGET

 

 

 

该关键字指明了目标文件(exe或dll文件)的名称。

TARGETTYPE

该关键字指明了工程所产生的目标文件的类型,在上面的例子中,我们生成了一个可执行文件。在大多数情况下,目标文件的类型为dll,exe或是其他的插件(plugin)。

UID

目标(通常指可以执行的.exe或.dll文件)具有三个UID,这些UID用来标识组件,第一个UID是无须指定的。因为它是编译工具根据目标的类型自动分配的。所以这里所指定的实际上是UID2,这个值进一步指明了目标的类型,上面例子中,值(0x100039CE)指明了目标文件是一个应用程序,Symbian系统使用这个值来标识所有的应用程序。下一个指定的UID 对每个应用程序来说都是唯一的。它标识了这个应用程序的注册资源文件和该程序的安装包文件.pkg。所以为了保证这个值的唯一性, 您必须要向Symbian申请这个UID,由他们负责从数据库中为您的应用程序分配一个UID。可到Symbian的网站上了解更多的相关信息。有一些UID的值是用来测试的,例如SDK中的例子:文件系统浏览应用程序(filesystem browser)所使用的UID为0xE80000A6, 您也可以在测试您的应用程序的时候使用这个值,但注意,不要在您的最终产品中使用它。

SECUREID

这是个可选的关键了,上面的例子中没有出现。该关键字为应用程序定义了安全标示符,用来指明这个程序可以访问哪个私有的目录。如果该关键字没有使用,用UID3来代替该关键字。

VENDORID

该关键字是在Symbian OS v9.1版本新增的。用来指定软件提供商的ID号。该关键字不是必须的,可省略。

CAPABILITY

这是 Symbian OS 9.1新增加的关键字。该关键字指明了应用程序的权限(或称作能力,如:查看系统目录)。

SOURCEPATH和SOURCE

SOURCE关键字指明了有哪些源文件和资源文件需要编译,而SOURCEPATH关键字指明了这些文件的位置。这个位置既可以是相对路径(相对于mmp文件),也可以是绝对路径。

SYSTEMINCLUDE

这个关键字指定了系统头文件的位置,系统头文件通常用#include<>语句包含。

USERINCLUDE

该关键字的作用类似于SYSTEMINCLUDE,它指明了在用户自定义头文件所在的位置。

START RESOURCE…END

START RESOURCE 关键字表明了一个信息块的开始,这些信息指明了如何编译资源文件。END 标示该信息块结束。

TARGETPATH

该关键字用来指定被编译后的资源文件的位置。注意: 由于安全方面的考虑,所有的可执行代码(exe或dll)都从手机上的/sys/bin/ 目录运行。可执行代码不需要用该关键字指定位置。TARGETPATH 关键字仅仅用来指定编译后的资源文件的位置。

HEADER

这是一个可选的关键字,当它被使用的时候,系统将会在/epoc32/include/路径下创建资源头文件(.rsg)。这个头文件包含了允许以C++代码引用特定资源的标识符。

LIBRARY

这个关键字列出了应用程序需要链接的库文件。

STATICLIBRARY

该关键字用来指定需要被静态链接的库文件 (库文件中的代码会被链接到您的程序中,而不是需要时才装载到内存)。

START BITMAP…END

这一节包含了应用程序图标所使用的位图(bitmap),以及如何将这些位图编译成.mbm(Symbian系统专有的图像格式)的方式。

EPOCSTACKSIZE

该关键字是可选的,我们上面的例子中并未用到。在以前的Symbian OS 版本中,缺省的栈大小为0X5000字节。在v9.1版本中,缺省值为0x2000。为了增加栈的大小,可以使用该关键字。例如:EPOCSTACKSIZE 0x5000 。要注意的是, 对栈设置仅仅对真实设备有效,但对模拟器无效。

EPOCHEAPSIZE

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

 

 

5. GCCE版本和ARM版本:

在真实设备上运行的程序版本不同于我们在模拟器上运行的程序版本,在设备上运行的版本必须是GCCE版本或ARM版本。其中GCCE版本是用SDK 自带的编译器的,使用它不需要付费,而ARM版本是专门针对ARM 平台的,代码经过优化,性能优于GCCE版本的程序,但需要付费

6. .sis 和 .pkg

创建应用程序的GCCE 版本以后,需要创建一个Symbian 安装文件(.sis)。从本质上来讲,.sis文件只是一个压缩文件, 它包含了组成应用程序所需的exe,dll,rss文件,和一些手机接收应用程序时所必须的信息(例如:语言种类,应用程序的UID)。现在的问题是,我们根据什么信息来创建这个sis文件呢?答案在于pkg文件, 在创建这个文件之前,先需要创建一个pkg文件,pkg文件中包含了一些有用的信息,包括将工程文件拷贝到手机的哪个目录下面,程序的版本号等

7. Sign

在开发s60 3rd版本的应用程序时,所有的 .sis 文件在安装到手机之前,必须被签名.如果您的程序没有用到capability或只用到了对所有的用户都开放的功能(utility),您可以使用自签名认证(Self Signed certificate)。当在自己的手机上调试程序时,这种方法特别管用.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息