Symbian 成立于1998 年6 月,是由愛(ài)立信、Matsushita(松下)、摩托羅拉、諾基亞、Psion、西門(mén)子和索尼愛(ài)立信共同持股的獨立私營(yíng)公司。Symbian 在移動(dòng)計算設備和手機軟件技術(shù)開(kāi)發(fā)領(lǐng)域擁有近二十年的豐富經(jīng)驗,是一家由各主要無(wú)線(xiàn)通信技術(shù)公司持股的軟件許可證授權公司,為支持數據分組傳輸的手機提供高級、開(kāi)放式、標準化的操作系統— Symbian OS™。
您可以前往這里查看Symbian發(fā)展史大事記。
目前,全球主流手機操作系統主要有四種:
Symbian OS
Windows
Palm OS
Linux OS
Symbian OS一支獨秀,市場(chǎng)占有率達到了70%,而微軟的windows mobile和其他操作系統一共只有30%的份額。
截至目前,以發(fā)布的采用Symbian OS的手機有:
Nokia 7610 ,Siemens SX1 等等,您可以在這里找到完整的列表。那里還包括了正在開(kāi)發(fā)中的基于Symbian OS的手機列表。
此外,您還可以在這里找到Symbian的合作伙伴列表。
需要從整體上了解Symbian系統,最為權威和準確的描述,莫過(guò)于Symbian的官方文檔了。請參見(jiàn)介紹"。 得益于 “中文Symbian” 的成果,這是一篇中文文檔。
為Symbian OS開(kāi)發(fā)應用程序的第一步就是獲得一個(gè)SDK。Symbian OS SDKs支持基于Java和C++的開(kāi)發(fā)。
這些SDK提供:
1、便于構建和開(kāi)發(fā)Symbian OS應用程序的一組二進(jìn)制文件和工具。
2、所有API和工具的系統文檔。
3、基于PC的Symbian OS手機模擬器。
4、帶支持文檔的樣例應用程序。
由于Symbian OS本身不包括用戶(hù)界面等,所以,通常會(huì )由一些伙伴廠(chǎng)商為Symbian OS提供特定的UI Platform。因此SDKs都是基于一個(gè)特定的UI Platform來(lái)構建的。一個(gè)UI Platform提供一個(gè)獨特的UI,還有一系列面向各種任務(wù)的相關(guān)系統應用程序。這些常見(jiàn)的任務(wù)包括:收發(fā)消息、瀏覽、電話(huà)功能、多媒體功能和聯(lián)系方式/日歷管理等等。這些應用通常都會(huì )使用由Symbian OS提供的一些應用引擎。
從Symbian OS v6.0開(kāi)始,共有以下各種SDK:
UIQ
Nokia Series 90
Nokia Series 80 (previously “9200 communicator series”)
Nokia Series 60
Nokia Series 40
此前的SDK都是特地于某個(gè)設備,比如the Pison netPad。Symbian不再支持這些遺留SDK了。
對于一個(gè)軟件開(kāi)發(fā)者來(lái)說(shuō),在你為一個(gè)特定的手機開(kāi)發(fā)應用程序時(shí),首先需要了解的就是與它相關(guān)的UI Platform。然后,你需要了解這個(gè)手機所使用的Symbian OS的版本。有了這兩方面的信息,你就可以決定自己需要那個(gè)SDK了。
在大多數情況下,依靠這個(gè)SDK,你就可以開(kāi)發(fā)一個(gè)單一版本的應用程序,然后能夠在所有的基于相同的UI Platform和Symbian OS版本的手機上運行。
對于那些基于同一SDK的手機之間可能出現的各種差別,Symbian OS 系統定義文檔給出了更進(jìn)一步的細節信息。您可以自行查閱。
Symbian OS System Definition - Detailed View (updated to include v8.0)
我們可以看到SDK主要分為兩大類(lèi),即Nokia Series系列和UIQ。而Series系列中又以Series 60平臺最為流行。需要指出的是,以上只是從開(kāi)發(fā)平臺上對SDK進(jìn)行了劃分,劃分粒度是非常粗的。每種平臺都會(huì )對應著(zhù)一系列具體的開(kāi)發(fā)工具,您需要根據自身情況,做出選擇。
本文將以“SERIES 60 2ND EDITION SDK FOR SYMBIAN OS SUPPORTING FEATURE PACK 2 SUPPORTING MICROSOFT VISUAL C++ AND BORLAND C++BUILDERX”這個(gè)SDK為基礎,通過(guò)一個(gè)簡(jiǎn)單的C++示例程序,讓您對開(kāi)發(fā)過(guò)程有所了解。您可以在這里下載此SDK。由上面這個(gè)長(cháng)的有些恐怖的名字我們可以了解到,這個(gè)SDK支持在VC++或BCB的IDE下開(kāi)發(fā)程序。本文會(huì )先講解如何通過(guò)命令行一步步的構建我們的第一個(gè)程序,然后還會(huì )簡(jiǎn)單介紹結合VC++.NET 2003 IDE的開(kāi)發(fā)。此外,在安裝該SDK以前,您需要安裝Java Runtime Environment v 1.4.1_02 以及ActivePerl 5.6.1。前者,推薦大家直接安裝JDK,而不僅僅安裝JRE,這些都可以在http://www.sun.com得到。后者大家可以前往http://www.activestate.com 下載。
對于Java的開(kāi)發(fā),本文將不做介紹。您如果有興趣,可以自行參考本文后面的推薦資源。
Ø 安裝VC++.NET 2003。需要指出的是,我們需要VC++的編譯器來(lái)編譯代碼,但是其IDE卻是可選的。我們也可以從命令行來(lái)編譯我們的代碼。
Ø 安裝JDK或JRE
Ø 安裝ACTIVEPERL
Ø 安裝SERIES 60 SDK 2ND
Ø 設定環(huán)境變量。這恐怕是新手們最頭疼的問(wèn)題之一。網(wǎng)上對這個(gè)問(wèn)題的解答,也可謂五花八門(mén)。所以最好的方法就是參考別人的意見(jiàn),然后動(dòng)手實(shí)踐。以下內容均基于我的實(shí)踐。有不同意見(jiàn),歡迎討論。
首先我想說(shuō),這一步完全是多余的,根本不需要。您甚至不需要嚴格的按照上面列出順序來(lái)安裝各種工具。不過(guò)我還是希望您可以耐心的把這段話(huà)看完,呵呵。
然后我想說(shuō),請使用VC++.NET帶的“命令提示”工具來(lái)進(jìn)行以下的實(shí)驗。而不是使用Windows“附件”菜單中的那個(gè)“命令提示”工具。
原因如下:這里問(wèn)題的關(guān)鍵是讓各種工具可以在命令行上可見(jiàn),這樣我們就可以利用它們來(lái)編譯我們的代碼。而VC++.NET帶的“命令提示”工具與Windows“附件”菜單中的那個(gè)“命令提示”工具的區別之一就是其PATH變量的值不同。前者的PATH變量包括:
1、安裝VC++.NET過(guò)程中,添加的一些路徑,包括主要的編譯鏈接等工具。
2、系統環(huán)境下PATH變量的內容(通??梢赃@樣設置:右擊我的電腦—>屬性—>高級—>環(huán)境變量—>系統變量。安裝JDK,ACTIVEPERL,SERIES 60 SDK后,各種相應工具的路徑也會(huì )添加到這里)。
而后者的PATH變量只包括2中的內容。
所以,如果不使用VC++.NET帶的“命令提示”工具,您就會(huì )因為找不到相應編譯工具,而無(wú)法繼續下去。如果自己勤快一些,可以手動(dòng)把1中的內容加到系統PATH中去,呵呵。這樣就可以用Windows“附件”菜單中的那個(gè)“命令提示”工具了。
下面介紹一下我機器上的實(shí)驗環(huán)境:
Ø 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 技術(shù)構造,包括用戶(hù)界面、各種應用程序以及各種開(kāi)發(fā)工具。Series 60的用戶(hù)界面(UI)針對方便單手使用的目的進(jìn)行了精心的設計。
從用戶(hù)的角度來(lái)看,最為重要的特性也許正是它的UI。它的UI包括一個(gè)大屏彩顯(176 x 208 pixel, 256 color display)以及各種輸入按鍵(兩個(gè)軟鍵,五路導航鍵five-way navigation,收/發(fā)鍵等等,見(jiàn)圖1)。Series 60平臺包括一些常用的應用程序,比如個(gè)人信息管理(PIM)程序(比如,電話(huà)簿、日歷、相冊等),電子郵件程序,瀏覽程序,消息收發(fā)程序等等。Series 60平臺還有一個(gè)安裝引擎,通過(guò)它用戶(hù)就可以安裝或刪除應用程序,既可以通過(guò)PC連接也可以通過(guò)“空中(OTA)”服務(wù)來(lái)完成。
圖1 Series 60 Platform UI

