| |
本文介紹建立、部署和運行擁有圖形用戶(hù)界面(GUI)的Series 60示例應用程序的過(guò)程。
我們假定你已經(jīng)安裝了Series 60軟件開(kāi)發(fā)工具包(SDK),并安裝了自己選擇的集成開(kāi)發(fā)環(huán)境(IDE)。這兩項安裝都非常容易。
本文的主題包括:
開(kāi)發(fā)過(guò)程概述——在模擬器或目標設備上定義、建立和運行Series 60項目過(guò)程的詳細說(shuō)明,還有很多IDE的指南,以及開(kāi)發(fā)者可以使用的編譯選項。
Series 60模擬器——Series 60模擬器的特性和布局,同時(shí)包含了調試版本和發(fā)放版本。它包含了模擬器和真實(shí)的Series 60設備之間的相似性和不同點(diǎn)。
在模擬器上建立程序——如何使用不同廠(chǎng)商的IDE和PC命令提示符為模擬器建立HelloWorld項目。
運行模擬器-——啟動(dòng)模擬器的多種方法,以及如何定位和運行示例HelloWorld應用程序。
在目標設備上建立程序——如何為Series 60設備建立HelloWorld示例應用程序,把它編譯為ARM二進(jìn)制可執行文件。
在目標設備上部署程序——如何把應用程序的多個(gè)組件打包,選擇某種方法把它傳輸到Series 60設備上,接下來(lái)如何定位并執行它。
開(kāi)發(fā)過(guò)程的一步一步的概述將為你演示基本的步驟。這是使用Series 60 C++程序建立工具和多種IDE的快速指導。你會(huì )看到如何為Series 60模擬器建立和運行“Hello World”應用程序,以及如何在目標設備上建立、部署和運行該應用程序。本文提供了建立和運行HelloWorld示例的所有信息。
Series 60 C++軟件開(kāi)發(fā)工具包(SDK)
Symbian OS廣泛地應用于智能電話(huà)平臺,例如Series 60、Series 80和Series 90就是三種來(lái)自Nokia和UIQ(UIQ技術(shù)公司的UI平臺)的UI平臺。
Series 60 SDK建立在Symbian公司發(fā)布的Symbian OS C++ SDK的某種版本之上。SDK包含了大量的工具、API、類(lèi)庫和文檔,它允許你開(kāi)發(fā)新的應用程序。
作為開(kāi)發(fā)人員,你可能需要使用Series 60 SDK的多個(gè)版本的(甚至來(lái)自于不同的Symbian OS UI平臺的SDK)。最重要的問(wèn)題是為你選擇的Series 60產(chǎn)品選擇正確的SDK版本。
Nokia或Series 60獲得許可發(fā)布了用于Series 60平臺特定版本開(kāi)發(fā)的SDK。也就是說(shuō),每個(gè)Series 60產(chǎn)品都是基于特定平臺版本的,SDK版本被定制成在某個(gè)平臺版本上開(kāi)發(fā)。特定的SDK版本也可能適合前面版本的平臺。這種“向后兼容性”依賴(lài)于用作版本基礎的Symbian OS版本、應用程序開(kāi)發(fā)者使用的API、以及不同的平臺版本之間的API所發(fā)生的改變。特殊的獲得許可者也可能引入的產(chǎn)品專(zhuān)用的API,以允許開(kāi)發(fā)者訪(fǎng)問(wèn)它們的Series 60與其它的產(chǎn)品不同的特性。例如,Siemens SX1智能電話(huà)包含了FM收音機,因此相應的SDK可以包含“附加的”API來(lái)維護收音機。為了最大化不同產(chǎn)品之間的兼容性,你可能希望避免使用這類(lèi)產(chǎn)品專(zhuān)用的API。你甚至會(huì )選擇限制對通用API的使用,只使用某種平臺版本的選定范圍的通用的、不會(huì )發(fā)生變化的API。
使用多個(gè)SDK
使用一個(gè)Symbian OS SDK非常容易,而且安裝過(guò)程會(huì )使它立即可用。但是,開(kāi)發(fā)者通常需要使用Series 60的多個(gè)不同版本的SDK,甚至于不同用戶(hù)界面平臺的SDK。你可以把多個(gè)SDK安裝在開(kāi)發(fā)的PC上,對于在哪兒安裝它們、如何選擇使用作出一些限制。
開(kāi)發(fā)過(guò)程概述
SDK提供了基于PC平臺的模擬器,因此大多數開(kāi)發(fā)和測試操作都可以在沒(méi)有目標硬件設備的情況下完成。我們可以為模擬器和目標硬件設備建立不同的調試(debug)或發(fā)布(release)版本的Series 60項目可執行文件(盡管目前目標設備上的調試版本還有一些限制)。此外,為目標設備進(jìn)行編譯的時(shí)候,還可以建立不同二進(jìn)制格式(例如ARMI、ARM4和Thumb)的可執行代碼。編譯和鏈接的過(guò)程可以使用命令行工具或在多種IDE中進(jìn)行。本文談?wù)摰降腎DE包括微軟Visual C++ 6、Metrowerks CodeWarrior、Borland C++Builder 6移動(dòng)版和Borland C++BuilderX移動(dòng)版。
Symbian設計了一種用平臺無(wú)關(guān)的(platform-neutral)方式描述開(kāi)發(fā)項目的方法。在Symbian中會(huì )建立兩個(gè)全局文件(projectname.mmp和bld.inf),其中projectname是將要開(kāi)發(fā)的組件或應用程序的名稱(chēng)(示例項目中是HelloWorld)。這兩個(gè)文件可以作為任何建立應用程序選項、IDE和平臺的出發(fā)點(diǎn)。
bld.inf指定了將要建立的所有項目組件的名稱(chēng),并且每個(gè)組件都在自己的.mmp文件中說(shuō)明。這兩個(gè)文件都是純文本的,通常你只擁有一個(gè).mmp文件,它定義了將要建立的應用程序。如果項目包含多個(gè)組件,例如包含應用程序本身和特定的函數庫,那么每個(gè)組件都將擁有自己的.mmp文件。每個(gè)程序庫和應用程序都有一個(gè).mmp文件,并且每個(gè)文件名都列舉在項目的bld.inf文件中。
在HelloWorld例子中有兩個(gè)項目說(shuō)明文件:bld.inf和helloworld.mmp。使用這兩個(gè)文件可以建立我們所需要的任何特定平臺的項目和命令文件。
典型情況下,你使用一個(gè)叫做bldmake的Symbian工具,把項目的兩個(gè)說(shuō)明文件作為輸入來(lái)生成一個(gè)叫做abld.bat的命令文件;接著(zhù)你可以在命令行中使用abld.bat,來(lái)執行大量的項目相關(guān)的操作。例如,abld.bat可以用于生成特定平臺和特定IDE的項目組成文件(makefiles)。如果項目源代碼存在,或者已經(jīng)完成了,我們可以使用abld為一個(gè)或多個(gè)平臺編譯該項目。
由于大多數開(kāi)發(fā)的項目都在某個(gè)IDE中建立和運行,你一般只需要建立適合的IDE項目文件。
在使用微軟Visual C++的時(shí)候,你將在命令行中使用abld建立HelloWorld.dsp和HelloWorld.dsw項目文件。.dsw是在IDE中打開(kāi)的工作空間文件,它可以指向一個(gè)或多個(gè).dsp文件。
對于Metrowerks CodeWarrior,你既可以使用普通的方式在IDE中建立項目文件,也可以把.mmp文件直接導入IDE中。導入過(guò)程將建立CodeWarrior的特定項目(HelloWorld.mcp)所需要的文件。
類(lèi)似地,Borland C++ Builder移動(dòng)版IDE能夠執行與Metrowerks IDE類(lèi)似的導入事務(wù),但是它是導入bld.inf文件而不是.mmp文件。例如Borland C++BuilderX將建立叫做HelloWorld.cbx的項目文件。
打開(kāi)特定IDE的項目文件將允許你開(kāi)發(fā)、建立、運行和調試該應用程序,并擁有IDE的全面支持。
對于寧可在命令行層次工作的開(kāi)發(fā)者來(lái)說(shuō),abld也可以用于在命令提示符下進(jìn)行編譯和鏈接。
建立特定IDE項目文件的所有方法要點(diǎn)將在本文后面的部分談到。此外,圖1-1顯示了使用兩個(gè)通用的Symbian OS項目文件生成我們所需要的特定平臺的項目文件(通過(guò)IDE導入選項或使用Symbian工具)。

