Symbian OS簡介

原文地址:http://blog.csdn.net/wh_xiexing/archive/2007/11/15/1887002.aspx

1.1.    Symbian系統簡介
       當前有很多手機運行Symbian OS,數量甚至超出您的想象。到目前爲止已經有超過7500 萬、100 多種型號的手機運行Symbian OS。這些電話大部分都形態迥異:有的配有鍵盤,有的採用筆控輸入;有的配備TFT 彩色屏幕,有的則配備黑白LCD 顯示屏;有的擅長於音樂播放,有的專注於電子遊戲、圖像處理甚至電視功能;有的手機面向個人消費者,有的專門針對商務用戶;有的是爲單手操作設計的,有的是爲雙手操作設計的——種類繁多不一而足。Symbian OS 手機受到廣大消費者的喜愛。僅2005 年就售出3400 萬部Symbian OS 手機——這相當於每不到一秒鐘就有一部Symbian OS 手機被出售。網絡運行商同樣青睞Symbian OS 手機。全球有250 多個移動電話網絡運行商選擇了Symbian OS 手機。所有這些都表明現在市面上有成千上萬的手機是基於Symbian OS 的,所以爲symbian系統開發的應用程序會得到廣泛的應用。現在已經有5400 多種商業性應用軟件可供Symbian OS 手機應用。本教程旨在爲您提供一些編寫Symbian OS 應用程序的入門知識。希望它會對您有所裨益,爲開發Symbian OS 應用程序打下一個良好的基礎。
