BREW 學習之路-解析BREW 學習過程
東方欲曉-毛曉冬
2005-10-10
首先聲明,我不是BREW 高手,我只是一位普通的BREW OEM 工作者.只是在自己不斷
學習BREW 的過程中,總結了一些學習BREW 的方法,或者說是要學好BREW 應該一步
步怎么走,循序漸進的看些什么,學些什么,現在將這些心得體會和大家分享,交流
。
(注,以下區分OEM 和Developer,OEM 是指手機OEM 廠商作BREW Porting 的,Developer
?是指作BREW 應用開發的,即CP.每一步都分析對于這兩種人的必要性)
1. 對BREW 有最基本,最淺顯的了解(通過網站關于BREW 的新聞,介紹,對BREW
?有個非技術角度的總體概念,知道他出現的用途是什么,在無線移動產業中處于什
么位置,有什么優勢等等,BREW 可以用來作些什么好玩的東東),激發對BREW 的初
步熱情.
->該步驟同時適合OEM,Developer
->參考資料:
1. 請baidu 上進行BREW 關鍵字搜索
2. BREW Overview.pdf
2. 進行BREW 最基本的技術層次的學習(對BREW 最基本的事件驅動機制的了解,
如何創建接口,clsid是什么?如何一步步用vc 開發一個動態應用,每一步驟的作用
,resource,mif 工具的使用,helloworld程序如何被創建,如何進行事件處理的大
致流程,如何將BREW 動態應用轉變為mod 文件下載到手機.....等等等等,這
些基本的內容可以通過一般的BREW 文檔學習到,qualcomm 網站上有一篇很好的brew
?基本知識學習文檔,study brew from scratch,另外網上有兩本關于BREW 的英文
ebook,也可作為入門資料,有一本BREW 手機游戲開發的中文書也可以作為該階段的
入門資料)
->該步驟同時適合OEM,Developer
->參考資料:
1. brew_app_from_scratch.pdf
2. BREW Programming guide(海信).pdf
3. starting_brew.pdf
4. 深入BREW 游戲開發
5. Apress.Developing.Software.for.the.QUAL
COMM.BREW.Platform.eBook-LiB.rar
6. Wordware.Wireless.Game.Development.In.C.
Cpp.With.BREW.eBook-LiB.chm
3. ?深入理解BREW 接口機制:BREW 采用面向對象的接口體系結構對外提供服務.
理解接口機制將有助于理解調用所謂的接口API(實際上是宏映射)是如何最終調用
到AEE 層的真正函數,定義一個接口究竟底層作了什么,BREW 中的接口究竟是如何
創建的等等(該機制非常非常好的學習文檔是aee.h 和example下的mediaplayer,aee
.h 里的宏,就是接口機制的實現手段,mediaplayer 更是將brew 的接口機制發揮的
淋漓盡致)
->該步驟適合有興趣的Developer,因為并非所有的Developer 需要知道接口機制
,將IXXX_XXX 理解為真正的函數,熟練的運用他們,而不知道他們的底層實現機制
也不會妨害Developer 的開發,但是對于需要開發Extention Interface 的Developer
,理解BREW 接口機制是必須的. 該步驟對于OEM 而言是必須的.因為如果不理解BREW
?接口機制的話,BREW OEM 所作的Porting 或者Modify 是盲目的,因為你根本不明
白上層調用所謂的接口函數最終是如何映射到底層的,這樣你無法清晰地發現,問題
究竟在哪里?而對于Porting 新的Static ExtentionInterface,則更加必須掌握接
口機制,比如IIMAGE,IMEDIA 這兩個抽象接口的OEM 層新format 接口的Portng,你
必須掌握接口機制,否則你不可能自己去實現一個接口,讓上層很好的調用.
->參考資料:
1. BREW_Architecture_Extensions.pdf
2. BREW 究竟是什么-BREW 本質之我見.pdf(筆者)
3. deep in BREW’s Interface .pdf(筆者)
4. AEE.h
5. Mediaplayer.c
6.BREW部分接口源碼
4. BREW 面向開發的核心機制的深入熟悉和理解:主要是事件分發,處理機制,Timer
?機制,Alarm 機制,Notify 機制,Callback 機制,suspend,resume,background
?等等
->該步驟同時適合OEM,Developer
->參考資料:
1. deep in Event-Driven.pdf(筆者)
2. 深入BREW 消息處理機制.pdf(筆者)
3. SDK 幫助文檔
5.BREW 開發代碼的熟悉,積累以及SDK API 的熟悉:
主要是通過閱讀別人的應用(Example 是一個很好的示例代碼)加深對BREW 接口函
數使用的理解,同時再結合自己的不斷鍛煉,再結合查閱BREW SDK 幫助文檔.使得
自己能加深對BREW 各接口使用的理解,同時積累開發BREW應用程序的經驗 (同時注
意有關C++如何開發BREW應用以及注意點)
->該步驟適合Developer,同時適合感興趣的OEM
->參考資料:SDK 幫助文檔以及別人的應用源碼
6.進行(你負責的或者是感興趣的)BREW 模塊(接口)
的深入學習:這是OEM 的重要學習內容,原則上對一個模塊的真正學習,應該包括:
從整體上把握該接口的作用,它為開發者提供了什么功能,開發者利用它能做什么?
從開發者的角度,最典型的使用該接口的方法和順序(過程)是如何的?該接口的AEE
?層(如果看的到代碼的話)和O
EM 層是具體如何實現的,這點的學習有助于清楚該接口對外提供的服務在底層是究
竟如何實現的?如果該接口存在異步調用系統服務的話,它和系統是如何交互的,如
何進行異步service 的調用?如果該接口是一個抽象接口,具體實現在OEM 層的話,
要清楚該接口實現的特點,如何擴展該接口
->原則上只適合OEM,因為Developer 是看不到代碼的.
->參考資料:
1. SDK 幫助文檔
2. QCT Release 的BREW 平臺代碼 (主要是各Interface的具體實現)
7.BREW 模塊加載,應用啟動機制學習:可以通過AEEModGen.c,AEEAPPGen.c 以及
mod 文件的makefile 深入學習BREW App 的創建過程,Module 的加載過程
->該步驟同時適合OEM,Developer,對于OEM,因為存在寫靜態應用的可能性,所
以對于靜態應用加載的特殊過程(需要提供的特殊load)需要熟悉.
->參考資料:
1. AEEModGen.c,AEEAppGen.c,makefile of mod
2. 深入BREW 模塊加載機制.pdf(筆者)
8.BREW 面向OEM 的核心機制學習:學習如何在Task 中啟動BREW,BREW 事件如何
分發,啟動,關閉一個BREW應用的整個過程,oem_notify 機制,抽象接口機制,Interface
?Register 機制,BREW 分層概念,app stack,如何傳遞Key Event,App Context,
Memory Manager,Object Manager,Callback,Systemcallback,SystemObject 等
等面向OEM 層的BREW 核心機制
->該步驟僅適合OEM,因為Developer 不可能使用這些機制.對于OEM,通常某些接
口的OEM 層實現需要采用異步機制來調用系統服務,此時將綜合運用以上機制,應該
熟悉這些機制.
->參考資料:
1. 深入BREW 抽象接口機制.pdf(筆者)
2. BREW 分層機制闡述.pdf(筆者)
3. PK 相關文檔
9.BREW 接口驗證機制的學習: 主要是學習PEK 工具的使用,這樣能經常性的來驗
證BREW 接口Porting 的完整性.同時PEK 中的OAT 源碼也是學習接口使用的很好資
料.通常,對于一個擴展的接口,需要提供擴展的OAT測試module,所以需要熟悉這
些.
->該步驟僅適合OEM
->參考資料:PEK 相關文檔
10.BREW UI 機制:主要學習BUIT(現在改名為BUIW)和UIOne.這兩種機制主要
用來進行UI 開發.由于BUIT 大量使用了設計模式,所以初學較難.
->同時適合感興趣的OEM,Developer
->參考資料:
1. BUIT SDK
2. BUIT Example
3. AppMgr 3.x
11.OEM Notes 的經常性關注:經常性登陸BREW OEMExtranet 下載BREW OEM Notes
,有助于拓寬解決一些BREW Porting 的方法,思路,即便不是馬上能用上,也積累
了一些經驗
->僅適合OEM
->參考資料:OEM Extranet 資料