分类: 嵌入式
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介绍的方法安装到手机上就可以运行了。