1.2.    開發語言
       從開發初期起,Symbian OS 就是專門爲移動電話而設計的,因此從彈性的電源管理(resilient power-management)到內存資源的謹慎使用,全都是爲了滿足手機操作系統的特定需求。作爲Symbian OS 的開發人員,您將受益於Symbian OS 這樣一個專門爲移動設備而創立並隨着市場一起發展的開發平臺。Symbian OS 最“基本”的編程語言是一種改進的C++。Symbian OS C++ 經過特殊設計與優化,以利於降低手機電池能耗和內存使用。比如,爲了節約電池耗電,所有Symbian OS 程序都是基於事件(event-based) 的,而當沒有任何程序進行事件處理時,CPU 就進入休眠。您在開發軟件時也可以使用Java、Python、.NET(使用Visual Basic 和帶AppForge’s Crossfire 的C#)、Perl、OPL和Adobe Flash,但是Symbian OS C++ 是最強大(它允許最大限度的利用操作系統提供的所有功能)也是最快捷(因爲它直接以編譯碼運行,而無需在運行時進行解譯)的語言。這也就是爲什麼我們在本書中選擇C++ 來向您演示如何進行Symbian OS 開發的原因。好了,閒言少敘,讓我們言歸正傳。
 
1.3.    準備工作
       首先您需要有一臺電腦能創建並測試在Symbian OS 手機上運行的應用程序。這也就是說電腦要有一個較快的CPU 處理器(至少1.5GHz)和相當大的RAM(512MB或更大)以及一個大容量硬盤(至少有2GB 剩餘空間)。該電腦必須能運行Windows 2000 或XP 操作系統。然後您需要開發軟件來幫助您編寫代碼並進行編譯。這可通過包含編輯程序(editor)、編譯程序(compiler) 和鏈接程序(linker) 的集成開發環境(IDE) 來完成。在這推薦兩種適合Symbian OS 程序開發的IDE。對於開發非商業用途的Symbian OS 應用程序,Nokia 的Carbide.c++ Express 版本是最理想不過了,它建立在Eclipse IDE 的基礎上,供免費下載。對於使用Visual Studio.NET 2003 的程序員來說,也可選擇Carbide.vs。這是一套基於Microsoft Visual Studio .NET2003 IDE 的工具,用於開發S60 和Series 80 軟件。您還需要軟件開發包(SDK), 專門用來編寫和創建Symbian OS 應用程序。基於不同手機類型,有不同版本的SDK 供選擇,具體使用哪個SDK 請見以下幾頁的說明。如果您還沒有決定具體的手機類型或平臺而無法確定選擇哪個SDK,我們建議您一開始可使用S60 和UIQ SDK。如果您想爲最新款的手機(如Nokia 3250、E60、E61、N71、N80、N91、N73 或N93)編寫應用程序,那就選擇基於Symbian OS v9 的SDK(UIQ 3 或S60 第三版),要麼您就選擇更低版本的SDK(UIQ 2.1 或S60 第二版)。
       不同版本的Symbian OS 之間有什麼區別?主要的分別是,在Symbian OS 9.1 版本之前,爲較低版本的Symbian OS編寫的軟件往往可在較高版本上運行,但9.1 版本與以往的版本截然不同。如要運行在9.1 版的Symbian OS 上,應用程序必須稍加修改並進行再次編譯。       接下來您需要下載您所選擇的IDE 和SDK。以下章節將向您介紹如何在互聯網上找到這些工具。
 
1.4.    S60 平臺
    S60 平臺是一個完整的應用程序包(package),用戶接口和構建於Symbian 系統技術的開發工具。S60 用戶接口 (UI) 經過精心的設計,方便用戶使用,便於單手操作。從用戶的角度看來,該平臺最大的特點在於它的用戶界面:大的彩屏和各種輸入鍵(兩個軟件鍵, 五方位的導航鍵,和幾個專用的鍵)。 單手操作和大彩屏的優點能使應用程序開發者提供更有吸引力的內容和提供更方便的導航功能,同時增加用戶使用手機時的愉快體驗。
    目前,s60平臺上已經存在各種各樣的應用軟件. 其中最重要的有:高級智能電話應用程序,個人信息管理應用程序(PIM)(例如, 電話簿,日曆, 相冊), 短信, 網頁瀏覽, 電子郵件和應用程序安裝引擎,它能夠讓您自由地從電腦上下載軟件到您的手機上。
    S60 第三版本支持兩種不同的外觀:
Ø         QVGA Portrait (240x320)
Ø         QVGA Landscape (320x240)
1.5.    如何選擇SDK
       基於Symbian OS 的手機外型各異,用戶界面(UI) 也不盡相同。爲了給特定的用戶界面編寫應用程序,您必須選擇特定的SDK(儘管應用程序的引擎往往與用戶界面無關)。大部分運行Symbian OS 的手機採用的是S60 用戶界面並使用鍵盤操作。S60 已經發布了一系列版本,選擇正確的S60 SDK 和相應的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
您可在以下網站查到每一系列S60 SDK 所包含的手機型號列表:www.symbian.com/developer/sdks/sdks_series60.asp
       其它大部分基於Symbian OS 的手機採用筆控輸入的UIQ 用戶界面。以下網站列出了基於各版本的UIQSDK 的手機機型www.symbian.com/developer/sdks/sdks_uiq.asp
       您可以到以Nokia的網站下載SDK www.forum.nokia.com
 
1.6.Carbide.c++ 集成開發環境(IDE) 
       前面已經提到了各種集成開發環境,這裏我們主要介紹Carbide.c++的集成開發環境。Carbide.c++的集成開發環境(IDE)基於Eclipse集成開發環境版本3。增添了能使Eclipse處理symbian c++ 源文件和編譯Symbian工程的插件。這些插件分爲以下幾類:
Ø         C/C++開發工具箱(CDT)。這是一個使得Eclipse管理和編譯symbian工程的工具集
Ø         Symbian插件。這些插件由symbian開發,使得eclipse能夠處理Eclipse C++的概念,同時提供對Symbian操作系統軟件開發工具箱和Symbian工具鏈的支持。
Ø         Nokia插件。由Nokia開發,提供對Symbian操作系統工具箱的更多支持。插件實現了C++編譯器,symbian系統的調試器,並且加入了Carbide.c++系列產品的商業版本的高級特性。
 
       很明顯,因爲Carbide.c++是基本的Eclipse集成開發環境,開發者可以進一步定製其它的商業或免費的插件,比如說,一個版本控制系統,一個UML建模系統等。
       Carbide.c++有自己的安裝程序,所以安裝比較簡單。在啓動這個產品之後,用戶看到的集成開發環境和Eclipse開發環境十分類似,如下圖所示,因爲Carbide.c++是設計用於處理symbian c++應用程序的,所以其集成開發環境的左邊顯示的是c/c++工程視圖,這個視圖用於顯示構成一個典型symbian c++工程源文件、頭文件,資源文件。

關於eclipse平臺和插件的相關知識,不是本教程所關心的重點, 有興趣的讀者可參考相關的其他著述。
1.7.    開發環境的構建
Ø         第一步:安裝JDK5.0
Ø         第二步:安裝ActivePerl(需要5.6.1以上版本)
Ø         第三步:安裝Symbian sdk
Ø         第三步:安裝Carbide.c++1.2 版本。 Carbide有不同的版本。 其中Express版本是免費安裝的,但不支持UI設計功能,也不支持在手機上調試的功能。
 
注意:這幾個文件需要放在一個目錄下面。否則,在編譯程序的過程中,可能會出現難以預料的錯誤。
 
 
1.8.    文件目錄的佈局
    在動手寫代碼之前,我們有必要了解工程的文件組織結構。如果您看過SDK中的例子工程,或是用IDE的工程嚮導創建一個UI應用程序,您就會了解一個典型的工程文件結構佈局是怎樣的。
    當工程增長到一定程度的時候,好的文件目錄佈局將有助於幫助跟蹤代碼的變更。工程中包含了各種不同類型的文件,包括源文件和其他類型的文件,我們通常將這些文件分開來存放,下面我們簡短地介紹這些文件。
    資源文件, 例如 .bmp 或 .wav 文件, 通常被單獨地存放在一個目錄下面。 測試代碼也會和產品代碼分開來存放。所以,一個典型的UI 應用程序會有如下這樣一些目錄結構和文件。
文件目錄 存放文件類型
data (S60) 存放資源規格文件(.rss)
Gfx (S60) 應用程序資源文件,例如圖片和聲音文件。
Group 該目錄存放工程文件 (例如 .mmp 和 bld.inf)
Images (UIQ) 應用程序資源文件,例如圖片。
Inc 該目錄存放頭文件 (typically .h, .hrh 和 .inl)
rsrc (UIQ)  存放資源規格文件 (.rss, .ra)
src  該目錄存放 .CPP 文件
Test 存放測試代碼


在group 目錄下面,有兩個重要的文件,這兩個文件都與創建Symbian工程相關:
如果,需要在命令行編譯工程,必須創建如下兩個工程文件:
·         工程定義文件 (.mmp file),這個文件對要編譯的工程進行描述,並定義要構建的資源文件。該文件是環境無關的,編譯工具用它來生成針對各種目標環境下的make files文件。
·         組件描述文件(bld.inf), 這個文件列出了一組相關的工程, 幷包含一些編譯指令.
CodeWarrior 和 Carbide.c++ 都能夠導入工程定義文件,並用它來在IDE環境下創建工程。下面詳細描述這些文件的格式。
 
Ø         組件(component)描述文件: bld.inf
    Bld.inf 是一個文本文件。它的內容非常繁瑣,主要包括工程定義文件mmp和其他的任何編譯工具所需要的文件。該文件分爲多個節,其中,mmp文件列表在PRJ_MMPFILES節中。即使一個工程文件只包含一個mmp文件,bld文件仍然是必須的。下面是一個典型的bld.inf文件。
 
// 目標平臺
PRJ_PLATFORMS
WINSCW GCCE

// 從工程中輸出的文件
PRJ_EXPORTS
// None

// 工程定義文件
PRJ_MMPFILES
filebrowseapp.mmp

// 工程定義文件(測試代碼用)
PRJ_TESTMMPFILES
../test/FileBrowseTest.mmp

    在上面的例子中, 如PRJ_PLATFORMS 聲明所示,默認情況下工程被編譯爲針對WINSCW平臺和 GCC-E平臺的執行代碼。 當您用CodeWarrior爲模擬器編譯代碼的時候,您使用的是WINSCW 平臺, WINSCW的來由是,最終的代碼運行於Windows, 單線程模式(in a Single process),並用CodeWarrior編譯。
    平臺的名稱用來標識最終的可執行代碼所運行的那個平臺。 所以, 當上面的代碼被編譯完後,可執行程序被放在 /epoc32/release/winscw 目錄下面(根據是調試(debug)版本還是釋放(release)版本,被放在 /udeb 或 /urel 子目錄下面)。
如果代碼是針對手機硬件的,需要選用GCCE平臺。這時,最終的可執行代碼被放到/epoc32/release/gcce/目錄下面。
Ø         工程描述文件 (mmp)
 
mmp 文件中的每個語句都以一個關鍵字開頭。下面是一個典型的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 該關鍵字指明瞭目標文件(exe或dll文件)的名稱。
TARGETTYPE 該關鍵字指明瞭工程所產生的目標文件的類型,在上面的例子中,我們生成了一個可執行文件。在大多數情況下,目標文件的類型爲dll,exe或是其他的插件(plugin)。
UID 目標(通常指可以執行的.exe或.dll文件)具有三個UID,這些UID用來標識組件,第一個UID是無須指定的。因爲它是編譯工具根據目標的類型自動分配的。所以這裏所指定的實際上是UID2,這個值進一步指明瞭目標的類型,上面例子中,值(0x100039CE)指明瞭目標文件是一個應用程序,Symbian系統使用這個值來標識所有的應用程序。下一個指定的UID 對每個應用程序來說都是唯一的。它標識了這個應用程序的註冊資源文件和該程序的安裝包文件.pkg。所以爲了保證這個值的唯一性, 您必須要向Symbian申請這個UID,由他們負責從數據庫中爲您的應用程序分配一個UID。可到Symbian的網站上了解更多的相關信息。有一些UID的值是用來測試的,例如SDK中的例子:文件系統瀏覽應用程序(filesystem browser)所使用的UID爲0xE80000A6, 您也可以在測試您的應用程序的時候使用這個值,但注意,不要在您的最終產品中使用它。  
SECUREID 這是個可選的關鍵了,上面的例子中沒有出現。該關鍵字爲應用程序定義了安全標示符,用來指明這個程序可以訪問哪個私有的目錄。如果該關鍵字沒有使用,用UID3來代替該關鍵字。
VENDORID 該關鍵字是在Symbian OS v9.1版本新增的。用來指定軟件提供商的ID號。該關鍵字不是必須的,可省略。
CAPABILITY 這是 Symbian OS 9.1新增加的關鍵字。該關鍵字指明瞭應用程序的權限(或稱作能力,如:查看系統目錄)。大上面的例子中,應用程序在模擬器上和在手機上被分配了不同的能力(capability)。在模器上,該程序被賦予了AllFiles 的權限, 比在手機上運行時,能看到更多的私有文件系統的區域。沒有被賦予AllFiles 能力的程序不能看到/Sym 目錄下的內容。應用程序只有在經過認證(certificate)以後才能獲得AllFiles的能力。關於認證和簽名的內容,我們在這一章的後面會講到。
SOURCEPATH和SOURCE SOURCE關鍵字指明瞭有哪些源文件和資源文件需要編譯,而SOURCEPATH關鍵字指明瞭這些文件的位置。這個位置既可以是相對路徑(相對於mmp文件),也可以是絕對路徑。
SYSTEMINCLUDE 這個關鍵字指定了系統頭文件的位置,系統頭文件通常用#include<>語句包含。
USERINCLUDE 該關鍵字的作用類似於SYSTEMINCLUDE,它指明瞭在用戶自定義頭文件所在的位置。
START RESOURCE…END  START RESOURCE 關鍵字表明瞭一個信息塊的開始,這些信息指明瞭如何編譯資源文件。END 標示該信息塊結束。
TARGETPATH 該關鍵字用來指定被編譯後的資源文件的位置。注意: 由於安全方面的考慮,所有的可執行代碼(exe或dll)都從手機上的/sys/bin/ 目錄運行。可執行代碼不需要用該關鍵字指定位置。TARGETPATH 關鍵字僅僅用來指定編譯後的資源文件的位置。
HEADER 這是一個可選的關鍵字,當它被使用的時候,系統將會在/epoc32/include/路徑下創建資源頭文件(.rsg)。這個頭文件包含了允許以C++代碼引用特定資源的標識符。
LIBRARY 這個關鍵字列出了應用程序需要鏈接的庫文件。
STATICLIBRARY 該關鍵字用來指定需要被靜態鏈接的庫文件 (庫文件中的代碼會被鏈接到您的程序中,而不是需要時才裝載到內存)。
START BITMAP…END 這一節包含了應用程序圖標所使用的位圖(bitmap),以及如何將這些位圖編譯成.mbm(Symbian系統專有的圖像格式)的方式。
EPOCSTACKSIZE 該關鍵字是可選的,我們上面的例子中並未用到。在以前的Symbian OS 版本中,缺省的棧大小爲0X5000字節。在v9.1版本中,缺省值爲0x2000。爲了增加棧的大小,可以使用該關鍵字。例如:EPOCSTACKSIZE 0x5000 。要注意的是, 對棧設置僅僅對真實設備有效,但對模擬器無效。
EPOCHEAPSIZE 該關鍵字也是可選的,我們上面的例子中並未用到。這個關鍵字指定了應用程序可以使用的最大、最小堆空間。缺省情況下,4K爲最小的尺寸,1M爲最大的尺寸。


1.9.    第一個程序: HellowWorld
1.9.1.    創建工程
運行Carbide 集成開發環境,在菜單欄上選擇file->New->Symbian OS C++ project,出現如下圖所示的對話框:

       我們選擇帶用戶界面設計器的圖形用戶界面應用程序(Carbide Express 版本不支持用戶界面設計的功能)。然後點擊“下一步”按鈕。出現下面的對話框:

 
用戶選擇一個sdk的版本(筆者的機器上安裝的是s60_3rd_FP1版本的sdk)。繼續下一步:

按下一步,繼續:

選擇一個空的界面,這樣我們可以自由地在上面添加控件。下面的步驟一直按“下一步”,直到完成。
1.9.2.    在模擬器上運行和調試
    工程建立完成後,就可以構建(build)工程了。在將程序放到手機上運行之前,我們通常需要先在模擬器上運行、調試程序。模擬器是SDK附帶的一個軟件,能夠模擬真實手機的運行情況。
    在工程透視圖中,選中工程,點擊右鍵,將活動構建設置爲 Emulator Debug(Winscw)。如下圖所示:

         這樣,編譯出來的程序版本纔是針對模擬器的。設置後,可以構建(build)工程了:在工程透視圖中選中工程,點擊右鍵,選擇“build Target Only”(只編譯模擬器版本,節省時間)。
 
最後,點擊工具欄上的運行按鈕 ,選擇Run As->1 Run Symbian OS Application
 
 
 
 
 
Carbide 啓動模擬器, 這個過程需要持續幾十秒到幾分種,依賴機器的配置。在模擬器啓動後,點擊模擬器上的軟件鍵 ,模擬器會出現下面的界面:


選擇Installed 選項後,可以看到應用程序的圖標:


在模擬器上點擊按鈕,運行該程序。
1.10.            在手機上運行和調試
1.10.1.             基本概念
       能夠在模擬器上運行、調試程序後,您可能想要在真實的手機上運行您的程序。但在這之前,先需要搞清以下幾個基本概念:
Ø         GCCE版本和ARM版本:
              在真實設備上運行的程序版本不同於我們在模擬器上運行的程序版本,在設備上運行的版本必須是GCCE版本或ARM版本。其中GCCE版本是用SDK 自帶的編譯器的,使用它不需要付費,而ARM版本是專門針對ARM 平臺的,代碼經過優化,性能優於GCCE版本的程序,但需要付費。
Ø         .sis文件和.pkg:
              創建應用程序的GCCE 版本以後,需要創建一個Symbian 安裝文件(.sis)。從本質上來講,.sis文件只是一個壓縮文件, 它包含了組成應用程序所需的exe,dll,rss文件,和一些手機接收應用程序時所必須的信息(例如:語言種類,應用程序的UID)。現在的問題是,我們根據什麼信息來創建這個sis文件呢?答案在於pkg文件, 在創建這個文件之前,先需要創建一個pkg文件,pkg文件中包含了一些有用的信息,包括將工程文件拷貝到手機的哪個目錄下面,程序的版本號等。
Ø         簽名(sign):
       在開發s60 3rd版本的應用程序時,所有的 .sis 文件在安裝到手機之前,必須被簽名。如果您的程序沒有用到capability或只用到了對所有的用戶都開放的功能(utility),您可以使用自簽名認證(Self Signed certificate)。當在自己的手機上調試程序時,這種方法特別管用。
Ø         機上調試代理(on-device debug agent):
    如果想要在真實的手機設備上調試程序,需要在手機上安裝機上調試代理,這個手機上的代理程序通過藍牙或USB串行鏈路與調試器通信,在Carbide.c++調試器和目標機器之間的起到接口的作用。調試代理提供以下功能:
1.       運行在Symbian 系統上作爲調試代理。
2.       爲Symbian系統提供一個穩定的集成的接口
3.       能被用來在真實的設備上調試應用程序
4.       能燒入到系統鏡像中,或是被安裝的sis文件。
使用機上調試代理, 我們可以使用Carbide.c++ 集成開發環境來調試運行在手機硬件上的應用程序,這使得調試過程更爲容易。機上調試代理可以在所有的S60 3rd 版本的設備上工作。包括在 UIQ 2nd版本 和 UIQ 3rd 版本的設備上。  
 
1.10.2.             編譯、運行應用程序的手機版本
在清楚這些基本的概念後,下面我們看看,如何編譯和運行GCCE版本的應用程序:
1.               編譯這個應用程序的GCCE版本.
2.               創建Symbian 安裝文件(.sis)。
3.               給.sis文件簽名。
4.               在s60手機上安裝這個sis文件。
5.               運行該應用程序。
首先,我們按下面的步驟,在Carbide中,編譯GCCE版本和創建sis文件。
1) 從菜單上選擇 Project > Properties 選項.
2) 在屬性對話框上, 點擊 C/C++ Build。
3) 從 Configuration 下拉菜單中選擇 "S60 3.0 GCCE UREL"。
4) 點擊 OK。
5) 從菜單欄上點擊 Project > Build Project 。
如下圖所示:
 