| |
1 安裝SDK及VC
Nokia根據手機的屏幕大小和價(jià)格高低把手機分成了多個(gè)系列,現在使用的系列有:Series 40、Series 60、Series 80 和Series 90。60系列采用Symbian os 6.1,然后又根據手機屏幕的特點(diǎn)對UI做了一些修改,這個(gè)被修改了的Symbian就被稱(chēng)為Nokia的60系列平臺。使用60系列的手機型號包括: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論壇注冊,下載最新的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ā)單獨建一個(gè)目錄,例如d:\Symbian而不是使用C:\program files等這樣的目錄。
第四步:安裝Active Perl和J2RE,安裝到默認目錄即可。
第五步:檢查環(huán)境變量設定。打開(kāi)系統環(huán)境變量tab,然后看看有沒(méi)有EPOCROOT,如果有的話(huà),把它手動(dòng)改成“\” 。改完之后應該是這個(gè)樣子的:
EPOCROOT = \
然后,在系統PATH中加入 \epoc32\tools目錄以及\epoc32\gcc\bin目錄就可以了。
實(shí)際上,Symbian SDK根本不用安裝,直接把epoc32目錄拷貝到一個(gè)機器上,然后照上述方法設定目錄和環(huán)境變量就可以了。
1.2 配置VC
如果我們使用的是VC 6.0,我們要保證系統至少打了SP3補丁,否則系統會(huì )有警告提示。如果我們使用的是VS.NET2003, 我們就只能安裝Series 60 SDK for Symbian OS v2.1,因為Series 60 SDK for Symbian OS Nokia Edition SDK v1.2在VS.NET2003無(wú)法正確建立工程。
如果要直接在vc6里創(chuà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è)選項.
填入Project Name 以后,確認。
一路“Next”,一個(gè)最簡(jiǎn)單的Symbian應用程序就建立好了。
如果要將已經(jīng)建立好的工程導入到VC6.0中,比如我們將SDK中的例子HelloWorld轉換成一個(gè)VC6的項目,我們首先進(jìn)入\Symbian\6.1\Series60\Series60Ex\HelloWorld目錄。在這里我們可以看到,在Symbian中,一個(gè)Project通常是按inc, src, group等目錄組織,group目錄里通常放的是項目文件,所以編譯時(shí)要先到這里。用命令提示符模式進(jìn)入剛才說(shuō)的那個(gè)目錄下,然后執行:
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文件。
然后,我們在同一個(gè)目錄運行剛才生成的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)編譯轉化過(guò)的Symbian 工程。編譯的結果存放在\Symbian\6.1\Series60\Epoc32\ Release\wins\UDEB\Z\SYSTEM\apps目錄中。
2.1使用SDK提供的工具編譯Symbian 工程
我們在上一節的那個(gè)位置繼續輸入:
abld build wins udeb
這個(gè)命令會(huì )編譯我們的程序,最后在\Symbian\6.1\Series60\Epoc32\Release\wins\UDEB目錄下生成我們的helloworld,然后我們可以從開(kāi)始菜單里運行模擬器的debug版,在模擬其中就可以運行helloworld了。
2.2 使用VC6編譯Symbian 工程
我們直接打開(kāi)運行abld makefile vc6后生成的dsw文件,VC自動(dòng)裝載轉化過(guò)的工程。按F7便可以直接編譯工程,編譯結果同樣放在\Symbian\6.1\Series60\Epoc32\Release\ wins\UDEB目錄中。然后我們打開(kāi)模擬器debug 版,就可以看到我們編譯好的工程了。
3 打包
我們以SDK 1.2提供的HelloWorld為例,制作可以在手機中安裝的.SIS文件:
3.1.檢查程序
首先,在命令行格式下,進(jìn)入HelloWorld工程mmp文件所在目錄,輸入bldmake bldfiles和abld build wins udeb,然后打開(kāi)模擬器,檢測程序有無(wú)錯誤。
3.2.編譯工程
在程序無(wú)錯誤后,在命令行輸入abld build armi urel 。執行這個(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文件,內容如下:
; 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"是安裝的目標位置。在其中要注意的是,我們在目標位置中用“!”代替了實(shí)際的盤(pán)符。這樣做得好處是在用戶(hù)安裝的時(shí)候,手機系統會(huì )提示用戶(hù)選擇要安裝的位置,這就給了用戶(hù)更大的靈活度。另外,在Symbian 系統中,安裝的應用程序默認位置是“!:\system\apps ”。
編輯好pkg文件后,保存至相應目錄。
| |
聯(lián)系客服