概述
Nokia Qt 智能安装工具(Nokia Smart Installer)的使用使得在Symbian^3平台以前的手机运行Qt应用变得可能,并确保为Symbian手机平台开发的Qt应用能够工作在最新的Qt环境中。基本工作原理是在开发Qt应用的时候将Smart Installer和Qt应用一起打包成.sis安装文件,当封装了Smart Installer的.sis文件被安装到手机上时,系统会自动检测手机里是否安装了Qt及当前的Qt版本是否满足当前Qt应用的工作需要,如果当前的环境不能满足Qt应用需要,则会从Nokia的服务器上自动下载更新的Qt环境,保证Qt应用能够安装和执行。在Nokia Symbian^3平台以后的手机中,Qt库都将被预置于手机中,但是为了使得签名后的Qt应用程序都使用于所有的手机,建议Qt应用都包含Smart installer。
下载
开发者可以同更新自己安装过的Nokia Qt SDK 来获取最新的smartinstaller.sis文件。安装后的文件路径为C:\Nokia QtSDK\Symbian\SDK。目前的大为32K。它是一个非常小的文件,从而不会给开发者最终的sis文件大小产生很大的影响。带有Smart Installer的测试应用可以下载。用户可以在官方Smart installer网址查看更多信息。
将下载后解压出来的smartinstaller.sis文件拷贝到Symbian SDK目录下,和epoc32在同一级目录。
相关Smart Installer 的更多可以在Nokia Smart Installer for Symbian找到。对发布到Ovi应用商店的应用来说,开发者可以在pkg文件中使用如下的描述来申明dependency:
(0x2001E61C), 4, 6, 3, {"Qt"}(0x2002AC89), 1, 0, 1, {"QtMobility"}对于Symbian^3手机的开发者来说,早期的N8手机中虽然在出厂时已经有Qt库的安装,但可能没有Qt Mobility 库的存在,所以在发送应用到Ovi网站发布时,千万要记得在.pro文件中加入Qt Mobility的描述以声明对Qt Mobility库的dependency。这样用户在安装应用时可以自动从服务器中下载最新版的Qt Mobility库。开发者可以参阅文章: 怎么为Ovi商店应用对Qt应用签名。更多信息: Ovi Publisher Alert 。
在这里必须指出的是:对于任何在Ovi上发布的Qt应用来说,应用的UID必须是在 Protected 范围内的,也即0x2xxxxxxx。这个UID必须是在网址 www.symbiansigned.com 上登录后申请的全球唯一的UID。开发者在得到UID后可以在自己的.pro 文件中指定自己应用的UID。修改过后的应用需要使用开发者证书进行签名,而不能使用用自签名。关于更多签名的问题,请参考如何进行Symbian签名。更多关于Qt在Symbian平台上的签名可以参阅:Qt & Application Signing。
- symbian {
- TARGET.UID3 = 0x2174fc7c
- # TARGET.CAPABILITY += TARGET.EPOCSTACKSIZE = 0x14000 TARGET.EPOCHEAPSIZE = 0x020000 0x800000
- }
使用编译自签名的智能安装包
在进行打包之前,仔细检查 .pkg 文件中是否含有所支持平台的UID。详细的UID信息:。 平台及设备UID。否侧,所产生的sis文件将可能在手机运行的平台上不被支持而不能下载最新的Qt相关的库。
在DOS命令中执行qmake可以生成编译所需的所有文件
C:\Sources\Application>qmake调用make release-gcce生成可发布的symbian应用
C:\Sources\Application>make release-gcce调用make installer_sis,会生成加入了智能安装工具的安装包application_installer.sis
C:\Sources\Application>make installer_sis注: 如果调用的是make sis文件将生成没有封装智能安装工具的安装包application.sis
编译Symbian签名的智能安装包
在DOS命令中执行qmake可以生成编译所需的所有文件
C:\Sources\Application>qmake调用make release-gcce生成可发布的symbian应用
C:\Sources\Application>make release-gcce调用带证书和密钥选项的make sis,生成application.sis
C:\Sources\Application>make sis QT_SIS_CERTIFICATE=developer.cer QT_SIS_KEY=developer.key将生成的application.sis提交签名,然后调用make installer_sis,会生成加入了智能安装工具的安装包application_installer.sis
注意:在执行make installer_sis之前需要将封装包的UID改成0x2002CCCF详细内容参考附录
C:\Sources\Application>make installer_sis QT_SIS_CERTIFICATE=developer.cer QT_SIS_KEY=developer.key注意:这里的developer.cer及developer.key是开发者自己用于签名的开发者证书。新生成的application_installer.sis需要重新进行Symbian签名。
提交Ovi store的未签名的智能安装包
Ovi store现在提供为symbian应用签名的服务, 使用这个服务的开发者需要提交未签名的SIS包, 即Application_installer.sis 及 其包含的Application.sis 要未签名版本,(包含在Application.sis中的其他sis需要正确签名)。 Ovi store的签名服务只签名Application.sis及外层的Application_installer.sis。使用以下命令来生成SIS文件:
- make unsigned_sismake unsigned_installer_sis
Note: 注意:开发者必须使用非Beta版的 最新的Nokia Qt SDK来生成,要提交的应用需要时未签名的SIS, 自签名(Self-Sign)的sis不能通过自动测试,开发者签名的SIS, 原则上可以手动去掉签名,但是这会延缓测试时间。unsigned_sis 和 unsigned_installer_sis选项 从Qt 4.7.1 开始提供,
Qt 4.6产生的Makefile不包含unsigned_sis 和 unsigned_installer_sis选项,而使用sis,installer_sis命令选项生成的是自签名的SIS这无法通过测试,加上开发者签名也会延缓测试进度。
不建议自己修改Makefile,在Nokia Qt SDK包含Qt4.7以前,要生成未签名的SIS,我们有下面两种方法。打开Start > Nokia Qt SDK > Symbian > Qt for Symbian Command Prompt命令行。
make release-gccemakesis Application_templae.pkg Application.sismakesis Application_installer.pkg也可以用signsis -u命令去掉签名,来得到未签名的 sis文件
make release-gccemake sissignsis -u Application.sis Application.sismake installer_sissignsis -u Application_installer.sis Application_installer.sis请任选择其中一种方法, 生成用于提交的Application_instller.sis。
附录:.pkg封装文件
自签名的.pkg文件格式内容如下(部分)
- ; application_installer.pkg generated by qmake at 2010-06-04T15:17:38
- ; This file is generated by qmake and should not be modified by the user;
- ; Language&EN
- ; SIS header: name, uid, version#{"application installer"},(0xA000D7CE),1,0,0
- ; Localised Vendor name%{"Vendor"}
- ; Unique Vendor name:"Vendor"使用Symbian签名的.pkg文件格式如下(部分)
- ; application_installer.pkg generated by qmake at 2010-06-04T15:17:38
- ; This file is generated by qmake and should not be modified by the user;
- ; Language&EN ; SIS header: name, uid, version#{"application installer"},(0x2002CCCF),1,0,0
- ; Localised Vendor name%{"Vendor"}
- ; Unique Vendor name:"Vendor"
区别在
- {"application installer"},(0xA000D7CE),1,0,0
变成了
- {"application installer"},(0x2002CCCF),1,0,0
小结:Qt for Symbian智能安装工具,内容介绍完了。关于SmartInstaller 的一个样本 pkg 文件可以在这里File:Smartinstaller sample pkg.zip下载。