国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 手機玩家 > 正文

3650進階篇之四----Symbian開發(fā)入門

2024-06-08 15:19:12
字體:
來源:轉載
供稿:網友

    3650使用的Symbian系統(tǒng)是以Nokai為首的各手機廠商合伙開發(fā)的一個操作系統(tǒng),主要用于高端的智能手機。其開發(fā)語言為C++,可以使用Microsoft Visual C++ 6.0作為集成化的開發(fā)環(huán)境,看來雖然Symbian的目標是跟微軟的SmartPhone較勁,在采取的手段和方法上卻也是不拘一格,微軟更是暗暗叫苦,誰讓當時vc6設計的這么開放,結果被敵人拿去做武器了。本文主要針對的是Symbian開發(fā)入門,所以應該是非常簡單的事,因為畢竟Symbian的開發(fā)語言是C++,并不會因為是用于手機的操作系統(tǒng)就復雜了多少,就象很多人一直掛在嘴邊的J2ME也畢竟是java語言,并不會因為用在手機上就高深了多少一樣。

    因為是用于手機的操作系統(tǒng),所以我們研究Symbian的話,研究Nokia的60系列平臺是一個很不錯的選擇,Nokia根據(jù)手機的屏幕大小和價格高低把手機分成了多個系列,60系列目前有兩款手機:7650和3650。60系列采用Symbian os 6.1,然后又根據(jù)手機屏幕的特點對UI做了一些修改,這個被修改了的Symbian就被稱為Nokia的60系列平臺。所以接下來的內容對7650同樣有用。
   

    入門的第一步就是要下載S60的SDK,可以從Nokia的開發(fā)論壇上下載:http://www.asia.forum.nokia.com/chinese/sch/main/series60.html。
   

    看Nokia網站上最新的是1.0,不過下面又有個0.9中文版,所以自然要下載這個0.9版了。100多兆吧,不想下的話,可以跟Nokia要光盤,估計他們應該很高興給。這個0.9中文版的模擬器是中文版的,而且有支持GBK和UNICODE轉換的類,不知道1.0的英文版有沒有。 
    下載完了就是安裝,選一個目錄裝就是了,不過最好裝在C盤上。可能是考慮到Windows平臺和Unix平臺都能用的緣故,這套SDK在處理盤符和目錄時比較弱智,我當時SDK裝到C盤,自己的程序放到D盤用vc6生成新項目就有問題,經觀察是盤符的問題。所以保險起見的話,最好裝在C盤,有興趣的可以替Nokia測試一下。另外,還需要Java的運行庫和Perl,SDK里也都帶了,不過他自帶的Perl在我的XP下裝有問題,我下載了一個最新的ActivePerl才最終算是安裝完畢。從SDK的安裝來看,這幫搞手機的搞軟件好像確實不太專業(yè),呵呵。
    剛才說了,我的Symbian安裝到了C盤,在C盤的Symbian目錄下,有一個6.1的目錄,6.1目錄下有兩個目錄:Series60和Shared。還好,從名字上能看出大體的意思。請一定注意Series60目錄下的Epoc32/BUILD目錄,因為這個目錄以后要反復的用到。
    接下來的任務就是要編譯一下HelloWorld,然后再運行一下看看了。首先得確認你的系統(tǒng)裝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/groupSymbian里,一個Project通常是按inc,src,group等目錄組織,group目錄里通常放的是項目文件,所以編譯時要先到這里。用命令提示符模式進入剛才說的那個目錄下,然后執(zhí)行 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文件。(實在理解不了為什么要這么搞?難道因為他們是生產手機的?)雖然它生成了這么多東西,但是我們不要管,繼續(xù)輸入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里創(chuàng)建新項目的話,要把 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函數(shù),還有就是很多的函數(shù)都有L或LC的后綴。其實這是Symbian的例外處理機制。比如說我們定義了一個指針,給它分配了空間,可是在使用它的時候程序突然間出現(xiàn)了致命錯誤中止了,那這個指針占用的地址空間我們肯定是收不回來了,在PC上編程這一點可能問題不大,內存那么多,而且用不了多長時間就重啟動了,但是Symbian的設計者可能認為這在手機上是不行的,所以對這一點做了很多的設計。

    Symbian有一個Clean up stack,在使用指針時,用PushL把指針壓入棧中,使用完后在用Pop彈出棧,如果在中間調用可能導致崩潰的函數(shù)時果真出現(xiàn)了問題,那么Clean up stack可以通過調用該指針的析構函數(shù)回收占用的空間。這些可能導致崩潰的函數(shù)在Symbian里被稱為可能Leave的函數(shù),所以就在這些函數(shù)的尾部加了一個L。而加LC后綴的函數(shù)表明該函數(shù)已經在內部把指針用PushL壓入clean up stack了,調用時無需再用PushL,直接調用完用Pop既可。Clean up stack還提供了一個PopAndDestroy函數(shù),就是彈出棧后再銷毀指針。順便提一句,正式因為有了Clean up stack機制,所以Symbian在有些地方看起來跟VC的程序不太一樣,比如說很多類的構造函數(shù)都不用,用NewL或NewLC構造,分配地址時的操作符new()也變成了new(ELeave)。上述內容可以看一下Symbian編程基礎中的內存管理一節(jié)。
    Symbian自己定義了一堆的數(shù)據(jù)類型,如果不想找麻煩的話,還是乖乖的用這些類型的好。簡單說一下,整型有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 *;緩沖區(qū)描述符(Buffer descriptor)是TBufC和TBuf,類似于char [];堆描述符是HBufC,類似于(char *)malloc(length+1)的用法。具體用時,上述的類型又分為8位的和16位的。舉個例子:
    TBuf<64> buf;
    CEikonEnv::Static()->ReadResource( buf, R_EXAMPLE_VIEW_TITLE );
    先定義了一個最大長度是64的緩沖區(qū),然后讀入名為R_EXAMPLE_VIEW_TITLE的資源。
    再例如:
