DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> 五小時Symbian開發入門
五小時Symbian開發入門
編輯:AJAX詳解     
SymBian是一個操作系統,是以Nokai為首的各手機廠商合伙攢的一個操作系統,主要用於高端的智能手機。其開發語言為C++,可以使用Microsoft Visual C++ 6.0作為集成化的開發環境,看來雖然SymBian的目標是跟微軟的SmartPhone較勁,在采取的手段和方法上卻也是不拘一格,微軟更是暗暗叫苦,誰讓當時vc6設計的這麼開放,結果被敵人拿去做武器了。 本文只是為了Symbian的開發入門,所以應該是非常簡單的事,因為畢竟SymBian的開發語言是C++,並不會因為是用於手機的操作系統就復雜了多少,就象很多人一直掛在嘴邊的J2ME也畢竟是Java語言,並不會因為用在手機上就高深了多少一樣,只能是更簡單。5小時是我從對Symbian一無所知到完成本文化在SymBian上的所有時間。 因為是用於手機的操作系統,所以我們研究Symbian的話,先選定一款手機再說。Nokai的60系列平台是一個很不錯的開始,Nokai根據手機的屏幕大小和價格高低把手機分成了多個系列,60系列目前有兩款手機:7650和3650。60系列采用Symbian os 6.1,然後又根據手機屏幕的特點對UI做了一些修改,這個被修改了的SymBian就被稱為Nokia的60系列平台。 所以入門的第一步就是要下載S60的SDK,可以從Nokai的開發論壇上下載:http://www.asia.forum.nokia.com/chinese/sch/main/serIEs60.Html。看Nokai網站上最新的是1.0,不過下面又有個0.9中文版,所以自然要下載這個0.9版了。100多兆吧,不想下的話,可以跟Nokai要光盤,估計他們應該很高興給吧。這個0.9中文版的模擬器是中文版的,而且有支持GBK和UNICODE轉換的類,不知道1.0的英文版有沒有。 下載完了自然就是安裝,選一個目錄裝就是了,不過最好裝在C盤上,可能是考慮到Windows平台和Unix平台都能用的緣故,這套SDK在處理盤符和目錄時比較弱智,我當時SDK裝到C盤,自己的程序放到D盤用vc6生成新項目就有問題,經觀察是盤符的問題。所以保險起見的話,最好裝在C盤,有興趣的可以替Nokai測試一下。另外,還需要Java的運行庫和Perl,SDK裡也都帶了,不過他自帶的Perl在我的XP下裝有問題,我下載了一個最新的ActivePerl才最終算是安裝完畢。從SDK的安裝來看,這幫搞手機的搞軟件好像確實不太專業。 剛才說了,我的Symbian安裝到了C盤,在C盤的SymBian目錄下,有一個6.1的目錄,6.1目錄下有兩個目錄:Series60和Shared。還好,從名字上能看出大體的意思。請一定注意SerIEs60目錄下的Epoc32\BUILD目錄,因為這個目錄以後要反復的用到。 接下來的任務就是要編譯一下HelloWorld,然後再運行一下看看了。首先得確認你的系統裝VC6了(最好能裝sp3以上,否則將來用到vc6時會報警),而且得把C:\Program Files\Microsoft Visual Studio\VC98\Bin放到你的PATH裡,主要是用nmake.exe。所以如果你有nmake的話,不裝vc6也可以看helloworld。 找到helloWord例子的目錄,在我這裡是C:\SymBian\6.1\Series60\SerIEs60Ex\HelloWorld\group。SymBian裡,一個Project通常是按inc,src,group等目錄組織,group目錄裡通常放的是項目文件,所以編譯時要先到這裡。用命令提示符模式進入剛才說的那個目錄下,然後執行 bldmake bldfiles 這個命令會在group目錄下生成一個abld.bat的批處理文件,並且會在C:\Symbian\6.1\Series60\Epoc32\BUILD下生成C:\Symbian\6.1\Series60\Epoc32\BUILD\SymBian\6.1\SERIES60\SERIES60EX\HELLOWORLD\GROUP這個深的一個目錄,並在最底層目錄下生成一堆.make文件。實在理解不了為什麼要這麼搞?因為他們是生產手機的? 雖然它生成了這麼多東西,但是我們不要管,繼續輸入 abld build wins udeb 這個命令會編譯我們的程序,最後在C:\SymBian\6.1\SerIEs60\Epoc32\Release\wins\UDEB目錄下生成我們的helloworld,然後我們可以從開始菜單裡運行模擬器的debug版,打開other目錄就可以運行helloworld了。 如果要在VC6裡編譯和運行HelloWorld,在運行完bldmake bldfiles後,運行abld makefile vc6,則會生成vc6的dsw文件,位置在C:\Symbian\6.1\Series60\Epoc32\BUILD\SymBian\6.1\SERIES60\SERIES60EX\HELLOWORLD\GROUP\HELLOWORLD\WINS。看SymBian把這點事搞得這麼麻煩,也真是不容易。 如果要直接在vc6裡創建新項目的話,要把C:\SymBian\6.1\Series60\SerIEs60Tools目錄下的文件拷貝到vc6的模板目錄下才可以。 折騰到這裡,可能得花2個多小時吧,剩下的兩個多小時得看看文檔了。 先看看HelloWorld的幫助文檔,理解一下Symbian程序的體系結構。SymBian程序也是按照VC的文檔視圖結構來組織程序的,有Application類CAknApplication,有Document類CAknDocument,有Frame類CAknAppUi,有視圖類CCoeControl等,跟vc的結構好像是差不多的,但感覺上它的Document類好像是做樣子的,我還沒看到這一塊。關於這些類之間的調用關系,在HelloWorld的文檔裡有個順序圖非常好,一看便知。 在看Symbian的代碼時,感覺最不適應的可能就是經常看到PushL和Pop函數,還有就是很多的函數都有L或LC的後綴。其實這是Symbian的例外處理機制。比如說我們定義了一個指針,給它分配了空間,可是在使用它的時候程序突然間出現了致命錯誤中止了,那這個指針占用的地址空間我們肯定是收不回來了,在PC上編程這一點可能問題不大,內存那麼多,而且用不了多長時間就重啟動了,但是Symbian的設計者可能認為這在手機上是不行的,所以對這一點做了很多的設計。Symbian有一個Clean up stack,在使用指針時,用PushL把指針壓入棧中,使用完後在用Pop彈出棧,如果在中間調用可能導致崩潰的函數時果真出現了問題,那麼Clean up stack可以通過調用該指針的析構函數回收占用的空間。這些可能導致崩潰的函數在Symbian裡被稱為可能Leave的函數,所以就在這些函數的尾部加了一個L。而加LC後綴的函數表明該函數已經在內部把指針用PushL壓入clean up stack了,調用時無需再用PushL,直接調用完用Pop既可。Clean up stack還提供了一個PopAndDestroy函數,就是彈出棧後再銷毀指針。順便提一句,正式因為有了Clean up stack機制,所以Symbian在有些地方看起來跟VC的程序不太一樣,比如說很多類的構造函數都不用,用NewL或NewLC構造,分配地址時的操作符new()也變成了new(ELeave)。上述內容可以看一下SymBian編程基礎中的內存管理一節。 SymBian自己定義了一堆的數據類型,如果不想找麻煩的話,還是乖乖的用這些類型的好。簡單說一下,整型有TInt和TUint,其中又分為8位的,16位的和32位的,如TInt8,TInt16,TInt32;文本類型是TText,又細分為TText8和TText16,但內部都是Unicode的,所以實際上內部引用應該都是TText16;bool型是TBool,對應的值有ETrue和EFalse;浮點型是TReal,但又分為TReal32和TReal64;還有一個引用類型TRefByValue<T>,是以模板類的形式提供的。 因為Symbian是沖著更面向對象設計的,所以在我們常見的字符串這塊變化比較大,在SymBian裡叫descriptor。最底層的是兩個抽象類TDesC和TDes,實際上TDes也是繼承的TDesC,TDesC中的C字母是常量constant的意思。即帶C字母結束的都是定義的常量,是不可以修改的,而不帶C的都有一個最大長度的限制,是可以修改的,下面也是同樣的道理。指針描述符是TPtrC和TPtr,類似於C++中的char *;緩沖區描述符(Buffer descriptor)是TBufC和TBuf,類似於char [];堆描述符是HBufC,類似於(char *)malloc(length+1)的用法。具體用時,上述的類型又分為8位的和16位的。舉個例子: TBuf<64> buf;
CEikonEnv::Static()->ReadResource( buf, R_EXAMPLE_VIEW_TITLE ); 先定義了一個最大長度是64的緩沖區,然後讀入名為R_EXAMPLE_VIEW_TITLE的資源。 再例如: TText8 *str = (TText8*)"示范窗口標題";
TPtrC8 source( str );
iInfoText = HBufC::NewL( source.Length() );
TPtr16 ptr = iInfoText->Des(); 定義一個8位的字符串str,然後構造一個指針常量source,根據source長度再定義一個16位的指針,下一步我這裡沒寫,但明顯著應該是把gbk的轉換為unicode了。 SymBian的資源文件一般是以rss為擴展名的,沒有專門的資源文件編輯器,用戶必須用記事本打開rss文件手工編寫rss文件。這個都有一定的規則和方法,參考例子不難編寫自己的資源文件。需要注意的一點是,如果資源文件裡包含中文,那麼必須把文件另存為utf-8格式的才可。 入門相對來說是比較簡單的,但精通就需要大量的實踐了。
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved