當(dāng)前位置:
首頁 >
symbian系统开发教程(一)
發(fā)布時間:2023/12/18
39
豆豆
生活随笔
收集整理的這篇文章主要介紹了
symbian系统开发教程(一)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
第一章:Symbian OS簡介
作者:謝興????????enigma19971@hotmail.com
????????????????????????????????????????---轉(zhuǎn)載需注明出處????? 下載word文檔
1.1.??? Symbian系統(tǒng)簡介
當(dāng)前有很多手機運行Symbian OS,數(shù)量甚至超出您的想象。到目前為止已經(jīng)有超過7500 萬、100 多種型號的手機運行Symbian OS。這些電話大部分都形態(tài)迥異:有的配有鍵盤,有的采用筆控輸入;有的配備TFT 彩色屏幕,有的則配備黑白LCD 顯示屏;有的擅長于音樂播放,有的專注于電子游戲、圖像處理甚至電視功能;有的手機面向個人消費者,有的專門針對商務(wù)用戶;有的是為單手操作設(shè)計的,有的是為雙手操作設(shè)計的——種類繁多不一而足。Symbian OS 手機受到廣大消費者的喜愛。僅2005 年就售出3400 萬部Symbian OS 手機——這相當(dāng)于每不到一秒鐘就有一部Symbian OS 手機被出售。網(wǎng)絡(luò)運行商同樣青睞Symbian OS 手機。全球有250 多個移動電話網(wǎng)絡(luò)運行商選擇了Symbian OS 手機。所有這些都表明現(xiàn)在市面上有成千上萬的手機是基于Symbian OS 的,所以為symbian系統(tǒng)開發(fā)的應(yīng)用程序會得到廣泛的應(yīng)用。現(xiàn)在已經(jīng)有5400 多種商業(yè)性應(yīng)用軟件可供Symbian OS 手機應(yīng)用。本教程旨在為您提供一些編寫Symbian OS 應(yīng)用程序的入門知識。希望它會對您有所裨益,為開發(fā)Symbian OS 應(yīng)用程序打下一個良好的基礎(chǔ)。
1.2.??? 開發(fā)語言
從開發(fā)初期起,Symbian OS 就是專門為移動電話而設(shè)計的,因此從彈性的電源管理(resilient power-management)到內(nèi)存資源的謹(jǐn)慎使用,全都是為了滿足手機操作系統(tǒng)的特定需求。作為Symbian OS 的開發(fā)人員,您將受益于Symbian OS 這樣一個專門為移動設(shè)備而創(chuàng)立并隨著市場一起發(fā)展的開發(fā)平臺。Symbian OS 最“基本”的編程語言是一種改進(jìn)的C++。Symbian OS C++ 經(jīng)過特殊設(shè)計與優(yōu)化,以利于降低手機電池能耗和內(nèi)存使用。比如,為了節(jié)約電池耗電,所有Symbian OS 程序都是基于事件(event-based) 的,而當(dāng)沒有任何程序進(jìn)行事件處理時,CPU 就進(jìn)入休眠。您在開發(fā)軟件時也可以使用Java、Python、.NET(使用Visual Basic 和帶AppForge’s Crossfire 的C#)、Perl、OPL和Adobe Flash,但是Symbian OS C++ 是最強大(它允許最大限度的利用操作系統(tǒng)提供的所有功能)也是最快捷(因為它直接以編譯碼運行,而無需在運行時進(jìn)行解譯)的語言。這也就是為什么我們在本書中選擇C++ 來向您演示如何進(jìn)行Symbian OS 開發(fā)的原因。好了,閑言少敘,讓我們言歸正傳。
1.3.??? 準(zhǔn)備工作
首先您需要有一臺電腦能創(chuàng)建并測試在Symbian OS 手機上運行的應(yīng)用程序。這也就是說電腦要有一個較快的CPU 處理器(至少1.5GHz)和相當(dāng)大的RAM(512MB或更大)以及一個大容量硬盤(至少有2GB 剩余空間)。該電腦必須能運行Windows 2000 或XP 操作系統(tǒng)。然后您需要開發(fā)軟件來幫助您編寫代碼并進(jìn)行編譯。這可通過包含編輯程序(editor)、編譯程序(compiler) 和鏈接程序(linker) 的集成開發(fā)環(huán)境(IDE) 來完成。在這推薦兩種適合Symbian OS 程序開發(fā)的IDE。對于開發(fā)非商業(yè)用途的Symbian OS 應(yīng)用程序,Nokia 的Carbide.c++ Express 版本是最理想不過了,它建立在Eclipse IDE 的基礎(chǔ)上,供免費下載。對于使用Visual Studio.NET 2003 的程序員來說,也可選擇Carbide.vs。這是一套基于Microsoft Visual Studio .NET2003 IDE 的工具,用于開發(fā)S60 和Series 80 軟件。您還需要軟件開發(fā)包(SDK), 專門用來編寫和創(chuàng)建Symbian OS 應(yīng)用程序。基于不同手機類型,有不同版本的SDK 供選擇,具體使用哪個SDK 請見以下幾頁的說明。如果您還沒有決定具體的手機類型或平臺而無法確定選擇哪個SDK,我們建議您一開始可使用S60 和UIQ SDK。如果您想為最新款的手機(如Nokia 3250、E60、E61、N71、N80、N91、N73 或N93)編寫應(yīng)用程序,那就選擇基于Symbian OS v9 的SDK(UIQ 3 或S60 第三版),要么您就選擇更低版本的SDK(UIQ 2.1 或S60 第二版)。
不同版本的Symbian OS 之間有什么區(qū)別?主要的分別是,在Symbian OS 9.1 版本之前,為較低版本的Symbian OS編寫的軟件往往可在較高版本上運行,但9.1 版本與以往的版本截然不同。如要運行在9.1 版的Symbian OS 上,應(yīng)用程序必須稍加修改并進(jìn)行再次編譯。接下來您需要下載您所選擇的IDE 和SDK。以下章節(jié)將向您介紹如何在互聯(lián)網(wǎng)上找到這些工具。
1.4.??? S60 平臺
??? S60 平臺是一個完整的應(yīng)用程序包(package),用戶接口和構(gòu)建于Symbian 系統(tǒng)技術(shù)的開發(fā)工具。S60 用戶接口 (UI) 經(jīng)過精心的設(shè)計,方便用戶使用,便于單手操作。從用戶的角度看來,該平臺最大的特點在于它的用戶界面:大的彩屏和各種輸入鍵(兩個軟件鍵, 五方位的導(dǎo)航鍵,和幾個專用的鍵)。 單手操作和大彩屏的優(yōu)點能使應(yīng)用程序開發(fā)者提供更有吸引力的內(nèi)容和提供更方便的導(dǎo)航功能,同時增加用戶使用手機時的愉快體驗。
??? 目前,s60平臺上已經(jīng)存在各種各樣的應(yīng)用軟件. 其中最重要的有:高級智能電話應(yīng)用程序,個人信息管理應(yīng)用程序(PIM)(例如, 電話簿,日歷, 相冊), 短信, 網(wǎng)頁瀏覽, 電子郵件和應(yīng)用程序安裝引擎,它能夠讓您自由地從電腦上下載軟件到您的手機上。
??? S60 第三版本支持兩種不同的外觀:
????????? QVGA Portrait (240x320)
????????? QVGA Landscape (320x240)
1.5.??? 如何選擇SDK
基于Symbian OS 的手機外型各異,用戶界面(UI) 也不盡相同。為了給特定的用戶界面編寫應(yīng)用程序,您必須選擇特定的SDK(盡管應(yīng)用程序的引擎往往與用戶界面無關(guān))。大部分運行Symbian OS 的手機采用的是S60 用戶界面并使用鍵盤操作。S60 已經(jīng)發(fā)布了一系列版本,選擇正確的S60 SDK 和相應(yīng)的Symbian OS 十分重要:
S60 第三版– Symbian OS v9.1
S60 第二版功能包3 – Symbian OS v8.1
S60 第二版功能包2 – Symbian OS v8.0a
S60 第二版功能包1 – 升級Symbian OS v7.0s
S60 第二版– Symbian OS v7.0s
S60 第一版– Symbian OS v6.1
您可在以下網(wǎng)站查到每一系列S60 SDK 所包含的手機型號列表:www.symbian.com/developer/sdks/sdks_series60.asp
其它大部分基于Symbian OS 的手機采用筆控輸入的UIQ 用戶界面。以下網(wǎng)站列出了基于各版本的UIQSDK 的手機機型www.symbian.com/developer/sdks/sdks_uiq.asp
您可以到以Nokia的網(wǎng)站下載SDK www.forum.nokia.com
1.6.Carbide.c++ 集成開發(fā)環(huán)境(IDE) ?
前面已經(jīng)提到了各種集成開發(fā)環(huán)境,這里我們主要介紹Carbide.c++的集成開發(fā)環(huán)境。Carbide.c++的集成開發(fā)環(huán)境(IDE)基于Eclipse集成開發(fā)環(huán)境版本3。增添了能使Eclipse處理symbian c++ 源文件和編譯Symbian工程的插件。這些插件分為以下幾類:
????????? C/C++開發(fā)工具箱(CDT)。這是一個使得Eclipse管理和編譯symbian工程的工具集
????????? Symbian插件。這些插件由symbian開發(fā),使得eclipse能夠處理Eclipse C++的概念,同時提供對Symbian操作系統(tǒng)軟件開發(fā)工具箱和Symbian工具鏈的支持。
????????? Nokia插件。由Nokia開發(fā),提供對Symbian操作系統(tǒng)工具箱的更多支持。插件實現(xiàn)了C++編譯器,symbian系統(tǒng)的調(diào)試器,并且加入了Carbide.c++系列產(chǎn)品的商業(yè)版本的高級特性。
很明顯,因為Carbide.c++是基本的Eclipse集成開發(fā)環(huán)境,開發(fā)者可以進(jìn)一步定制其它的商業(yè)或免費的插件,比如說,一個版本控制系統(tǒng),一個UML建模系統(tǒng)等。
Carbide.c++有自己的安裝程序,所以安裝比較簡單。在啟動這個產(chǎn)品之后,用戶看到的集成開發(fā)環(huán)境和Eclipse開發(fā)環(huán)境十分類似,如下圖所示,因為Carbide.c++是設(shè)計用于處理symbian c++應(yīng)用程序的,所以其集成開發(fā)環(huán)境的左邊顯示的是c/c++工程視圖,這個視圖用于顯示構(gòu)成一個典型symbian c++工程源文件、頭文件,資源文件。
關(guān)于eclipse平臺和插件的相關(guān)知識,不是本教程所關(guān)心的重點, 有興趣的讀者可參考相關(guān)的其他著述。
1.7.??? 開發(fā)環(huán)境的構(gòu)建
????????? 第一步:安裝JDK5.0
????????? 第二步:安裝ActivePerl(需要5.6.1以上版本)
????????? 第三步:安裝Symbian sdk
????????? 第三步:安裝Carbide.c++1.2 版本。 Carbide有不同的版本。 其中Express版本是免費安裝的,但不支持UI設(shè)計功能,也不支持在手機上調(diào)試的功能。
注意:這幾個文件需要放在一個目錄下面。否則,在編譯程序的過程中,可能會出現(xiàn)難以預(yù)料的錯誤。
1.8.??? 文件目錄的布局
在動手寫代碼之前,我們有必要了解工程的文件組織結(jié)構(gòu)。如果您看過SDK中的例子工程,或是用IDE的工程向?qū)?chuàng)建一個UI應(yīng)用程序,您就會了解一個典型的工程文件結(jié)構(gòu)布局是怎樣的。
??? 當(dāng)工程增長到一定程度的時候,好的文件目錄布局將有助于幫助跟蹤代碼的變更。工程中包含了各種不同類型的文件,包括源文件和其他類型的文件,我們通常將這些文件分開來存放,下面我們簡短地介紹這些文件。
??? 資源文件, 例如 .bmp 或 .wav 文件, 通常被單獨地存放在一個目錄下面。 測試代碼也會和產(chǎn)品代碼分開來存放。所以,一個典型的UI 應(yīng)用程序會有如下這樣一些目錄結(jié)構(gòu)和文件。
在group 目錄下面,有兩個重要的文件,這兩個文件都與創(chuàng)建Symbian工程相關(guān):
如果,需要在命令行編譯工程,必須創(chuàng)建如下兩個工程文件:
·???????? 工程定義文件 (.mmp file),這個文件對要編譯的工程進(jìn)行描述,并定義要構(gòu)建的資源文件。該文件是環(huán)境無關(guān)的,編譯工具用它來生成針對各種目標(biāo)環(huán)境下的make files文件。
·???????? 組件描述文件(bld.inf), 這個文件列出了一組相關(guān)的工程, 并包含一些編譯指令.
CodeWarrior?和 Carbide.c++ 都能夠?qū)牍こ潭x文件,并用它來在IDE環(huán)境下創(chuàng)建工程。下面詳細(xì)描述這些文件的格式。
????????? 組件(component)描述文件: bld.inf
??? Bld.inf 是一個文本文件。它的內(nèi)容非常繁瑣,主要包括工程定義文件mmp和其他的任何編譯工具所需要的文件。該文件分為多個節(jié),其中,mmp文件列表在PRJ_MMPFILES節(jié)中。即使一個工程文件只包含一個mmp文件,bld文件仍然是必須的。下面是一個典型的bld.inf文件。
??? 在上面的例子中, 如PRJ_PLATFORMS 聲明所示,默認(rèn)情況下工程被編譯為針對WINSCW平臺和 GCC-E平臺的執(zhí)行代碼。 當(dāng)您用CodeWarrior為模擬器編譯代碼的時候,您使用的是WINSCW 平臺, WINSCW的來由是,最終的代碼運行于Windows, 單線程模式(in a Single process),并用CodeWarrior編譯。
??? 平臺的名稱用來標(biāo)識最終的可執(zhí)行代碼所運行的那個平臺。 所以, 當(dāng)上面的代碼被編譯完后,可執(zhí)行程序被放在 /epoc32/release/winscw 目錄下面(根據(jù)是調(diào)試(debug)版本還是釋放(release)版本,被放在 /udeb 或 /urel 子目錄下面)。
如果代碼是針對手機硬件的,需要選用GCCE平臺。這時,最終的可執(zhí)行代碼被放到/epoc32/release/gcce/目錄下面。
????????? 工程描述文件 (mmp)
mmp 文件中的每個語句都以一個關(guān)鍵字開頭。下面是一個典型的mmp 文件的例子。
下面簡單地描述每個關(guān)鍵字的作用:
1.9.??? 第一個程序: HellowWorld
1.9.1.??? 創(chuàng)建工程
運行Carbide 集成開發(fā)環(huán)境,在菜單欄上選擇file->New->Symbian OS C++ project,出現(xiàn)如下圖所示的對話框:
我們選擇帶用戶界面設(shè)計器的圖形用戶界面應(yīng)用程序(Carbide Express 版本不支持用戶界面設(shè)計的功能)。然后點擊“下一步”按鈕。出現(xiàn)下面的對話框:
用戶選擇一個sdk的版本(筆者的機器上安裝的是s60_3rd_FP1版本的sdk)。繼續(xù)下一步:
按下一步,繼續(xù):
選擇一個空的界面,這樣我們可以自由地在上面添加控件。下面的步驟一直按“下一步”,直到完成。
1.9.2.??? 在模擬器上運行和調(diào)試
工程建立完成后,就可以構(gòu)建(build)工程了。在將程序放到手機上運行之前,我們通常需要先在模擬器上運行、調(diào)試程序。模擬器是SDK附帶的一個軟件,能夠模擬真實手機的運行情況。
在工程透視圖中,選中工程,點擊右鍵,將活動構(gòu)建設(shè)置為Emulator Debug(Winscw)。如下圖所示:
這樣,編譯出來的程序版本才是針對模擬器的。設(shè)置后,可以構(gòu)建(build)工程了:在工程透視圖中選中工程,點擊右鍵,選擇“build Target Only”(只編譯模擬器版本,節(jié)省時間)。
最后,點擊工具欄上的運行按鈕,選擇Run As->1 Run Symbian OS Application
Carbide 啟動模擬器, 這個過程需要持續(xù)幾十秒到幾分種,依賴機器的配置。在模擬器啟動后,點擊模擬器上的軟件鍵,模擬器會出現(xiàn)下面的界面:
選擇Installed 選項后,可以看到應(yīng)用程序的圖標(biāo):
在模擬器上點擊按鈕,運行該程序。
1.10.??????????? 在手機上運行和調(diào)試
1.10.1.???????????? 基本概念
能夠在模擬器上運行、調(diào)試程序后,您可能想要在真實的手機上運行您的程序。但在這之前,先需要搞清以下幾個基本概念:
????????? GCCE版本和ARM版本:
在真實設(shè)備上運行的程序版本不同于我們在模擬器上運行的程序版本,在設(shè)備上運行的版本必須是GCCE版本或ARM版本。其中GCCE版本是用SDK 自帶的編譯器的,使用它不需要付費,而ARM版本是專門針對ARM 平臺的,代碼經(jīng)過優(yōu)化,性能優(yōu)于GCCE版本的程序,但需要付費。
????????? .sis文件和.pkg:
創(chuàng)建應(yīng)用程序的GCCE 版本以后,需要創(chuàng)建一個Symbian 安裝文件(.sis)。從本質(zhì)上來講,.sis文件只是一個壓縮文件, 它包含了組成應(yīng)用程序所需的exe,dll,rss文件,和一些手機接收應(yīng)用程序時所必須的信息(例如:語言種類,應(yīng)用程序的UID)。現(xiàn)在的問題是,我們根據(jù)什么信息來創(chuàng)建這個sis文件呢?答案在于pkg文件, 在創(chuàng)建這個文件之前,先需要創(chuàng)建一個pkg文件,pkg文件中包含了一些有用的信息,包括將工程文件拷貝到手機的哪個目錄下面,程序的版本號等。
????????? 簽名(sign):
在開發(fā)s60 3rd版本的應(yīng)用程序時,所有的 .sis 文件在安裝到手機之前,必須被簽名。如果您的程序沒有用到capability或只用到了對所有的用戶都開放的功能(utility),您可以使用自簽名認(rèn)證(Self Signed certificate)。當(dāng)在自己的手機上調(diào)試程序時,這種方法特別管用。
????????? 機上調(diào)試代理(on-device debug agent):
??? 如果想要在真實的手機設(shè)備上調(diào)試程序,需要在手機上安裝機上調(diào)試代理,這個手機上的代理程序通過藍(lán)牙或USB串行鏈路與調(diào)試器通信,在Carbide.c++調(diào)試器和目標(biāo)機器之間的起到接口的作用。調(diào)試代理提供以下功能:
1.?????? 運行在Symbian 系統(tǒng)上作為調(diào)試代理。
2.?????? 為Symbian系統(tǒng)提供一個穩(wěn)定的集成的接口
3.?????? 能被用來在真實的設(shè)備上調(diào)試應(yīng)用程序
4.?????? 能燒入到系統(tǒng)鏡像中,或是被安裝的sis文件。
使用機上調(diào)試代理, 我們可以使用Carbide.c++ 集成開發(fā)環(huán)境來調(diào)試運行在手機硬件上的應(yīng)用程序,這使得調(diào)試過程更為容易。機上調(diào)試代理可以在所有的S60 3rd 版本的設(shè)備上工作。包括在 UIQ 2nd版本 和 UIQ 3rd 版本的設(shè)備上。
1.10.2.???????????? 編譯、運行應(yīng)用程序的手機版本
在清楚這些基本的概念后,下面我們看看,如何編譯和運行GCCE版本的應(yīng)用程序:
1.?????????????? 編譯這個應(yīng)用程序的GCCE版本.
2.?????????????? 創(chuàng)建Symbian 安裝文件(.sis)。
3.?????????????? 給.sis文件簽名。
4.?????????????? 在s60手機上安裝這個sis文件。
5.?????????????? 運行該應(yīng)用程序。
首先,我們按下面的步驟,在Carbide中,編譯GCCE版本和創(chuàng)建sis文件。
1)?從菜單上選擇 Project > Properties 選項.
2)?在屬性對話框上, 點擊 C/C++ Build。
3)?從 Configuration 下拉菜單中選擇 "S60 3.0 GCCE UREL"。
4)?點擊 OK。
5)?從菜單欄上點擊 Project > Build Project 。
如下圖所示:
Carbide 根據(jù)工程的設(shè)置,創(chuàng)建了一個能在手機上運行的版本。如果編譯的過中沒有出錯,可以在目錄/Symbian/9.2/S60_3rd_FP1/Epoc32/release/gcce/urel中找到已經(jīng)編譯好的可執(zhí)行文件。然后,可以進(jìn)行下一步:生成sis文件。
??? 打開工程視圖,找到sis文件夾中的 .pkg 文件,點右鍵,在彈出菜單中選擇:build PKG file。如下圖所示:
如果邊編譯的過程沒有出錯,可以在sis文件夾中找到經(jīng)過簽名的.sis文件和擴展名為.cer的證書文件和擴展名為.key的密鑰文件。這兩個文件是Carbide自動生成的。
??? 將經(jīng)過簽名的.sis(或.sisx)文件通過USB接口下載到手機(WAP, 郵件附件, 紅外, 藍(lán)牙),然后用文件管理器安裝,如果安裝的時候沒有錯誤提示,我們就可以在手機上運行程序了。
1.10.3.???????????? 在手機上調(diào)試
在真實的手機設(shè)備上調(diào)試比在模擬器上調(diào)試更加準(zhǔn)確,而且不必使用昂貴的硬件調(diào)試設(shè)備。前面我們提到過,在手機上調(diào)試, 需要安裝調(diào)試代理,有兩不同的機上調(diào)試代理,分別為:Application TRK和System TRK
·??? Application TRK—僅僅支持應(yīng)用程序的調(diào)試。
·??? System TRK—不但支持應(yīng)用程序的調(diào)試,還支持有限的ROM調(diào)試。設(shè)備制作商可用它來調(diào)試設(shè)備驅(qū)動程序。
現(xiàn)在,我們來看看:
????????? 如何在手機上安裝調(diào)試代理軟件
??? 打開..Carbide/plugins/com.nokia.Carbide.trk.support_1.2.0.29/trk/s60目錄,可以看到有一個s60_3_1_app_trk_2_7.sisx文件,該文件就是調(diào)試代理(debug agent)的安裝程序,下面我們通過USB接口(或紅外、藍(lán)牙)將這個程序下載到手機上安裝。步驟如下:
1.???????? 將電腦和手機設(shè)備通過USB接口連接。
在手機識別出USB連接線后,設(shè)置手機,讓它從PC上接收文件。
1)?????? 選擇 USB Mode > File Transfer, 然后按OK鍵,這時有通知消息出現(xiàn):手機將處于離線狀態(tài)。
2)?????? 按OK 軟件鍵確認(rèn)該消息。
2.???? 將SISX 文件拷貝到MMC 卡。
3.?????? 用“安全刪除硬件”的方式斷開手機和PC 之間的USB連接。
4.?????? 在手機上,用文件管理器安裝SISX文件。
??????? 在安裝好調(diào)試軟件后,現(xiàn)在就可以開始調(diào)試程序了。
??? PC和手機的通信接口有兩種:藍(lán)牙和USB,由于大多數(shù)的PC機中只有USB接口,下面我們就以USB連接方式來調(diào)試程序。
1.安裝最新的USB連接軟件,例如,S60設(shè)備使用的Nokia PC 套件。
2.用USB線連接Pc 和手機。
3.目標(biāo)設(shè)備被連擊后,在S60設(shè)備上,選擇PC套件作為USB連接模式。
4.下載APP TRK 或 System TRK SISX 文件到手機上。(如果在已經(jīng)下載安裝過該調(diào)試代理,這一步可省略)
5.在PC 上,打開設(shè)備管理,找到S60 手機USB的條目,如下圖所示:
記下端口號(在我們的例子中為COM5),后面我們要用到。 在手機的USB模式列表上選擇PC套件模式。然后在手機上啟動App TRK,將連接方式設(shè)置為USB,如下圖所示:
選擇“back”,然后重新啟動App TRK。
??? 在Carbide集成開發(fā)環(huán)境上(IDE),選擇工具欄上的 調(diào)試按鈕,選擇“debug”,如下圖:
這時,會啟動一個“調(diào)試面板”,我們選擇第一項:“Symbian OS App TRK”,雙擊此項,將會生成一個啟動配置項(launch Configuration),在這個面板的右邊有一些關(guān)于調(diào)試的選項,如下圖所示:
安裝要求填寫這些配置項, 這一步比較容易,有兩點要注意的是:Connection 面板中,Serial port選擇的值(這里為com5)必須是我們前面在設(shè)備管理器中所記錄下來的值。另外,在Installation面板中,需要指明要安裝的文件,這個文件就是我們在前面生成的經(jīng)過簽名的sis文件,如下圖:
1.11.??????????? 用命令行方式編譯、運行GCCE釋放版本
下面我們以SDK自帶的helloworldbasic工程為例子,演示如何用命令行的方式來編譯和運行GCCE版本的程序。
????????? 第一步:創(chuàng)建GCCE釋放版本:
1.?????? 打開一個命令行窗口。
2.?????? 用cd group 進(jìn)入工程的group 目錄。
3.?????? 輸入下面的命令: bldmake bldfiles。
4.???????? 再輸入:abld build gcce urel 或 abld gcce udeb (該命令產(chǎn)生手機上的調(diào)試版本)。上面的編譯腳本創(chuàng)建了一個GCCE版本的應(yīng)用程序,在下面的目錄可找到該文件: Epoc32/release/gcce/urel/
??????? 第二步:創(chuàng)建sis文件
我們通過使用makesis工具來編譯.pkg文件得到.sis文件,在我們的例子中,該pkg文件位于例子中的 /sis目錄下。
1. 打開命令行窗口,并進(jìn)入到HelloWorldBasic.pkg 文件所在的路徑:<S60_SDK_installation_directory>/Symbian/9.2/S60_3rd_FP1/S60ex/helloworldbasic/sis
2. 輸入 makesis helloworldbasic.pkg 命令:
3. 我們可以看到,在該文件夾下生成了一個helloworldbasic.SIS 文件。 ????????? 第三步:用signsis工具為sis文件簽名 在進(jìn)行簽名之前,我們需要兩個文件:私鑰文件和自簽名證書(self signed certificate)文件。這涉及到密碼學(xué)的知識,讀者可自己參考相關(guān)著作。這里,我們用只是makekeys工具生成這兩個文件。makekeys工具在下面的目錄可找到。 <SDK_installation_directory>/Symbian/9.2/S60_3rd_FP1/Epoc32。 1.???????? 為了產(chǎn)生私鑰文件和自簽名認(rèn)證,在命令行下敲入以下命令: 運行完該命令后(可能要花幾分鐘的時間),可以看到,在該目錄下產(chǎn)生了兩個新的文件:mykey.key和mycert.cer。 2.???????? 給sis文件簽名,在命令行下敲入以下命令: ????????? 第四步:在手機上安裝sis文件。 這一步比較簡單, 僅僅將準(zhǔn)備好的sis文件下載到您的手機。這個過程可以通過不同的數(shù)據(jù)通道完成(WAP, 郵件附件, 紅外, 藍(lán)牙, USB接口), 采用何種方式,取決于您的手機。 1.12.??????????? 導(dǎo)入工程 如果symbian c++的開發(fā)者在自己的計算機上已經(jīng)有了各種各樣的symbian工程,并且用codewarrior或者命令行工具鏈編譯過該工程,他們會發(fā)現(xiàn)可以很方便地移植這些工程到Carbide.c++,不需要創(chuàng)建一個新的工程和手工插入這些源文件。Eclipse實現(xiàn)了從集成開發(fā)環(huán)境導(dǎo)入和導(dǎo)出信息的框架,并通過向?qū)韺崿F(xiàn)這個過程。Carbide.c++也實現(xiàn)了這種工具。從菜單欄選擇File->import菜單項,用戶就啟動了一個有很多選項的導(dǎo)入面板。如下圖所示: 例如:如果我們想導(dǎo)入sdk中自帶的filebrowser的例子工程,我們在導(dǎo)入面板中選擇Symbian OS Bld.inf file選項,然后點擊下一步,這時會啟動“文件導(dǎo)入向?qū)А睂υ捒?#xff0c;在對話框中輸入filebrowser工程中的bld.inf文件(通常,這個文件在group目錄中)。 然后,一直點擊“下一步”按鈕,直到這個過程結(jié)束。如果工程被成功導(dǎo)入,在左邊的工程視圖中會出現(xiàn)該工程的信息。
| 文件目錄 | 存放文件類型 |
| data (S60) | 存放資源規(guī)格文件(.rss) |
| Gfx (S60) | 應(yīng)用程序資源文件,例如圖片和聲音文件。 |
| Group | 該目錄存放工程文件 (例如 .mmp?和 bld.inf) |
| Images (UIQ) | 應(yīng)用程序資源文件,例如圖片。 |
| Inc | 該目錄存放頭文件 (typically .h, .hrh?和 .inl) |
| rsrc (UIQ) | 存放資源規(guī)格文件 (.rss, .ra) |
| src | 該目錄存放 .CPP 文件 |
| Test | 存放測試代碼 |
| // 目標(biāo)平臺 PRJ_PLATFORMS WINSCW GCCE // 從工程中輸出的文件 PRJ_EXPORTS // None // 工程定義文件 PRJ_MMPFILES filebrowseapp.mmp // 工程定義文件(測試代碼用) PRJ_TESTMMPFILES ../test/FileBrowseTest.mmp |
| // filebrowseapp.mmp TARGET??????????????filebrowseapp.exe TARGETTYPE??????????exe UID?????????????????0x100039CE 0xE80000A6 ???? VENDORID????????????0 #ifdef __WINSCW__ CAPABILITY??????????AllFiles??//????AllFiles on emulator since no signing is required??????? #else CAPABILITY??????????NONE??????//????No capabilities on hardware - otherwise SIS file signing is required #endif SOURCEPATH??????????../src SOURCE??????????????FileBrowseAppUi.cpp SOURCE??????????????FileBrowseDocument.cpp SOURCE??????????????FileBrowseApplication.cpp SOURCE??????????????FileBrowseBaseView.cpp SOURCE??????????????RFsEngine.cpp SYSTEMINCLUDE???????/epoc32/include USERINCLUDE?????????../inc SOURCEPATH??????????../data START RESOURCE??????filebrowseapp.rss TARGETPATH??????????/resource/apps HEADER END START RESOURCE??????filebrowseapp_reg.rss TARGETPATH??????????/private/10003A3F/apps END START RESOURCE??????filebrowseapp_loc.rss TARGETPATH??????????/resource/apps LANG????????????????SC HEADER END START BITMAP filebrowseapp.mbm TARGETPATH /resource/apps HEADER SOURCEPATH ../gfx SOURCE C16 folder.bmp SOURCE C16 file.bmp SOURCE 8 mask.bmp END LIBRARY?????????euser.lib efsrv.lib cone.lib eikcore.lib eikcoctl.lib eikdlg.lib egul.lib eikctl.lib apparc.lib LIBRARY bafl.lib LIBRARY avkon.lib CommonEngine.lib |
| TARGET | 該關(guān)鍵字指明了目標(biāo)文件(exe或dll文件)的名稱。 |
| TARGETTYPE | 該關(guān)鍵字指明了工程所產(chǎn)生的目標(biāo)文件的類型,在上面的例子中,我們生成了一個可執(zhí)行文件。在大多數(shù)情況下,目標(biāo)文件的類型為dll,exe或是其他的插件(plugin)。 |
| UID | 目標(biāo)(通常指可以執(zhí)行的.exe或.dll文件)具有三個UID,這些UID用來標(biāo)識組件,第一個UID是無須指定的。因為它是編譯工具根據(jù)目標(biāo)的類型自動分配的。所以這里所指定的實際上是UID2,這個值進(jìn)一步指明了目標(biāo)的類型,上面例子中,值(0x100039CE)指明了目標(biāo)文件是一個應(yīng)用程序,Symbian系統(tǒng)使用這個值來標(biāo)識所有的應(yīng)用程序。下一個指定的UID 對每個應(yīng)用程序來說都是唯一的。它標(biāo)識了這個應(yīng)用程序的注冊資源文件和該程序的安裝包文件.pkg。所以為了保證這個值的唯一性, 您必須要向Symbian申請這個UID,由他們負(fù)責(zé)從數(shù)據(jù)庫中為您的應(yīng)用程序分配一個UID。可到Symbian的網(wǎng)站上了解更多的相關(guān)信息。有一些UID的值是用來測試的,例如SDK中的例子:文件系統(tǒng)瀏覽應(yīng)用程序(filesystem browser)所使用的UID為0xE80000A6, 您也可以在測試您的應(yīng)用程序的時候使用這個值,但注意,不要在您的最終產(chǎn)品中使用它。 ? |
| SECUREID | 這是個可選的關(guān)鍵了,上面的例子中沒有出現(xiàn)。該關(guān)鍵字為應(yīng)用程序定義了安全標(biāo)示符,用來指明這個程序可以訪問哪個私有的目錄。如果該關(guān)鍵字沒有使用,用UID3來代替該關(guān)鍵字。 |
| VENDORID | 該關(guān)鍵字是在Symbian OS v9.1版本新增的。用來指定軟件提供商的ID號。該關(guān)鍵字不是必須的,可省略。 |
| CAPABILITY | 這是 Symbian OS 9.1新增加的關(guān)鍵字。該關(guān)鍵字指明了應(yīng)用程序的權(quán)限(或稱作能力,如:查看系統(tǒng)目錄)。大上面的例子中,應(yīng)用程序在模擬器上和在手機上被分配了不同的能力(capability)。在模器上,該程序被賦予了AllFiles 的權(quán)限, 比在手機上運行時,能看到更多的私有文件系統(tǒng)的區(qū)域。沒有被賦予AllFiles 能力的程序不能看到/Sym 目錄下的內(nèi)容。應(yīng)用程序只有在經(jīng)過認(rèn)證(certificate)以后才能獲得AllFiles的能力。關(guān)于認(rèn)證和簽名的內(nèi)容,我們在這一章的后面會講到。 |
| SOURCEPATH和SOURCE | SOURCE關(guān)鍵字指明了有哪些源文件和資源文件需要編譯,而SOURCEPATH關(guān)鍵字指明了這些文件的位置。這個位置既可以是相對路徑(相對于mmp文件),也可以是絕對路徑。 |
| SYSTEMINCLUDE | 這個關(guān)鍵字指定了系統(tǒng)頭文件的位置,系統(tǒng)頭文件通常用#include<>語句包含。 |
| USERINCLUDE | 該關(guān)鍵字的作用類似于SYSTEMINCLUDE,它指明了在用戶自定義頭文件所在的位置。 |
| START RESOURCE…END | START RESOURCE 關(guān)鍵字表明了一個信息塊的開始,這些信息指明了如何編譯資源文件。END 標(biāo)示該信息塊結(jié)束。 |
| TARGETPATH | 該關(guān)鍵字用來指定被編譯后的資源文件的位置。注意: 由于安全方面的考慮,所有的可執(zhí)行代碼(exe或dll)都從手機上的/sys/bin/ 目錄運行。可執(zhí)行代碼不需要用該關(guān)鍵字指定位置。TARGETPATH 關(guān)鍵字僅僅用來指定編譯后的資源文件的位置。 |
| HEADER | 這是一個可選的關(guān)鍵字,當(dāng)它被使用的時候,系統(tǒng)將會在/epoc32/include/路徑下創(chuàng)建資源頭文件(.rsg)。這個頭文件包含了允許以C++代碼引用特定資源的標(biāo)識符。 |
| LIBRARY | 這個關(guān)鍵字列出了應(yīng)用程序需要鏈接的庫文件。 |
| STATICLIBRARY | 該關(guān)鍵字用來指定需要被靜態(tài)鏈接的庫文件 (庫文件中的代碼會被鏈接到您的程序中,而不是需要時才裝載到內(nèi)存)。 |
| START BITMAP…END | 這一節(jié)包含了應(yīng)用程序圖標(biāo)所使用的位圖(bitmap),以及如何將這些位圖編譯成.mbm(Symbian系統(tǒng)專有的圖像格式)的方式。 |
| EPOCSTACKSIZE | 該關(guān)鍵字是可選的,我們上面的例子中并未用到。在以前的Symbian OS 版本中,缺省的棧大小為0X5000字節(jié)。在v9.1版本中,缺省值為0x2000。為了增加棧的大小,可以使用該關(guān)鍵字。例如:EPOCSTACKSIZE 0x5000 。要注意的是, 對棧設(shè)置僅僅對真實設(shè)備有效,但對模擬器無效。 |
| EPOCHEAPSIZE | 該關(guān)鍵字也是可選的,我們上面的例子中并未用到。這個關(guān)鍵字指定了應(yīng)用程序可以使用的最大、最小堆空間。缺省情況下,4K為最小的尺寸,1M為最大的尺寸。 |
3. 我們可以看到,在該文件夾下生成了一個helloworldbasic.SIS 文件。 ????????? 第三步:用signsis工具為sis文件簽名 在進(jìn)行簽名之前,我們需要兩個文件:私鑰文件和自簽名證書(self signed certificate)文件。這涉及到密碼學(xué)的知識,讀者可自己參考相關(guān)著作。這里,我們用只是makekeys工具生成這兩個文件。makekeys工具在下面的目錄可找到。 <SDK_installation_directory>/Symbian/9.2/S60_3rd_FP1/Epoc32。 1.???????? 為了產(chǎn)生私鑰文件和自簽名認(rèn)證,在命令行下敲入以下命令: 運行完該命令后(可能要花幾分鐘的時間),可以看到,在該目錄下產(chǎn)生了兩個新的文件:mykey.key和mycert.cer。 2.???????? 給sis文件簽名,在命令行下敲入以下命令: ????????? 第四步:在手機上安裝sis文件。 這一步比較簡單, 僅僅將準(zhǔn)備好的sis文件下載到您的手機。這個過程可以通過不同的數(shù)據(jù)通道完成(WAP, 郵件附件, 紅外, 藍(lán)牙, USB接口), 采用何種方式,取決于您的手機。 1.12.??????????? 導(dǎo)入工程 如果symbian c++的開發(fā)者在自己的計算機上已經(jīng)有了各種各樣的symbian工程,并且用codewarrior或者命令行工具鏈編譯過該工程,他們會發(fā)現(xiàn)可以很方便地移植這些工程到Carbide.c++,不需要創(chuàng)建一個新的工程和手工插入這些源文件。Eclipse實現(xiàn)了從集成開發(fā)環(huán)境導(dǎo)入和導(dǎo)出信息的框架,并通過向?qū)韺崿F(xiàn)這個過程。Carbide.c++也實現(xiàn)了這種工具。從菜單欄選擇File->import菜單項,用戶就啟動了一個有很多選項的導(dǎo)入面板。如下圖所示: 例如:如果我們想導(dǎo)入sdk中自帶的filebrowser的例子工程,我們在導(dǎo)入面板中選擇Symbian OS Bld.inf file選項,然后點擊下一步,這時會啟動“文件導(dǎo)入向?qū)А睂υ捒?#xff0c;在對話框中輸入filebrowser工程中的bld.inf文件(通常,這個文件在group目錄中)。 然后,一直點擊“下一步”按鈕,直到這個過程結(jié)束。如果工程被成功導(dǎo)入,在左邊的工程視圖中會出現(xiàn)該工程的信息。
總結(jié)
以上是生活随笔為你收集整理的symbian系统开发教程(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC一一添加WM_USER自定义消息
- 下一篇: MFC 类库结构 总结