Carbide 根據工程的設置,創建了一個能在手機上運行的版本。如果編譯的過中沒有出錯,可以在目錄/Symbian/9.2/S60_3rd_FP1/Epoc32/release/gcce/urel中找到已經編譯好的可執行文件。然後,可以進行下一步:生成sis文件。
    打開工程視圖,找到sis文件夾中的 .pkg 文件,點右鍵,在彈出菜單中選擇:build PKG file。如下圖所示:
 
如果邊編譯的過程沒有出錯,可以在sis文件夾中找到經過簽名的.sis文件和擴展名爲.cer的證書文件和擴展名爲.key的密鑰文件。這兩個文件是Carbide自動生成的。
    將經過簽名的.sis(或.sisx)文件通過USB接口下載到手機(WAP, 郵件附件, 紅外, 藍牙),然後用文件管理器安裝,如果安裝的時候沒有錯誤提示,我們就可以在手機上運行程序了。
1.10.3.             在手機上調試
             在真實的手機設備上調試比在模擬器上調試更加準確,而且不必使用昂貴的硬件調試設備。前面我們提到過,在手機上調試, 需要安裝調試代理,有兩不同的機上調試代理,分別爲:Application TRK和System TRK
·    Application TRK—僅僅支持應用程序的調試。
·    System TRK—不但支持應用程序的調試,還支持有限的ROM調試。設備製作商可用它來調試設備驅動程序。
現在,我們來看看:
Ø         如何在手機上安裝調試代理軟件
    打開..Carbide/plugins/com.nokia.Carbide.trk.support_1.2.0.29/trk/s60目錄,可以看到有一個s60_3_1_app_trk_2_7.sisx文件,該文件就是調試代理(debug agent)的安裝程序,下面我們通過USB接口(或紅外、藍牙)將這個程序下載到手機上安裝。步驟如下:
