Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4973221
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

分类: 嵌入式

2010-07-22 10:46:22

3.4  程序编译

当程序建立好后,就可以进行编译、测试刚刚建立的程序框架是否是我们想要的,只有编译好的程序才可以在模拟器上安装到设备上运行,才能看到程序执行的结果。

Symbian的开发环境,不管是基于S60的,还是基于UIQ的,都能够支持两种编译方式:基于命令行的编译和基于IDE环境的编译。

3.4.1  命令行编译

在使用命令行进行编译时,首先要保证所使用的 Symbian 开发环境平台是要编译的Symbian的目标平台,也就是说,如果想把一个程序编译成S60 3rd的手机上运行的程序,那么就要切换成S60 3rd的开发环境平台。

1.切换Symbian开发环境

能进行Symbian程序开发的环境很多,如S60 2nd、S60 3rd、UIQ 2.0、UIQ3.0等,而且这些SDK可以同时安装在开发人员的计算机上。如图3.8所示,笔者用来开发的计 算 机 上 就 安 装 了 两 个 SDK :S60_2nd_FP2_CW和S60_3rd_MR。

 
 

如果想查看计算机上都安装了哪些Symbian 的SDK,可在DOS窗中输入以下命令:   

 

这个命令的执行结果就是列出已经安装的 SDK 列表,在 SDK 列表中,后面带 default参数指示的那个SDK,就是系统当前缺省使用的Symbian的开发环境,图3.8列出的列表中显示S60_3rd_MR是缺省使用的开发Symbian开发环境。 如果想切换到另外一个开发环境,在DOS窗口中输入下面的命令:

 

这个命令会把Symbian开发环境切换到S60_2nd_FP2_CW,命令参数“@”后为指定要切换到的目标环境平台。

2.命令行编译

要在命令行下编译一个Symbian项目,首先选择程序对应的正确的Symbian开发环境,如果开发用的计算机只安装有一个Symbian开发环境,就不涉及环境切换的问题了。在DOS窗口中进入程序的Group目录,如图3.9所示。

 

在图3.9中还有group目录列表,在这个目录中共有3个文件,都是由向导默认生成的,这里先记下。

在使用命令行进行编译时,需要输入的第一个命令如下:

 

图 3.10 所示的 group 目录列表中多了一个批处理文件 abld.bat,这个文件是编译命令bldmake bldfiles根据当前的环境生成的,Symbian项目的工程文件是与具体的目标平台无关的,且与具体的IDE环境无关,项目编译成什么目标平台,由项目开发者在编译时决定,在后续的编译中,都要使用这个新生成的批处理命令abld.bat来完成。

从Symbian OS 9.1开始,常用的目标平台主要有3种:WINSCW、GCCE和ARMV5。WINSCW 主要用于在模拟器上运行和调试程序。通过 GCCE 编译的程序可以运行在目标手机上,但其编译出的可执行程序比较大且执行效率不是很高。ARMV5 编译器是 ARM 公司的新版编译器,在S60 3rd的SDK中没有集成,需要付费才能获得,编译出的程序在目标手机上的执行性能非常高。

如果想要编译程序在模拟器上运行,在DOS窗口的group下输入下面的命令后按回车键:

 

这个命令中的参数build表示编译程序所有,包括资源、代码等,WINSCW表示编译成WINSCW 平台的目标代码,主要运行在模拟器上,udeb 表示编译成 Unicode 编码的 debug模式。

使用这个命令编译完成后,就可以在模拟器上运行程序了,在命令行启动模拟器,输入下面的命令后按回车键:

 

这个命令会启动模拟器,在模拟器的功能选择窗口找到Installation文件夹,按模拟器的确认键进入文件夹,会看到刚才编译成功的程序Exam0303NewGui的图标,执行它,第一个程序就可以运行起来了。

如果要使程序在目标手机上运行,在DOS窗口的group下输入下面的命令后按回车键:

  

这个命令中的参数“gcce”表示使用GCCE编译器把程序编译成可在手机上执行的编译,如果在计算机上安装有ARMV5的编译器,只要把 “gcce”替换成“armv5”就可以使用ARMV5编译器进行编译了,参数“urel”表示编译成Unicode编码的release模式。

这样编译完成后,使用 makesis 打包程序,然后就可以安装到手机上运行了。打包的相关内容会在本章后面进行介绍。

3.6  打包发布

当建立好Symbian项目,并且实现了需要的程序功能后,在模拟器上运行测试也没有问题了,这时候,就需要编译成能在目标手机平台运行的目标代码,如使用GCCE或ARMV5编译器进行编译,然后制作程序的安装包,安装到手机上运行。

3.6.1  打包文件.pkg

一个Symbian程序开发完成后,是要安装到手机上运行的,这时候就需要制作一个安装程序sis文件,通过sis文件才能将程序安装到手机上运行。

制作在Symbian手机上运行的安装程序,首先需要有一个制作安装程序描述文件*.pkg,在这个*.pkg文件中,主要存储着有哪些文件需要被打包到安装程序sis文件中,而且还要指 明将来在安装时,这些文件安装到手机的什么目录下。