從K&R開(kāi)始,“Hello World”幾乎成了入門(mén)必修課。呵呵,我們也順其自然吧。
我們先將整個(gè)流程過(guò)一遍,然后再解釋每一步都發(fā)生了什么。以下涉及到的各種路徑都是以筆者的實(shí)驗環(huán)境為依據的,您需要自行替換為自己機器上的路徑。
1、打開(kāi)VS.NET 2003自帶的命令行,進(jìn)入以下目錄:
D:\Symbian\8.0a\S60_2nd_FP2\Examples\basics\helloworld
這里有我們即將涉及到的三個(gè)文件:
HelloWorld.cpp C++源文件
HelloWorld.mmp 項目定義文件
Bld.inf 組件定義文件
2、構建我們的例子,請輸入:
bldmake bldfiles
這一步會(huì )生成一個(gè)文件ABLD.BAT。
3、編譯和鏈接,請輸入:
abld build wins udeb
這一步會(huì )生成供Series 60 調試模擬器使用的文件。
4、運行,請在命令行進(jìn)入:
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb
這個(gè)目錄含有剛生成的helloworld.exe文件。然后輸入:
helloworld

2.4.2 與VS IDE配合
1、先重復2.4.1節的步驟1和2
2、請輸入以下命令:
abld makefile vc7
這會(huì )在目錄:
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
這也會(huì )生成VS.NET 2003所需的解決方案文件、項目文件等等,只不過(guò)是在當前的目錄下。
3、通過(guò)上述過(guò)程生成的文件,即可在VS.NET 2003的IDE中打開(kāi)helloworld項目。然后就可以按照構建、運行、調試其它項目的方法來(lái)處理該項目了。比如:輸入HELLOWORLD.sln,然后用Ctrl+Shift+B生成,再用Ctrl+F5直接運行(不調試),效果與圖2一樣。您會(huì )注意到,模擬器出現的很快。那是因為該項目是個(gè)簡(jiǎn)單的控制臺程序,無(wú)須載入各種GUI庫即可運行。
上面只是按部就班的講述了如何構建一個(gè)簡(jiǎn)單的程序,之所以沒(méi)有涉及細節,是為了使您可以快速的體驗一下開(kāi)發(fā)過(guò)程(不包括調試,生成最終的發(fā)布版,載入實(shí)際目標設備運行等步驟)。下面就具體的介紹一下Symbian OS構建過(guò)程。
目前,構建Symbian 程序的兩條主要的工具鏈為:
基于Metowerks CodeWarrior 編譯器的工具鏈。
基于Microsoft Visual C++編譯器的工具鏈。
您可以根據自己的意愿或需要來(lái)選用合適的工具,并配合相應的IDE來(lái)方便開(kāi)發(fā)。但是一般來(lái)說(shuō)不可以混合使用它們。
由于Symbian程序的構建工具以及最終目標的多樣性,Symbian項目通常會(huì )先以一種通用的格式來(lái)描述。然后,可以使用相應的構建工具鏈來(lái)處理這個(gè)中立的項目文件,生成特定的項目文件。
剛開(kāi)始,只有HelloWorld.cpp,HelloWorld.mmp,Bld.inf 這三個(gè)文件。其中HelloWorld.mmp和Bld.inf就是兩個(gè)關(guān)鍵的項目文件。
HelloWorld.mmp:項目定義文件,描述了將要構建的項目信息,還定義了一些資源文件和應用程序信息文件。它是一個(gè)環(huán)境中立的文件,可以使用各種工具來(lái)處理并生成各種目標環(huán)境的make文件。您可以使用文本編輯器查看該文件。里面的信息還是很簡(jiǎn)明的,包括構建目標,構建類(lèi)型,源路徑,庫文件,頭文件等等信息。
Bld.inf:組件描述文件,它列出了一個(gè)組件當中包括的所有項目,還包括一些額外的構建指令。您也可以使用文本編輯器查看該文件。對于本實(shí)例來(lái)說(shuō),僅包括一個(gè)項目HelloWorld.mmp。
當我們運行
bldmake bldfiles
這個(gè)命令時(shí),會(huì )處理當前目錄下的bld.inf文件,具體來(lái)說(shuō)會(huì )執行以下處理過(guò)程:
1、生成目錄
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD
2、在這個(gè)目錄下,生成一系列的Make文件,針對各種目標環(huán)境。比如VC7.MAKE,CW_IDE.MAKE等等。
3、在當前目錄下生成abld.bat文件,這個(gè)文件會(huì )在隨后用到。您可以查看該文件的內容。但是建議不要手工的更改它的內容。
Bldmake命令也支持其他的命令行選項,您可以直接輸入bldmake來(lái)查看簡(jiǎn)要的介紹,還可以查看SDK文檔了解詳細信息。
由bldmake處理bld.inf文件得到的abld.bat文件,使得abld命令可用。Abld.bat控制著(zhù)構建一個(gè)項目的方方面面。Abld命令的語(yǔ)法非常地靈活,它擁有許多命令行選項,它們的組合涵蓋了各種構建需求。最常用的組合,莫過(guò)于abld build 和 abld clean 相關(guān)了。
當我們運行
abld build wins udeb
這個(gè)命令時(shí),將為wins平臺(即通常的VC++環(huán)境)生成一個(gè)debug版本的程序。
具體來(lái)說(shuō),在
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD\HELLOWORLD\WINS\UDEB
和
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb
下面各生成了一些文件,比如Helloworld.exe文件。
如果只是調用
abld build
那么會(huì )為所有可能的平臺構建程序。
而運行
abld clean
會(huì )刪除屬于當前組件的,編譯過(guò)程中生成的所有中間文件和可執行文件,以及由鏈接器導入的庫文件。
您也可以指定只刪除某個(gè)平臺的文件。
具體的abld語(yǔ)法,請查看SDK文檔。
簡(jiǎn)而言之,就是處理.mmp文件,生成各種目標平臺的make文件。既可以針對命令行來(lái)生成,也可以針對IDE來(lái)生成。用于命令行的makefile無(wú)法用于IDE。
所以我們的命令:
makmake helloworld vc7
就為VS.NET 2003 IDE生成了相關(guān)的makefile,然后我們就可以通過(guò)這些文件借助VS的強大功能了。
更多的makmake語(yǔ)法,請查看SDK文檔。
Symbian OS官方網(wǎng)站 不用多說(shuō),這是Symbian相關(guān)信息的最權威來(lái)源。
諾基亞論壇 這是最為活躍的移動(dòng)開(kāi)發(fā)技術(shù)社區。尤其是關(guān)于Nokia Series系列的資源非常的豐富。 而且,現在還有 諾基亞論壇簡(jiǎn)體中文版 這極大的方便了國內的開(kāi)發(fā)者學(xué)習相關(guān)技術(shù)。
SDKs之外的開(kāi)發(fā)工具 除了各種Symbian SDK之外,還有許多有用的工具和SDK插件可供開(kāi)發(fā)者使用。
基于Symbian OS的優(yōu)秀開(kāi)源項目 提高自己水平的一個(gè)有效途徑就是學(xué)習或加入一個(gè)優(yōu)秀的開(kāi)源項目。
專(zhuān)門(mén)針對Series 60系列的網(wǎng)站 基于Symbian OS的Series 60平臺是目前業(yè)界領(lǐng)先的智能電話(huà)平臺。
UIQ的官方網(wǎng)站 UIQ Technology AB成立于1999年,是完全歸Symbian公司所有的一家子公司。他們面向開(kāi)發(fā)移動(dòng)設備的UI Platform——UIQ,并授權給那些全球領(lǐng)先的移動(dòng)設備制造商。
正如本文的摘要所述,這是一篇入門(mén)的文章。為此,文章舍棄了許多內容。筆者認為那些內容更適合出現在其他主題的文章中。呵呵,希望這篇文章能給您帶來(lái)一些收獲,幫助您順利的搭上Symbian開(kāi)發(fā)的快車(chē)。
歡迎指正,歡迎討論!
聯(lián)系客服