1.         將電腦和手機設備通過USB接口連接。
在手機識別出USB連接線後,設置手機,讓它從PC上接收文件。
1)       選擇 USB Mode > File Transfer, 然後按OK鍵,這時有通知消息出現:手機將處於離線狀態。
2)       按 OK 軟件鍵確認該消息。
2.     將SISX 文件拷貝到MMC 卡。
3.       用“安全刪除硬件”的方式斷開手機和PC 之間的USB連接。
4.       在手機上,用文件管理器安裝SISX文件。
 
Ø       在安裝好調試軟件後,現在就可以開始調試程序了。
    PC和手機的通信接口有兩種:藍牙和USB,由於大多數的PC機中只有USB接口,下面我們就以USB連接方式來調試程序。
1.安裝最新的USB連接軟件,例如,S60設備使用的Nokia PC 套件。
2.用USB線連接Pc 和手機。
3.目標設備被連擊後,在S60設備上,選擇PC套件作爲USB連接模式。
4.下載APP TRK 或 System TRK SISX 文件到手機上。(如果在已經下載安裝過該調試代理,這一步可省略)
5.在PC 上,打開設備管理,找到S60 手機USB的條目,如下圖所示:

記下端口號(在我們的例子中爲COM5),後面我們要用到。 在手機的USB模式列表上選擇PC套件模式。然後在手機上啓動App TRK,將連接方式設置爲USB,如下圖所示:

 


