|
本文介紹建立、部署和運(yùn)行擁有圖形用戶界面(GUI)的Series 60示例應(yīng)用程序的過(guò)程。
我們假定你已經(jīng)安裝了Series 60軟件開(kāi)發(fā)工具包(SDK),并安裝了自己選擇的集成開(kāi)發(fā)環(huán)境(IDE)。這兩項(xiàng)安裝都非常容易。
本文的主題包括:
開(kāi)發(fā)過(guò)程概述——在模擬器或目標(biāo)設(shè)備上定義、建立和運(yùn)行Series 60項(xiàng)目過(guò)程的詳細(xì)說(shuō)明,還有很多IDE的指南,以及開(kāi)發(fā)者可以使用的編譯選項(xiàng)。
Series 60模擬器——Series 60模擬器的特性和布局,同時(shí)包含了調(diào)試版本和發(fā)放版本。它包含了模擬器和真實(shí)的Series 60設(shè)備之間的相似性和不同點(diǎn)。
在模擬器上建立程序——如何使用不同廠商的IDE和PC命令提示符為模擬器建立HelloWorld項(xiàng)目。
運(yùn)行模擬器-——啟動(dòng)模擬器的多種方法,以及如何定位和運(yùn)行示例HelloWorld應(yīng)用程序。
在目標(biāo)設(shè)備上建立程序——如何為Series 60設(shè)備建立HelloWorld示例應(yīng)用程序,把它編譯為ARM二進(jìn)制可執(zhí)行文件。
在目標(biāo)設(shè)備上部署程序——如何把應(yīng)用程序的多個(gè)組件打包,選擇某種方法把它傳輸?shù)絊eries 60設(shè)備上,接下來(lái)如何定位并執(zhí)行它。
開(kāi)發(fā)過(guò)程的一步一步的概述將為你演示基本的步驟。這是使用Series 60 C++程序建立工具和多種IDE的快速指導(dǎo)。你會(huì)看到如何為Series 60模擬器建立和運(yùn)行“Hello World”應(yīng)用程序,以及如何在目標(biāo)設(shè)備上建立、部署和運(yùn)行該應(yīng)用程序。本文提供了建立和運(yùn)行HelloWorld示例的所有信息。
Series 60 C++軟件開(kāi)發(fā)工具包(SDK)
Symbian OS廣泛地應(yīng)用于智能電話平臺(tái),例如Series 60、Series 80和Series 90就是三種來(lái)自Nokia和UIQ(UIQ技術(shù)公司的UI平臺(tái))的UI平臺(tái)。
Series 60 SDK建立在Symbian公司發(fā)布的Symbian OS C++ SDK的某種版本之上。SDK包含了大量的工具、API、類庫(kù)和文檔,它允許你開(kāi)發(fā)新的應(yīng)用程序。
作為開(kāi)發(fā)人員,你可能需要使用Series 60 SDK的多個(gè)版本的(甚至來(lái)自于不同的Symbian OS UI平臺(tái)的SDK)。最重要的問(wèn)題是為你選擇的Series 60產(chǎn)品選擇正確的SDK版本。
Nokia或Series 60獲得許可發(fā)布了用于Series 60平臺(tái)特定版本開(kāi)發(fā)的SDK。也就是說(shuō),每個(gè)Series 60產(chǎn)品都是基于特定平臺(tái)版本的,SDK版本被定制成在某個(gè)平臺(tái)版本上開(kāi)發(fā)。特定的SDK版本也可能適合前面版本的平臺(tái)。這種“向后兼容性”依賴于用作版本基礎(chǔ)的Symbian OS版本、應(yīng)用程序開(kāi)發(fā)者使用的API、以及不同的平臺(tái)版本之間的API所發(fā)生的改變。特殊的獲得許可者也可能引入的產(chǎn)品專用的API,以允許開(kāi)發(fā)者訪問(wèn)它們的Series 60與其它的產(chǎn)品不同的特性。例如,Siemens SX1智能電話包含了FM收音機(jī),因此相應(yīng)的SDK可以包含“附加的”API來(lái)維護(hù)收音機(jī)。為了最大化不同產(chǎn)品之間的兼容性,你可能希望避免使用這類產(chǎn)品專用的API。你甚至?xí)x擇限制對(duì)通用API的使用,只使用某種平臺(tái)版本的選定范圍的通用的、不會(huì)發(fā)生變化的API。
使用多個(gè)SDK
使用一個(gè)Symbian OS SDK非常容易,而且安裝過(guò)程會(huì)使它立即可用。但是,開(kāi)發(fā)者通常需要使用Series 60的多個(gè)不同版本的SDK,甚至于不同用戶界面平臺(tái)的SDK。你可以把多個(gè)SDK安裝在開(kāi)發(fā)的PC上,對(duì)于在哪兒安裝它們、如何選擇使用作出一些限制。
開(kāi)發(fā)過(guò)程概述
SDK提供了基于PC平臺(tái)的模擬器,因此大多數(shù)開(kāi)發(fā)和測(cè)試操作都可以在沒(méi)有目標(biāo)硬件設(shè)備的情況下完成。我們可以為模擬器和目標(biāo)硬件設(shè)備建立不同的調(diào)試(debug)或發(fā)布(release)版本的Series 60項(xiàng)目可執(zhí)行文件(盡管目前目標(biāo)設(shè)備上的調(diào)試版本還有一些限制)。此外,為目標(biāo)設(shè)備進(jìn)行編譯的時(shí)候,還可以建立不同二進(jìn)制格式(例如ARMI、ARM4和Thumb)的可執(zhí)行代碼。編譯和鏈接的過(guò)程可以使用命令行工具或在多種IDE中進(jìn)行。本文談?wù)摰降腎DE包括微軟Visual C++ 6、Metrowerks CodeWarrior、Borland C++Builder 6移動(dòng)版和Borland C++BuilderX移動(dòng)版。
Symbian設(shè)計(jì)了一種用平臺(tái)無(wú)關(guān)的(platform-neutral)方式描述開(kāi)發(fā)項(xiàng)目的方法。在Symbian中會(huì)建立兩個(gè)全局文件(projectname.mmp和bld.inf),其中projectname是將要開(kāi)發(fā)的組件或應(yīng)用程序的名稱(示例項(xiàng)目中是HelloWorld)。這兩個(gè)文件可以作為任何建立應(yīng)用程序選項(xiàng)、IDE和平臺(tái)的出發(fā)點(diǎn)。
bld.inf指定了將要建立的所有項(xiàng)目組件的名稱,并且每個(gè)組件都在自己的.mmp文件中說(shuō)明。這兩個(gè)文件都是純文本的,通常你只擁有一個(gè).mmp文件,它定義了將要建立的應(yīng)用程序。如果項(xiàng)目包含多個(gè)組件,例如包含應(yīng)用程序本身和特定的函數(shù)庫(kù),那么每個(gè)組件都將擁有自己的.mmp文件。每個(gè)程序庫(kù)和應(yīng)用程序都有一個(gè).mmp文件,并且每個(gè)文件名都列舉在項(xiàng)目的bld.inf文件中。
在HelloWorld例子中有兩個(gè)項(xiàng)目說(shuō)明文件:bld.inf和helloworld.mmp。使用這兩個(gè)文件可以建立我們所需要的任何特定平臺(tái)的項(xiàng)目和命令文件。
典型情況下,你使用一個(gè)叫做bldmake的Symbian工具,把項(xiàng)目的兩個(gè)說(shuō)明文件作為輸入來(lái)生成一個(gè)叫做abld.bat的命令文件;接著你可以在命令行中使用abld.bat,來(lái)執(zhí)行大量的項(xiàng)目相關(guān)的操作。例如,abld.bat可以用于生成特定平臺(tái)和特定IDE的項(xiàng)目組成文件(makefiles)。如果項(xiàng)目源代碼存在,或者已經(jīng)完成了,我們可以使用abld為一個(gè)或多個(gè)平臺(tái)編譯該項(xiàng)目。
由于大多數(shù)開(kāi)發(fā)的項(xiàng)目都在某個(gè)IDE中建立和運(yùn)行,你一般只需要建立適合的IDE項(xiàng)目文件。
在使用微軟Visual C++的時(shí)候,你將在命令行中使用abld建立HelloWorld.dsp和HelloWorld.dsw項(xiàng)目文件。.dsw是在IDE中打開(kāi)的工作空間文件,它可以指向一個(gè)或多個(gè).dsp文件。
對(duì)于Metrowerks CodeWarrior,你既可以使用普通的方式在IDE中建立項(xiàng)目文件,也可以把.mmp文件直接導(dǎo)入IDE中。導(dǎo)入過(guò)程將建立CodeWarrior的特定項(xiàng)目(HelloWorld.mcp)所需要的文件。
類似地,Borland C++ Builder移動(dòng)版IDE能夠執(zhí)行與Metrowerks IDE類似的導(dǎo)入事務(wù),但是它是導(dǎo)入bld.inf文件而不是.mmp文件。例如Borland C++BuilderX將建立叫做HelloWorld.cbx的項(xiàng)目文件。
打開(kāi)特定IDE的項(xiàng)目文件將允許你開(kāi)發(fā)、建立、運(yùn)行和調(diào)試該應(yīng)用程序,并擁有IDE的全面支持。
對(duì)于寧可在命令行層次工作的開(kāi)發(fā)者來(lái)說(shuō),abld也可以用于在命令提示符下進(jìn)行編譯和鏈接。
建立特定IDE項(xiàng)目文件的所有方法要點(diǎn)將在本文后面的部分談到。此外,圖1-1顯示了使用兩個(gè)通用的Symbian OS項(xiàng)目文件生成我們所需要的特定平臺(tái)的項(xiàng)目文件(通過(guò)IDE導(dǎo)入選項(xiàng)或使用Symbian工具)。
|
1 安裝SDK及VC
Nokia根據(jù)手機(jī)的屏幕大小和價(jià)格高低把手機(jī)分成了多個(gè)系列,現(xiàn)在使用的系列有:Series 40、Series 60、Series 80 和Series 90。60系列采用Symbian os 6.1,然后又根據(jù)手機(jī)屏幕的特點(diǎn)對(duì)UI做了一些修改,這個(gè)被修改了的Symbian就被稱為Nokia的60系列平臺(tái)。使用60系列的手機(jī)型號(hào)包括:Nokia 6670、 Nokia 6630、 Nokia 6260 、Nokia N-Gage QD? 、Nokia 7610 、Nokia 6620 、Nokia 3620 、Nokia 3660 、Nokia 6600 、Nokia 3600、Nokia 3650、Nokia 7650、Nokia N-Gage?等。
下面我們就以60系列為例,介紹SDK的安裝過(guò)程。
1.1 安裝SDK
第一步,到Nokia論壇注冊(cè),下載最新的SDK。Nokia 網(wǎng)站提供的Series 60 SDK for Symbian OS Nokia Edition SDK最新版本是v1.2,Series 60 SDK for Symbian OS的最新版本是v2.1。下載網(wǎng)址:http://www.forum.nokia.com/main/0,6566,034-4,00.html
第二步,到http://www.activestate.com 網(wǎng)站下載最新的Active Perl Script 安裝程序。到http://www.java.com/en/download/manual.jsp 下載最新的J2RE。
第三步:安裝SDK,推薦為Symbian開(kāi)發(fā)單獨(dú)建一個(gè)目錄,例如d:\Symbian而不是使用C:\program files等這樣的目錄。
第四步:安裝Active Perl和J2RE,安裝到默認(rèn)目錄即可。
第五步:檢查環(huán)境變量設(shè)定。打開(kāi)系統(tǒng)環(huán)境變量tab,然后看看有沒(méi)有EPOCROOT,如果有的話,把它手動(dòng)改成“\” 。改完之后應(yīng)該是這個(gè)樣子的:
EPOCROOT = \
然后,在系統(tǒng)PATH中加入 \epoc32\tools目錄以及\epoc32\gcc\bin目錄就可以了。
實(shí)際上,Symbian SDK根本不用安裝,直接把epoc32目錄拷貝到一個(gè)機(jī)器上,然后照上述方法設(shè)定目錄和環(huán)境變量就可以了。
1.2 配置VC
如果我們使用的是VC 6.0,我們要保證系統(tǒng)至少打了SP3補(bǔ)丁,否則系統(tǒng)會(huì)有警告提示。如果我們使用的是VS.NET2003, 我們就只能安裝Series 60 SDK for Symbian OS v2.1,因?yàn)镾eries 60 SDK for Symbian OS Nokia Edition SDK v1.2在VS.NET2003無(wú)法正確建立工程。
如果要直接在vc6里創(chuàng)建新項(xiàng)目,要把\Symbian\6.1\Series60\Series60Tools\ Application Wizard目錄下的 AvkonAppWiz.awx和AVKONAPPWIZ.HLP文件拷貝到vc6的模板目錄C:\Program Files\ Microsoft Visual Studio\ Common\ MSDev98\ Template下。這樣我們就可以在VC的新建工程中看到Series 60 AppWizard v 1.9這個(gè)選項(xiàng).
填入Project Name 以后,確認(rèn)。
一路“Next”,一個(gè)最簡(jiǎn)單的Symbian應(yīng)用程序就建立好了。
如果要將已經(jīng)建立好的工程導(dǎo)入到VC6.0中,比如我們將SDK中的例子HelloWorld轉(zhuǎn)換成一個(gè)VC6的項(xiàng)目,我們首先進(jìn)入\Symbian\6.1\Series60\Series60Ex\HelloWorld目錄。在這里我們可以看到,在Symbian中,一個(gè)Project通常是按inc, src, group等目錄組織,group目錄里通常放的是項(xiàng)目文件,所以編譯時(shí)要先到這里。用命令提示符模式進(jìn)入剛才說(shuō)的那個(gè)目錄下,然后執(zhí)行:
bldmake bldfiles
這個(gè)命令會(huì)在group目錄下生成一個(gè)abld.bat的批處理文件,并且會(huì)在\Symbian \6.1\Series60\Epoc32\BUILD下生成\Symbian\6.1\Series60\Epoc32\BUILD\SYMBIAN\6.1\ SERIES60\SERIES60EX\HELLOWORLD\GROUP這個(gè)目錄,并在最底層目錄下生成一堆 .make文件。
然后,我們?cè)谕粋€(gè)目錄運(yùn)行剛才生成的abld.bat:
abld makefile vc6
這樣就會(huì)自動(dòng)生成vc6的dsw文件,位置在\Symbian\6.1\Series60\Epoc32\BUILD\ SYMBIAN\6.1\ SERIES60\SERIES60EX\HELLOWORLD\GROUP\HELLOWORLD\WINS。然后我們就可以在VC6種打開(kāi)這個(gè)Symbian工程了。
2 編譯
我們可以直接使用SDK提供的工具編譯Symbian 工程,也可以使用VC6提供的集成環(huán)境來(lái)編譯轉(zhuǎn)化過(guò)的Symbian 工程。編譯的結(jié)果存放在\Symbian\6.1\Series60\Epoc32\ Release\wins\UDEB\Z\SYSTEM\apps目錄中。
2.1使用SDK提供的工具編譯Symbian 工程
我們?cè)谏弦还?jié)的那個(gè)位置繼續(xù)輸入:
abld build wins udeb
這個(gè)命令會(huì)編譯我們的程序,最后在\Symbian\6.1\Series60\Epoc32\Release\wins\UDEB目錄下生成我們的helloworld,然后我們可以從開(kāi)始菜單里運(yùn)行模擬器的debug版,在模擬其中就可以運(yùn)行helloworld了。
2.2 使用VC6編譯Symbian 工程
我們直接打開(kāi)運(yùn)行abld makefile vc6后生成的dsw文件,VC自動(dòng)裝載轉(zhuǎn)化過(guò)的工程。按F7便可以直接編譯工程,編譯結(jié)果同樣放在\Symbian\6.1\Series60\Epoc32\Release\ wins\UDEB目錄中。然后我們打開(kāi)模擬器debug 版,就可以看到我們編譯好的工程了。
3 打包
我們以SDK 1.2提供的HelloWorld為例,制作可以在手機(jī)中安裝的.SIS文件:
3.1.檢查程序
首先,在命令行格式下,進(jìn)入HelloWorld工程mmp文件所在目錄,輸入bldmake bldfiles和abld build wins udeb,然后打開(kāi)模擬器,檢測(cè)程序有無(wú)錯(cuò)誤。
3.2.編譯工程
在程序無(wú)錯(cuò)誤后,在命令行輸入abld build armi urel 。執(zhí)行這個(gè)命令之后會(huì)在目錄d:\symbian\6.1\series60\epoc32\release\armi\urel生成HELLOWORLD.APP和HELLOWORLD.RSC兩個(gè)文件。
3.3.建立.pkg文件
在d:\Symbian\6.1\Series60\Series60Ex\helloworld\sis 用記事本建立或者修改工程的pkg文件,內(nèi)容如下:
; HelloWorld.pkg
;
;Language - standard language definitions
&EN
; standard SIS file header
#{"HelloWorld"},(0x10005B91),1,0,0
;Supports Series 60 v 1.2
(0x101F8202), 0, 0, 0, {"Series60ProductID"}
;
"d:\symbian\6.1\series60\epoc32\release\armi\urel\HelloWorld.APP"-"!:\system\apps\HelloWorld\HelloWorld.app"
"d:\symbian\6.1\series60\epoc32\release\armi\urel\HELLOWORLD.rSC"-"!:\system\apps\HelloWorld\HELLOWORLD.rSC"
其中,前面"d:\symbian\6.1\series60\epoc32\release\armi\urel\HELLOWORLD.rSC"是要打包安裝的文件,"!:\system\apps\HelloWorld\HELLOWORLD.rSC"是安裝的目標(biāo)位置。在其中要注意的是,我們?cè)谀繕?biāo)位置中用“!”代替了實(shí)際的盤(pán)符。這樣做得好處是在用戶安裝的時(shí)候,手機(jī)系統(tǒng)會(huì)提示用戶選擇要安裝的位置,這就給了用戶更大的靈活度。另外,在Symbian 系統(tǒng)中,安裝的應(yīng)用程序默認(rèn)位置是“!:\system\apps ”。
編輯好pkg文件后,保存至相應(yīng)目錄。
|
聯(lián)系客服