天天看點

Symbian開發入門 1.      Symbian簡介 2.      Symbian開發 3 開發資源不完全索引4 小結

Symbian 成立于1998 年6 月,是由愛立信、Matsushita(松下)、摩托羅拉、諾基亞、Psion、西門子和索尼愛立信共同持股的獨立私營公司。Symbian 在移動計算裝置和手機軟體技術開發領域擁有近二十年的豐富經驗,是一家由各主要無線通信技術公司持股的軟體許可證授權公司,為支援資料分組傳輸的手機提供進階、開放式、标準化的作業系統— Symbian OS™。

目前,全球主流手機作業系統主要有四種:

Symbian OS    

Windows Mobile

Palm OS            

Linux OS

Symbian OS一支獨秀,市場占有率達到了70%,而微軟的windows mobile和其他作業系統一共隻有30%的份額。

截至目前,以釋出的采用Symbian OS的手機有: 

為Symbian OS開發應用程式的第一步就是獲得一個SDK。Symbian OS SDKs支援基于Java和C++的開發。

這些SDK提供:

1、便于建構和開發Symbian OS應用程式的一組二進制檔案和工具。

2、所有API和工具的系統文檔。

3、基于PC的Symbian OS手機模拟器。

4、帶支援文檔的樣例應用程式。

由于Symbian OS本身不包括使用者界面等,是以,通常會由一些夥伴廠商為Symbian OS提供特定的UI Platform。是以SDKs都是基于一個特定的UI Platform來建構的。一個UI Platform提供一個獨特的UI,還有一系列面向各種任務的相關系統應用程式。這些常見的任務包括:收發消息、浏覽、電話功能、多媒體功能和聯系方式/月曆管理等等。這些應用通常都會使用由Symbian OS提供的一些應用引擎。

從Symbian OS v6.0開始,共有以下各種SDK:

UIQ 

Nokia Series 90

Nokia Series 80 (previously “9200 communicator series”)

Nokia Series 60

Nokia Series 40

此前的SDK都是特地于某個裝置,比如the Pison netPad。Symbian不再支援這些遺留SDK了。

對于一個軟體開發者來說,在你為一個特定的手機開發應用程式時,首先需要了解的就是與它相關的UI Platform。然後,你需要了解這個手機所使用的Symbian OS的版本。有了這兩方面的資訊,你就可以決定自己需要那個SDK了。

在大多數情況下,依靠這個SDK,你就可以開發一個單一版本的應用程式,然後能夠在所有的基于相同的UI Platform和Symbian OS版本的手機上運作。

對于那些基于同一SDK的手機之間可能出現的各種差别,Symbian OS 系統定義文檔給出了更進一步的細節資訊。您可以自行查閱。

<a href="http://www.symbian.com/developer/techlib/papers/SymbOS_def/symbian_os_sysdef.pdf">Symbian OS System Definition</a>

我們可以看到SDK主要分為兩大類,即Nokia Series系列和UIQ。而Series系列中又以Series 60平台最為流行。需要指出的是,以上隻是從開發平台上對SDK進行了劃分,劃分粒度是非常粗的。每種平台都會對應着一系列具體的開發工具,您需要根據自身情況,做出選擇。

對于Java的開發,本文将不做介紹。您如果有興趣,可以自行參考本文後面的推薦資源。

Ø         安裝VC++.NET 2003。需要指出的是,我們需要VC++的編譯器來編譯代碼,但是其IDE卻是可選的。我們也可以從指令行來編譯我們的代碼。

Ø         安裝JDK或JRE

Ø         安裝ACTIVEPERL

Ø         安裝SERIES 60 SDK 2ND

Ø         設定環境變量。這恐怕是新手們最頭疼的問題之一。網上對這個問題的解答,也可謂五花八門。是以最好的方法就是參考别人的意見,然後動手實踐。以下内容均基于我的實踐。有不同意見,歡迎讨論。

首先我想說,這一步完全是多餘的,根本不需要。您甚至不需要嚴格的按照上面列出順序來安裝各種工具。不過我還是希望您可以耐心的把這段話看完,呵呵。

然後我想說,請使用VC++.NET帶的“指令提示”工具來進行以下的實驗。而不是使用Windows“附件”菜單中的那個“指令提示”工具。