選擇“back”,然後重新啓動App TRK。
    在Carbide集成開發環境上(IDE),選擇工具欄上的 調試按鈕,選擇“debug”,如下圖:
  這時,會啓動一個“調試面板”,我們選擇第一項:“Symbian OS App TRK”,雙擊此項,將會生成一個啓動配置項(launch Configuration),在這個面板的右邊有一些關於調試的選項,如下圖所示:

  安裝要求填寫這些配置項, 這一步比較容易,有兩點要注意的是:Connection 面板中,Serial port選擇的值(這裏爲com5)必須是我們前面在設備管理器中所記錄下來的值。另外,在Installation面板中,需要指明要安裝的文件,這個文件就是我們在前面生成的經過簽名的sis文件,如下圖:

1.11.            用命令行方式編譯、運行GCCE釋放版本
下面我們以SDK自帶的helloworldbasic工程爲例子,演示如何用命令行的方式來編譯和運行GCCE版本的程序。
 
Ø         第一步:創建GCCE釋放版本:
1.       打開一個命令行窗口。
2.       用cd group 進入工程的group 目錄。
3.       輸入下面的命令: bldmake bldfiles。
4.         再輸入:abld build gcce urel 或 abld gcce udeb (該命令產生手機上的調試版本)。上面的編譯腳本創建了一個GCCE版本的應用程序,在下面的目錄可找到該文件: Epoc32/release/gcce/urel/
 