TText8 *str = (TText8*)"示范窗口標題";
TPtrC8 source( str );
iInfoText = HBufC::NewL( source.Length() );
TPtr16 ptr = iInfoText->Des();
    定義一個8位的字符串str,然后構造一個指針常量source,根據(jù)source長度再定義一個16位的指針,下一步我這里沒寫,但明顯著應該是把gbk的轉換為unicode了。
    Symbian的資源文件一般是以rss為擴展名的,沒有專門的資源文件編輯器,用戶必須用記事本打開rss文件手工編寫rss文件。這個都有一定的規(guī)則和方法,參考例子不難編寫自己的資源文件。需要注意的一點是,如果資源文件里包含中文,那么必須把文件另存為utf-8格式的才可。
    入門相對來說是比較簡單的,但精通就需要大量的實踐了。
    早就想寫一篇這樣的文章了,但一直不知從何寫起,本文主要內容轉自賽迪網的一篇文章,因為看到一些機友對3650的深一步研究有興趣,所以轉了這篇文章,算是節(jié)省一點我的時間吧。需要說明的是:這只是一個簡單的入門介紹,對于用C++編程的朋友來說應該算不得什么。對于初學者來說,C++功能非常強大,但也相當復雜,過程是非常枯燥的,所以還是需要耐性和時間的。

    另外,身邊不少朋友對JAVA比較感興趣,包括一些職業(yè)程序員也好象更喜歡開發(fā)JAVA方面的應用程序,我本人也對這方面更感興趣,以后有機會會為大家整理一些關于JAVA編程方面的內容的。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 商水县| 崇左市| 大邑县| 镇平县| 文山县| 陆河县| 拜城县| 呼伦贝尔市| 炉霍县| 藁城市| 保山市| 白山市| 宜城市| 库车县| 巴中市| 绵竹市| 南阳市| 福州市| 新乐市| 辽阳县| 大洼县| 房山区| 繁峙县| 庆安县| 改则县| 定陶县| 斗六市| 五河县| 都匀市| 阜康市| 武胜县| 贵德县| 栾城县| 江西省| 广州市| 岳阳市| 七台河市| 德昌县| 高邮市| 勐海县| 新闻|