研習之前不免會產生許多的想法,比如BREW是做什麼的?可以和現有的平臺作什麼比較?如果可以的話,那它和J2EE、symbian、WinCE、EMP有什麼區別和聯繫?它的流程和處理機制又是怎樣的呢?
首先,高通的官方解釋就是Binary Runtime Environment for Wireless,我們就可以知道它是用於無線通訊設備的高效的運行時集成開發環境。整個的BREW系統是由開發平臺、運行平臺、服務器三個部分組成的。開發平臺就是我們所說的BREW SDK,用來在PC端開發可以在平臺上運行的程序。運行平臺則是可以運行在移動終端上的BREW運行環境,它的核心是Porting Kit。服務器是連接開發平臺和運行平臺的樞紐,開發平臺開發出來的BREW程序放在服務器上,以便運行平臺的用戶通過無線網絡下載該應用程序,其核心是ADS(Application Download Server)服務器,ADS和其他的輔助工具統稱爲BDS(BREW Distribution System)系統。
圖1 BREW三要素之間的關係
其實對BDS系統我還沒有深入的瞭解,以後有機會的話也許可以在此深入一下了。
BERW的系統結構不過如此,不過對於一般的開發者來說更希望瞭解多一些有關SDK方面的東西,目前SDK最新的版本是3.1,詳細可以去這裏http://brew.qualcomm.com/brew/en/developer/support/developer_support.html下載,它主要是有7個部分組成的。
1. BREW AEE 可擴展的面向對象的應用程序開發和執行環境。
2. BREW Emulator
3. Device Configurator
4. Resource Editor
5. MIF Editor
6. BREW 頭文件
7. Visual Studio插件
不過在2.1以前,其中的大部分甚至全部都一起打包在SDK中,不過3.0以後就分開了,需要的時候可以去官網查詢,記住這個地址很有用http://www.qualcomm.com 其次,也就是這兩天總結的一些小的結果,畢竟現在是學習的階段,暫時還沒有很多自己的思想,我想如果時機成熟的話還是會領悟一些更多的東西的。
BREW應用程序的流程是怎麼樣的呢!大略的可以分爲三點,由於BREW是出於事件驅動的機制,只有當觸發事件被捕獲的時候才能繼續,這就需要AEEClassCreatInstance()來做這個事情了,他的引用是AEEModGen.c,然後會使用AEEApplet_new()來創建一個小程序的實例,通過這個實例來控制對事件的處理,最後,在***_HandleEvent()裏來處理這些Applet的事件。
在其中請記住最重要的幾個函數:
AEEApplet_New(sizeof(/*AEEApplet*/ hb_app), ClsId, pIShell,po,(IApplet**)ppObj, (AEEHANDLER)helloBREW_HandleEvent,(PFNFREEAPPDATA)hb_FreeAppData)
static boolean helloBREW_HandleEvent(IApplet *pi, AEEEvent eCode, uint16 wParam, uint32 dwParam)
static boolean hb_InitAppData(hb_app *phb)
{
phb->m_pIStat = NULL;
return TRUE;
}
static void hb_FreeAppData(IApplet *pia)
{
hb_app *phb = (hb_app*)pia;
if(phb->m_pIStat)
{
ISTATIC_Release(phb->m_pIStat);
phb->m_pIStat = NULL;
}
}