Ø       第二步:創建sis文件
       我們通過使用makesis工具來編譯.pkg文件得到.sis文件,在我們的例子中,該pkg文件位於例子中的 /sis目錄下。
 
1. 打開命令行窗口,並進入到HelloWorldBasic.pkg 文件所在的路徑:<S60_SDK_installation_directory>/Symbian/9.2/S60_3rd_FP1/S60ex/helloworldbasic/sis
2. 輸入 makesis helloworldbasic.pkg 命令:
3. 我們可以看到,在該文件夾下生成了一個helloworldbasic.SIS 文件。
 
Ø         第三步:用signsis工具爲sis文件簽名
       在進行簽名之前,我們需要兩個文件:私鑰文件和自簽名證書(self signed certificate)文件。這涉及到密碼學的知識,讀者可自己參考相關著作。這裏,我們用只是makekeys工具生成這兩個文件。makekeys工具在下面的目錄可找到。
<SDK_installation_directory>/Symbian/9.2/S60_3rd_FP1/Epoc32。
1.         爲了產生私鑰文件和自簽名認證,在命令行下敲入以下命令:

運行完該命令後(可能要花幾分鐘的時間),可以看到,在該目錄下產生了兩個新的文件:mykey.key和mycert.cer。
2.         給sis文件簽名,在命令行下敲入以下命令:

 
Ø         第四步:在手機上安裝sis文件。
       這一步比較簡單, 僅僅將準備好的sis文件下載到您的手機。這個過程可以通過不同的數據通道完成(WAP, 郵件附件, 紅外, 藍牙, USB接口), 採用何種方式,取決於您的手機。
 
1.12.            導入工程
       如果symbian c++的開發者在自己的計算機上已經有了各種各樣的symbian工程,並且用codewarrior或者命令行工具鏈編譯過該工程,他們會發現可以很方便地移植這些工程到Carbide.c++,不需要創建一個新的工程和手工插入這些源文件。Eclipse實現了從集成開發環境導入和導出信息的框架,並通過嚮導來實現這個過程。Carbide.c++也實現了這種工具。從菜單欄選擇File->import菜單項,用戶就啓動了一個有很多選項的導入面板。如下圖所示:

例如:如果我們想導入sdk中自帶的filebrowser的例子工程,我們在導入面板中選擇Symbian OS Bld.inf file選項,然後點擊下一步,這時會啓動“文件導入嚮導”對話框,在對話框中輸入filebrowser工程中的bld.inf文件(通常,這個文件在group目錄中)。

然後,一直點擊“下一步”按鈕,直到這個過程結束。如果工程被成功導入,在左邊的工程視圖中會出現該工程的信息。


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wh_xiexing/archive/2007/11/15/1887002.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章