原因如下:這裡問題的關鍵是讓各種工具可以在指令行上可見,這樣我們就可以利用它們來編譯我們的代碼。而VC++.NET帶的“指令提示”工具與Windows“附件”菜單中的那個“指令提示”工具的差別之一就是其PATH變量的值不同。前者的PATH變量包括:

1、安裝VC++.NET過程中,添加的一些路徑,包括主要的編譯連結等工具。

2、系統環境下PATH變量的内容(通常可以這樣設定:右擊我的電腦—&gt;屬性—&gt;進階—&gt;環境變量—&gt;系統變量。安裝JDK,ACTIVEPERL,SERIES 60 SDK後,各種相應工具的路徑也會添加到這裡)。

而後者的PATH變量隻包括2中的内容。

是以,如果不使用VC++.NET帶的“指令提示”工具,您就會因為找不到相應編譯工具,而無法繼續下去。如果自己勤快一些,可以手動把1中的内容加到系統PATH中去,呵呵。這樣就可以用Windows“附件”菜單中的那個“指令提示”工具了。

下面介紹一下我機器上的實驗環境:

Ø         VS.NET 2003(具體路徑一大堆,故省略)

Ø         Perl 5.8.6(D:\Perl\bin)

Ø         JDK 1.5 (D:\Program Files\Java\jdk1.5.0_01\bin)

Ø         SERIES 60 SDK 2ND (D:\Symbian)

Series 60平台基于Symbian OS 技術構造,包括使用者界面、各種應用程式以及各種開發工具。Series 60的使用者界面(UI)針對友善單手使用的目的進行了精心的設計。

從使用者的角度來看,最為重要的特性也許正是它的UI。它的UI包括一個大屏彩顯(176 x 208 pixel, 256 color display)以及各種輸入按鍵(兩個軟鍵,五路導航鍵five-way navigation,收/發鍵等等,見圖1)。Series 60平台包括一些常用的應用程式,比如個人資訊管理(PIM)程式(比如,電話簿、月曆、相冊等),電子郵件程式,浏覽程式,消息收發程式等等。Series 60平台還有一個安裝引擎,通過它使用者就可以安裝或删除應用程式,既可以通過PC連接配接也可以通過“空中(OTA)”服務來完成。

圖1  Series 60 Platform UI

Symbian開發入門 1.      Symbian簡介 2.      Symbian開發 3 開發資源不完全索引4 小結

從K&amp;R開始,“Hello World”幾乎成了入門必修課。呵呵,我們也順其自然吧。

我們先将整個流程過一遍,然後再解釋每一步都發生了什麼。以下涉及到的各種路徑都是以筆者的實驗環境為依據的,您需要自行替換為自己機器上的路徑。

1、打開VS.NET 2003自帶的指令行,進入以下目錄:

D:\Symbian\8.0a\S60_2nd_FP2\Examples\basics\helloworld

這裡有我們即将涉及到的三個檔案:

HelloWorld.cpp         C++源檔案

HelloWorld.mmp        項目定義檔案

Bld.inf                        元件定義檔案

2、建構我們的例子,請輸入:

bldmake bldfiles

這一步會生成一個檔案ABLD.BAT。

3、編譯和連結,請輸入:

abld build wins udeb

這一步會生成供Series 60 調試模拟器使用的檔案。

4、運作,請在指令行進入:

D:\Symbian\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb

這個目錄含有剛生成的helloworld.exe檔案。然後輸入:

helloworld

這會調用Series 60的模拟器,并在其中運作helloworld.exe程式。效果如圖2所示

Symbian開發入門 1.      Symbian簡介 2.      Symbian開發 3 開發資源不完全索引4 小結

2.4.2 與VS IDE配合

1、先重複2.4.1節的步驟1和2

2、請輸入以下指令:

abld makefile vc7

這會在目錄:

D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS

下面生成VS.NET 2003所需的解決方案檔案、項目檔案等等。

還有一種方法是,輸入以下指令:

makmake helloworld vc7

這也會生成VS.NET 2003所需的解決方案檔案、項目檔案等等,隻不過是在目前的目錄下。

