Qt for Symbian智能安裝工具
概述
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下載。