以文本方式查看主題 - 曙海教育集團(tuán)論壇 (http://www.55716723.cn/bbs/index.asp) -- Linux技術(shù)討論區(qū) (http://www.55716723.cn/bbs/list.asp?boardid=7) ---- j2me手機(jī)開發(fā)MID格式詳解 (http://www.55716723.cn/bbs/dispbbs.asp?boardid=7&id=1329) |
-- 作者:wangxinxin -- 發(fā)布時(shí)間:2010-11-15 9:09:31 -- j2me手機(jī)開發(fā)MID格式詳解 在一個(gè)J2ME項(xiàng)目中干了半年的CM (Configuration Management)/BM (Build Management),學(xué)習(xí)到了很多普通開發(fā)人員較少機(jī)會(huì)接觸, 但是對項(xiàng)目本身又十分重要的知識(shí),寫出來與大家分享。 前言 1. 關(guān)于JDK/WTK的選擇 WTK也是同樣的道理,高版本的通常具有較好的兼容性,這里給一個(gè)提示, 如果你需要將你的程序再多種品牌的手機(jī)上運(yùn)行,你可以同時(shí)安裝特定手機(jī)品牌放出的J2ME WTK,通過在這類特定的WTK上進(jìn)行測試,可以較早于真機(jī)發(fā)現(xiàn)問題。在J2ME的開發(fā)過程中,JSR包的選擇十分重要,當(dāng)使用某些 特定JSR時(shí),一定要調(diào)研清楚,所需要支持的手機(jī)中是否都支持該JSR包。 2. 編譯腳本的編寫 用Ant來構(gòu)建應(yīng)用通常是編寫一個(gè)build.xml文件,將該文件傳給Ant, Ant根據(jù)build.xml文件中的指示進(jìn)行編譯和構(gòu)建,在使用Eclipse+EclipseMe 開發(fā)J2ME應(yīng)用時(shí),可以從Eclipse導(dǎo)出build.xml,不過還是推薦大家自己編寫build.xml文件。編寫build.xml時(shí),也建議進(jìn)行良好的設(shè)計(jì), 越是復(fù)雜的構(gòu)建過程,對build.xml要求也越高。 3. Antenna Antenna是Ant的擴(kuò)展包,它是專用來構(gòu)建、編譯、打包、部署J2ME 應(yīng)用的輔助工具。 Antenna中非常實(shí)用的工具就是WtkPreprocess,它給Java開發(fā)添加 了類似C/C++中的宏定義和代碼預(yù)處理的功能。Antenna支持的宏定義 包括: #ifdef 使用Antenna的過程中,會(huì)有一些缺陷。例如,在開發(fā)過程中,我們 通過定義宏來代表某個(gè)功能,對于不同的手機(jī),當(dāng)我們需要支持該功能時(shí),在編譯的過程中,打開這個(gè)宏即可,反之則關(guān)閉這個(gè)宏。如果該功能只與代碼有關(guān)系,情況就十分簡單,Antenna的WtkPreprocess 可以完成我們需要的功能。但是如果該功能同時(shí)與資源有關(guān)系,當(dāng) 我們選擇不支持該功能時(shí),我們不但想在編譯的過程中,通過預(yù)處理,去掉相關(guān)的代碼,也希望該功能相關(guān)的資源也不被放入JAR包中, 而WtkPreprocess除了處理源代碼,其他都無能為力。因此在構(gòu)建腳本的編寫過程中,需要特別注意這類問題。 4. Proguard 在J2ME開發(fā)中,通常都會(huì)使用到該工具,并且該工具是開源的, 很容易獲取。 5. Preverify 6. Size Control 6.1 kjar/kzip 此處,我們推薦使用一個(gè)稱為kjar的工具,可以從 http://supremej2me.bambalam.se/guides/optimization-tools/kjar/ 下載到,他是通過改寫壓縮算法,使制作的JAR包能比普通JAR包減小10% 左右的大小。同時(shí),由于kjar只能運(yùn)行于Windows平臺(tái),并且通常被病毒 防火墻誤認(rèn)為病毒,用起來并不方便,因此你可以從 http://advsys.net/ken/utils.htm 下載kzip,包括Windows和Linux版本,能實(shí)現(xiàn)同樣的功能。 6.2 BamFS 6.3 mbooster mbooster是一個(gè)很強(qiáng)的工具,但同時(shí),也是個(gè)收費(fèi)的工具,開發(fā)者 可以向該公司申請trial的license,網(wǎng)址是 http://www.innaworks.com/mBooster.html , mbooster可以減小JAR包的大小,同時(shí)也能提高程序的運(yùn)行速度, 它可以優(yōu)化class文件,PNG文件,普通情況小可以減小30-40%左右的 大小。 7. 自動(dòng)構(gòu)建工具 構(gòu)建管理者所需要做的事情就是,將自己制作的構(gòu)建環(huán)境放入 CruiseControl之中,對其進(jìn)行適當(dāng)?shù)呐渲茫酉聛淼氖虑榫褪趾唵瘟耍看涡枰獦?gòu)建時(shí),只需要登陸到CruiseControl提供的 Web界面,鼠標(biāo)點(diǎn)擊某鏈接來trigger構(gòu)建,后臺(tái)會(huì)自動(dòng)完成構(gòu)建、發(fā)布,并發(fā)郵件通知相關(guān)人員,一旦編譯出錯(cuò),也會(huì)以郵件的 方式通知大家。 8. 需要遵守的一些原則 2. 要求開發(fā)人員盡量使用標(biāo)準(zhǔn)的構(gòu)建環(huán)境進(jìn)行構(gòu)建。J2ME的開發(fā),通常都會(huì)在Eclipse/NetBeans里面完成,但一定要求開發(fā)人員 在提交代碼到版本控制系統(tǒng)中之前,至少需要使用標(biāo)準(zhǔn)構(gòu)建環(huán)境構(gòu)建一次JAR包,并驗(yàn)證。這樣可以幫助盡早發(fā)現(xiàn)問題,因?yàn)镮DE 與自訂制的構(gòu)建環(huán)境總是存在差別的。 3. 建議將所有用到的第三方庫/代碼/程序都放入Build Environment中, 而整個(gè)Build Environment是應(yīng)該放入版本控制系統(tǒng)中的。對于 JDK/WTK/Ant等基礎(chǔ)設(shè)施工具,可以要求開發(fā)人員自己安裝,并設(shè)置好環(huán)境變量。可以編寫適當(dāng)?shù)哪_本,對環(huán)境以及版本進(jìn)行判斷。 每次構(gòu)建之前,先判斷,若不滿足,則不予構(gòu)建。 9. 結(jié)束語 |