Symbian 成立于1998 年6 月,是由愛立信、Matsushita(松下)、摩托羅拉、諾基亞、Psion、西門子和索尼愛立信共同持股的獨立私營公司。Symbian 在移動計算設(shè)備和手機軟件技術(shù)開發(fā)領(lǐng)域擁有近二十年的豐富經(jīng)驗,是一家由各主要無線通信技術(shù)公司持股的軟件許可證授權(quán)公司,為支持數(shù)據(jù)分組傳輸?shù)氖謾C提供高級、開放式、標準化的操作系統(tǒng)— Symbian OS™。
您可以前往這里查看Symbian發(fā)展史大事記。
目前,全球主流手機操作系統(tǒng)主要有四種:
Symbian OS
Windows
Palm OS
Linux OS
Symbian OS一支獨秀,市場占有率達到了70%,而微軟的windows mobile和其他操作系統(tǒng)一共只有30%的份額。
截至目前,以發(fā)布的采用Symbian OS的手機有:
Nokia 7610 ,Siemens SX1 等等,您可以在這里找到完整的列表。那里還包括了正在開發(fā)中的基于Symbian OS的手機列表。
此外,您還可以在這里找到Symbian的合作伙伴列表。
需要從整體上了解Symbian系統(tǒng),最為權(quán)威和準確的描述,莫過于Symbian的官方文檔了。請參見介紹"。 得益于 “中文Symbian” 的成果,這是一篇中文文檔。
為Symbian OS開發(fā)應(yīng)用程序的第一步就是獲得一個SDK。Symbian OS SDKs支持基于Java和C++的開發(fā)。
這些SDK提供:
1、便于構(gòu)建和開發(fā)Symbian OS應(yīng)用程序的一組二進制文件和工具。
2、所有API和工具的系統(tǒng)文檔。
3、基于PC的Symbian OS手機模擬器。
4、帶支持文檔的樣例應(yīng)用程序。
由于Symbian OS本身不包括用戶界面等,所以,通常會由一些伙伴廠商為Symbian OS提供特定的UI Platform。因此SDKs都是基于一個特定的UI Platform來構(gòu)建的。一個UI Platform提供一個獨特的UI,還有一系列面向各種任務(wù)的相關(guān)系統(tǒng)應(yīng)用程序。這些常見的任務(wù)包括:收發(fā)消息、瀏覽、電話功能、多媒體功能和聯(lián)系方式/日歷管理等等。這些應(yīng)用通常都會使用由Symbian OS提供的一些應(yīng)用引擎。
從Symbian OS v6.0開始,共有以下各種SDK:
UIQ
Nokia Series 90
Nokia Series 80 (previously “9200 communicator series”)
Nokia Series 60
Nokia Series 40
此前的SDK都是特地于某個設(shè)備,比如the Pison netPad。Symbian不再支持這些遺留SDK了。
對于一個軟件開發(fā)者來說,在你為一個特定的手機開發(fā)應(yīng)用程序時,首先需要了解的就是與它相關(guān)的UI Platform。然后,你需要了解這個手機所使用的Symbian OS的版本。有了這兩方面的信息,你就可以決定自己需要那個SDK了。
在大多數(shù)情況下,依靠這個SDK,你就可以開發(fā)一個單一版本的應(yīng)用程序,然后能夠在所有的基于相同的UI Platform和Symbian OS版本的手機上運行。
對于那些基于同一SDK的手機之間可能出現(xiàn)的各種差別,Symbian OS 系統(tǒng)定義文檔給出了更進一步的細節(jié)信息。您可以自行查閱。
Symbian OS System Definition - Detailed View (updated to include v8.0)
我們可以看到SDK主要分為兩大類,即Nokia Series系列和UIQ。而Series系列中又以Series 60平臺最為流行。需要指出的是,以上只是從開發(fā)平臺上對SDK進行了劃分,劃分粒度是非常粗的。每種平臺都會對應(yīng)著一系列具體的開發(fā)工具,您需要根據(jù)自身情況,做出選擇。
本文將以“SERIES 60 2ND EDITION SDK FOR SYMBIAN OS SUPPORTING FEATURE PACK 2 SUPPORTING MICROSOFT VISUAL C++ AND BORLAND C++BUILDERX”這個SDK為基礎(chǔ),通過一個簡單的C++示例程序,讓您對開發(fā)過程有所了解。您可以在這里下載此SDK。由上面這個長的有些恐怖的名字我們可以了解到,這個SDK支持在VC++或BCB的IDE下開發(fā)程序。本文會先講解如何通過命令行一步步的構(gòu)建我們的第一個程序,然后還會簡單介紹結(jié)合VC++.NET 2003 IDE的開發(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的開發(fā),本文將不做介紹。您如果有興趣,可以自行參考本文后面的推薦資源。
Ø 安裝VC++.NET 2003。需要指出的是,我們需要VC++的編譯器來編譯代碼,但是其IDE卻是可選的。我們也可以從命令行來編譯我們的代碼。
Ø 安裝JDK或JRE
Ø 安裝ACTIVEPERL
Ø 安裝SERIES 60 SDK 2ND
Ø 設(shè)定環(huán)境變量。這恐怕是新手們最頭疼的問題之一。網(wǎng)上對這個問題的解答,也可謂五花八門。所以最好的方法就是參考別人的意見,然后動手實踐。以下內(nèi)容均基于我的實踐。有不同意見,歡迎討論。
首先我想說,這一步完全是多余的,根本不需要。您甚至不需要嚴格的按照上面列出順序來安裝各種工具。不過我還是希望您可以耐心的把這段話看完,呵呵。
然后我想說,請使用VC++.NET帶的“命令提示”工具來進行以下的實驗。而不是使用Windows“附件”菜單中的那個“命令提示”工具。
原因如下:這里問題的關(guān)鍵是讓各種工具可以在命令行上可見,這樣我們就可以利用它們來編譯我們的代碼。而VC++.NET帶的“命令提示”工具與Windows“附件”菜單中的那個“命令提示”工具的區(qū)別之一就是其PATH變量的值不同。前者的PATH變量包括:
1、安裝VC++.NET過程中,添加的一些路徑,包括主要的編譯鏈接等工具。
2、系統(tǒng)環(huán)境下PATH變量的內(nèi)容(通??梢赃@樣設(shè)置:右擊我的電腦—>屬性—>高級—>環(huán)境變量—>系統(tǒng)變量。安裝JDK,ACTIVEPERL,SERIES 60 SDK后,各種相應(yīng)工具的路徑也會添加到這里)。
而后者的PATH變量只包括2中的內(nèi)容。
所以,如果不使用VC++.NET帶的“命令提示”工具,您就會因為找不到相應(yīng)編譯工具,而無法繼續(xù)下去。如果自己勤快一些,可以手動把1中的內(nèi)容加到系統(tǒng)PATH中去,呵呵。這樣就可以用Windows“附件”菜單中的那個“命令提示”工具了。
下面介紹一下我機器上的實驗環(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ù)構(gòu)造,包括用戶界面、各種應(yīng)用程序以及各種開發(fā)工具。Series 60的用戶界面(UI)針對方便單手使用的目的進行了精心的設(shè)計。
從用戶的角度來看,最為重要的特性也許正是它的UI。它的UI包括一個大屏彩顯(176 x 208 pixel, 256 color display)以及各種輸入按鍵(兩個軟鍵,五路導(dǎo)航鍵five-way navigation,收/發(fā)鍵等等,見圖1)。Series 60平臺包括一些常用的應(yīng)用程序,比如個人信息管理(PIM)程序(比如,電話簿、日歷、相冊等),電子郵件程序,瀏覽程序,消息收發(fā)程序等等。Series 60平臺還有一個安裝引擎,通過它用戶就可以安裝或刪除應(yīng)用程序,既可以通過PC連接也可以通過“空中(OTA)”服務(wù)來完成。
圖1 Series 60 Platform UI
從K&R開始,“Hello World”幾乎成了入門必修課。呵呵,我們也順其自然吧。
我們先將整個流程過一遍,然后再解釋每一步都發(fā)生了什么。以下涉及到的各種路徑都是以筆者的實驗環(huán)境為依據(jù)的,您需要自行替換為自己機器上的路徑。
1、打開VS.NET 2003自帶的命令行,進入以下目錄:
D:\Symbian\8.0a\S60_2nd_FP2\Examples\basics\helloworld
這里有我們即將涉及到的三個文件:
HelloWorld.cpp C++源文件
HelloWorld.mmp 項目定義文件
Bld.inf 組件定義文件
2、構(gòu)建我們的例子,請輸入:
bldmake bldfiles
這一步會生成一個文件ABLD.BAT。
3、編譯和鏈接,請輸入:
abld build wins udeb
這一步會生成供Series 60 調(diào)試模擬器使用的文件。
4、運行,請在命令行進入:
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\release\wins\udeb
這個目錄含有剛生成的helloworld.exe文件。然后輸入:
helloworld
2.4.2 與VS IDE配合
1、先重復(fù)2.4.1節(jié)的步驟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所需的解決方案文件、項目文件等等,只不過是在當(dāng)前的目錄下。
3、通過上述過程生成的文件,即可在VS.NET 2003的IDE中打開helloworld項目。然后就可以按照構(gòu)建、運行、調(diào)試其它項目的方法來處理該項目了。比如:輸入HELLOWORLD.sln,然后用Ctrl+Shift+B生成,再用Ctrl+F5直接運行(不調(diào)試),效果與圖2一樣。您會注意到,模擬器出現(xiàn)的很快。那是因為該項目是個簡單的控制臺程序,無須載入各種GUI庫即可運行。
上面只是按部就班的講述了如何構(gòu)建一個簡單的程序,之所以沒有涉及細節(jié),是為了使您可以快速的體驗一下開發(fā)過程(不包括調(diào)試,生成最終的發(fā)布版,載入實際目標設(shè)備運行等步驟)。下面就具體的介紹一下Symbian OS構(gòu)建過程。
目前,構(gòu)建Symbian 程序的兩條主要的工具鏈為:
基于Metowerks CodeWarrior 編譯器的工具鏈。
基于Microsoft Visual C++編譯器的工具鏈。
您可以根據(jù)自己的意愿或需要來選用合適的工具,并配合相應(yīng)的IDE來方便開發(fā)。但是一般來說不可以混合使用它們。
由于Symbian程序的構(gòu)建工具以及最終目標的多樣性,Symbian項目通常會先以一種通用的格式來描述。然后,可以使用相應(yīng)的構(gòu)建工具鏈來處理這個中立的項目文件,生成特定的項目文件。
剛開始,只有HelloWorld.cpp,HelloWorld.mmp,Bld.inf 這三個文件。其中HelloWorld.mmp和Bld.inf就是兩個關(guān)鍵的項目文件。
HelloWorld.mmp:項目定義文件,描述了將要構(gòu)建的項目信息,還定義了一些資源文件和應(yīng)用程序信息文件。它是一個環(huán)境中立的文件,可以使用各種工具來處理并生成各種目標環(huán)境的make文件。您可以使用文本編輯器查看該文件。里面的信息還是很簡明的,包括構(gòu)建目標,構(gòu)建類型,源路徑,庫文件,頭文件等等信息。
Bld.inf:組件描述文件,它列出了一個組件當(dāng)中包括的所有項目,還包括一些額外的構(gòu)建指令。您也可以使用文本編輯器查看該文件。對于本實例來說,僅包括一個項目HelloWorld.mmp。
當(dāng)我們運行
bldmake bldfiles
這個命令時,會處理當(dāng)前目錄下的bld.inf文件,具體來說會執(zhí)行以下處理過程:
1、生成目錄
D:\Symbian\8.0a\S60_2nd_FP2\epoc32\BUILD\SYMBIAN\8.0A\S60_2ND_FP2\EXAMPLES\BASICS\HELLOWORLD
2、在這個目錄下,生成一系列的Make文件,針對各種目標環(huán)境。比如VC7.MAKE,CW_IDE.MAKE等等。
3、在當(dāng)前目錄下生成abld.bat文件,這個文件會在隨后用到。您可以查看該文件的內(nèi)容。但是建議不要手工的更改它的內(nèi)容。
Bldmake命令也支持其他的命令行選項,您可以直接輸入bldmake來查看簡要的介紹,還可以查看SDK文檔了解詳細信息。
由bldmake處理bld.inf文件得到的abld.bat文件,使得abld命令可用。Abld.bat控制著構(gòu)建一個項目的方方面面。Abld命令的語法非常地靈活,它擁有許多命令行選項,它們的組合涵蓋了各種構(gòu)建需求。最常用的組合,莫過于abld build 和 abld clean 相關(guān)了。
當(dāng)我們運行
abld build wins udeb
這個命令時,將為wins平臺(即通常的VC++環(huán)境)生成一個debug版本的程序。
具體來說,在
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文件。
如果只是調(diào)用
abld build
那么會為所有可能的平臺構(gòu)建程序。
而運行
abld clean
會刪除屬于當(dāng)前組件的,編譯過程中生成的所有中間文件和可執(zhí)行文件,以及由鏈接器導(dǎo)入的庫文件。
您也可以指定只刪除某個平臺的文件。
具體的abld語法,請查看SDK文檔。
簡而言之,就是處理.mmp文件,生成各種目標平臺的make文件。既可以針對命令行來生成,也可以針對IDE來生成。用于命令行的makefile無法用于IDE。
所以我們的命令:
makmake helloworld vc7
就為VS.NET 2003 IDE生成了相關(guān)的makefile,然后我們就可以通過這些文件借助VS的強大功能了。
更多的makmake語法,請查看SDK文檔。
Symbian OS官方網(wǎng)站 不用多說,這是Symbian相關(guān)信息的最權(quán)威來源。
諾基亞論壇 這是最為活躍的移動開發(fā)技術(shù)社區(qū)。尤其是關(guān)于Nokia Series系列的資源非常的豐富。 而且,現(xiàn)在還有 諾基亞論壇簡體中文版 這極大的方便了國內(nèi)的開發(fā)者學(xué)習(xí)相關(guān)技術(shù)。
SDKs之外的開發(fā)工具 除了各種Symbian SDK之外,還有許多有用的工具和SDK插件可供開發(fā)者使用。
基于Symbian OS的優(yōu)秀開源項目 提高自己水平的一個有效途徑就是學(xué)習(xí)或加入一個優(yōu)秀的開源項目。
專門針對Series 60系列的網(wǎng)站 基于Symbian OS的Series 60平臺是目前業(yè)界領(lǐng)先的智能電話平臺。
UIQ的官方網(wǎng)站 UIQ Technology AB成立于1999年,是完全歸Symbian公司所有的一家子公司。他們面向開發(fā)移動設(shè)備的UI Platform——UIQ,并授權(quán)給那些全球領(lǐng)先的移動設(shè)備制造商。
正如本文的摘要所述,這是一篇入門的文章。為此,文章舍棄了許多內(nèi)容。筆者認為那些內(nèi)容更適合出現(xiàn)在其他主題的文章中。呵呵,希望這篇文章能給您帶來一些收獲,幫助您順利的搭上Symbian開發(fā)的快車。
歡迎指正,歡迎討論!