通过Carbide.c++1.3的向导生成的Symbian工程,向导默认会产生一个pkg文件,这个pkg文件就存储在sis目录中。

3.6.2  制作Symbian安装程序sis文件

有了上面的 pkg 文件后,制作安装就比较轻松了。制作 sis 文件有两种方式:命令行和IDE环境中创建。

1.通过命令制作安装程序

使用命令行的方式制作安装程序,比较简洁明了,需要做什么工作就在 DOS 命令窗口输入什么命令就可以了。首先要打开一个 DOS 窗口,进入到要制作安装程序的 Symbian 项目的sis目录中,如图3.11所示。

  

在开始执行makesis命令之前,先检查一下Exam0303NewGui_S60_3_X_v_1_0_0.pkg这个pkg文件,打开这个文件,发现这个文件中有3个以$号开头的环境变量,这是Carbide.c++1.3的新建向导中生成的,在 IDE环境中编译时可以使用,由于我们使用的DOS 环境中没有设置这样的环境变量,因此需要把这几个环境变量修改为实际的值,如下:

  

对pkg文件中的环境变量修改完之后,在DOS的命令行中输入如下命令并按回车:

   

makesis是SDK中自带的制作安装程序的命令,命令所使用的参数就是打包描述文件pkg,执行后生成程序的安装文件 Exam0303NewGui_S60_3_X_v_1_0_0.SIS 存储在 sis 目录中。

使用以上命令制作的S60 2nd版手机安装程序sis文件,可以直接在手机上安装运行;使用以上命令制作的S60 3rd版手机的安装程序sis文件,还需要对sis文件进行签名才可以在手机上安装运行,sis签名相关的内容将在3.6.3节介绍。

2.通过IDE环境制作安装程序

使用Carbide.c++1.3开发Symbian项目,可以比较容易地在IDE环境下制作安装程序。

在新建或导入一个Symbian项目后,使用右键单击项目的名称,在弹出快捷菜单中选择最下面的“Properties”,在打开的“Properties for Exam0303NewGui”对话框中,选择左侧树视图中的“Carbide.c++”,展开后再选择下面的“Carbide Build Configuration”,然后在右侧的“Active Configuration”中的下拉式组合列表框中选择“Phone Release(GCCE)[S60_3rd_MR]”,再选择下面的标签页“SIS Builder”,如果下面的列表是空的,就单击右侧的“Add”按钮,添加一个SIS Builder,这时会打开“SIS Properties”的对话框,如图3.12所示。

    

这个对话框主要用于选择要使用的pkg文件,签名选项处根据需要进行设置。如果是S60 2nd版的程序或不想对S60 3rd版的程序进行签名,那么可以选择“Don’t sign sis file”;下面的两个选项都是为S60 3rd版的程序进行设置的,如果选择了“Self sign sis file”,在编译时,Carbide.c++会在生成sis后,自动地生成一个证书对程序签名;如果选择了“Sign sis file with certificate/key pair”,就需要用户自己指定签名证书。

通过上面的对话框设置,以后在使用Carbide.c++为目标手机进行编译时,编译完成后,就可以直接在sis文件中找到安装程序了。

3.6.3  S60 3rd版安装程序签名

从Symbian OS 9.1开始,在OS中引入了新的安全模型,更改了工程组织、目录权限、API能力限制等,增强了程序的安全性。 Symbian从以下几个方面增强了程序的安全性。

(1)TCB平台安全性的核心组件。

(2)TCE保护平台的敏感API。

(3)能力访问敏感API的权限。

(4)数据锁定安全的本地存储。

(5)SID与VID为软件和厂商提供的安全ID。

(6)边界与策略安全的IPC。

(7)软件安装程序设备上仅允许受信任的软件运行。

从Symbian OS 9.1开始,对应的S60 SDK是第三版,引入了对API的能力限制,能力是授予访问敏感API权限的令牌。如果在程序中需要Symbian OS中的特定功能的API,则需要在程序的工程组织文件中声明相应的能力,在制作安装程序时也要使用具有同样能力的证书进行签名。

Symbian将API分为4类,如图3.13所示。60%无限制的API和用户在安装期间可以授权的API可以满足大多数的应用,这类程序使用自 签名证书就可以对安装程序进行签名,签名后的安装程序就可以在手机上安装、测试和发布应用。自签名的证书可以使用SDK提供的makekeys工具生成自 签名证书。 

  

如果程序使用了 Symbian  Signed 能力授权的 API,开发过程中,需要从 的网站上申请开发者证书进行签名,然后才可以安装到手机上进行测试。申请的开发证书是和手机绑定的,在开发完成后,要在symbiansigned的网站进行签名才可以发布并安装到任何目标手机上。

对生成的 sis 文件进行签名,因为还没有自签名证书,可以先使用下面的命令生成一个自签名证书:

  

该命令执行后,就会生成可以在S60 3rd版手机上安装的程序Exam0303NewGu.SISX,只要是签了名的sis,扩展名是sis或sisx都可以,在安装时,手机的安装程序能给识别出来,使用3.6.4介绍的方法安装到手机上就可以运行了。

阅读(1152) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~