3、通過上述過程生成的檔案,即可在VS.NET 2003的IDE中打開helloworld項目。然後就可以按照建構、運作、調試其它項目的方法來處理該項目了。比如:輸入HELLOWORLD.sln,然後用Ctrl+Shift+B生成,再用Ctrl+F5直接運作(不調試),效果與圖2一樣。您會注意到,模拟器出現的很快。那是因為該項目是個簡單的控制台程式,無須載入各種GUI庫即可運作。

上面隻是按部就班的講述了如何建構一個簡單的程式,之是以沒有涉及細節,是為了使您可以快速的體驗一下開發過程(不包括調試,生成最終的釋出版,載入實際目标裝置運作等步驟)。下面就具體的介紹一下Symbian OS建構過程。

目前,建構Symbian 程式的兩條主要的工具鍊為:

基于Metowerks CodeWarrior 編譯器的工具鍊。

基于Microsoft Visual C++編譯器的工具鍊。

您可以根據自己的意願或需要來選用合适的工具,并配合相應的IDE來友善開發。但是一般來說不可以混合使用它們。

由于Symbian程式的建構工具以及最終目标的多樣性,Symbian項目通常會先以一種通用的格式來描述。然後,可以使用相應的建構工具鍊來處理這個中立的項目檔案,生成特定的項目檔案。

剛開始,隻有HelloWorld.cpp,HelloWorld.mmp,Bld.inf 這三個檔案。其中HelloWorld.mmp和Bld.inf就是兩個關鍵的項目檔案。

HelloWorld.mmp:項目定義檔案,描述了将要建構的項目資訊,還定義了一些資源檔案和應用程式資訊檔案。它是一個環境中立的檔案,可以使用各種工具來處理并生成各種目标環境的make檔案。您可以使用文本編輯器檢視該檔案。裡面的資訊還是很簡明的,包括建構目标,建構類型,源路徑,庫檔案,頭檔案等等資訊。

Bld.inf:元件描述檔案,它列出了一個元件當中包括的所有項目,還包括一些額外的建構指令。您也可以使用文本編輯器檢視該檔案。對于本執行個體來說,僅包括一個項目HelloWorld.mmp。

當我們運作

這個指令時,會處理目前目錄下的bld.inf檔案,具體來說會執行以下處理過程:

1、生成目錄

D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD

2、在這個目錄下,生成一系列的Make檔案,針對各種目标環境。比如VC7.MAKE,CW_IDE.MAKE等等。

3、在目前目錄下生成abld.bat檔案,這個檔案會在随後用到。您可以檢視該檔案的内容。但是建議不要手工的更改它的内容。

Bldmake指令也支援其他的指令行選項,您可以直接輸入bldmake來檢視簡要的介紹,還可以檢視SDK文檔了解詳細資訊。

由bldmake處理bld.inf檔案得到的abld.bat檔案,使得abld指令可用。Abld.bat控制着建構一個項目的方方面面。Abld指令的文法非常地靈活,它擁有許多指令行選項,它們的組合涵蓋了各種建構需求。最常用的組合,莫過于abld build 和 abld clean 相關了。

這個指令時,将為wins平台(即通常的VC++環境)生成一個debug版本的程式。

具體來說,在

D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS\UDEB

下面各生成了一些檔案,比如Helloworld.exe檔案。

如果隻是調用

abld build

那麼會為所有可能的平台建構程式。

而運作

abld clean

會删除屬于目前元件的,編譯過程中生成的所有中間檔案和可執行檔案,以及由連結器導入的庫檔案。

您也可以指定隻删除某個平台的檔案。

具體的abld文法,請檢視SDK文檔。

簡而言之,就是處理.mmp檔案,生成各種目标平台的make檔案。既可以針對指令行來生成,也可以針對IDE來生成。用于指令行的makefile無法用于IDE。

是以我們的指令:

就為VS.NET 2003 IDE生成了相關的makefile,然後我們就可以通過這些檔案借助VS的強大功能了。

更多的makmake文法,請檢視SDK文檔。

正如本文的摘要所述,這是一篇入門的文章。為此,文章舍棄了許多内容。筆者認為那些内容更适合出現在其他主題的文章中。呵呵,希望這篇文章能給您帶來一些收獲,幫助您順利的搭上Symbian開發的快車。

歡迎指正,歡迎讨論!

本文轉自peterzb部落格園部落格,原文連結:http://www.cnblogs.com/peterzb/archive/2009/06/11/1501606.html,如需轉載請自行聯系原作者。