在NetBeans Java ME polish環(huán)境下開發(fā)BlackBerry應(yīng)用
本文轉(zhuǎn)自一位正在做Java ME polish在BlackBerry上運(yùn)行的項(xiàng)目網(wǎng)友的博客,詳解了在NetBeans Java ME polish環(huán)境下開發(fā)BlackBerry應(yīng)用。
以下為轉(zhuǎn)發(fā)的全文:
近日公司要求把之前做的一個(gè)Java ME polish項(xiàng)目在BlackBerry上運(yùn)行。我是一個(gè)新手,所以一星期了,還是有小部分bug沒能成功運(yùn)行。下邊是我對(duì)BlackBerry應(yīng)用程序開發(fā)的一些見解:BlackBerry的介紹我不說了,想了解的朋友可以在網(wǎng)上搜索。在開發(fā)之前準(zhǔn)備的開發(fā)工具:Java JDK,BlackBerry JDE,BlackBerry emulator. 其中BlackBerry JDE/emulator 可以到BlackBerry主站下載:www.blackberry.com。
在網(wǎng)上廣為流傳的一份BlackBerry應(yīng)用程序開發(fā)者指南里邊詳細(xì)介紹如何用BlackBerry API開發(fā)BlackBerry application的各方面內(nèi)容。
但是我們一般都是用Java ME開發(fā),開發(fā)出來的程序是jar格式,可以運(yùn)行在大部分型號(hào)的手機(jī)上??墒荁lackBerry是不支持jar的,它支持的是cod格式。所以如果你想你開發(fā)的Java ME程序運(yùn)行在BlackBerry上,就必須先把它轉(zhuǎn)為cod格式。
要把一般Java ME程序轉(zhuǎn)為cod可以在程序開發(fā)編譯過程序中轉(zhuǎn),也可以對(duì)打包好的jar轉(zhuǎn)。
◆對(duì)已經(jīng)打包好的jar文件轉(zhuǎn)為BlackBerrycod格式:進(jìn)入jar文件所在目錄,在cmd(命令行)中進(jìn)入相應(yīng)目錄,輸入下邊命令就可以了:引用rapc import="C:\Program Files\Research In Motion\BlackBerry JDE 4.2.1\lib\net_rim_api.jar" codename=TestBB jad=TestBB.jad TestBB.jar
(注:這里rapc 是 C:\Program Files\Research In Motion\BlackBerry JDE 4.2.1\bin\ 目錄里的 rapc.exe, 如果環(huán)境變量沒有設(shè)置,這里就要用絕對(duì)路徑:C:\Program Files\Research In Motion\BlackBerry JDE 4.2.1\bin\rapc, 當(dāng)然你可以把它寫成一個(gè).bat文件來執(zhí)行。而網(wǎng)上你可以搜索到一個(gè)名為Java2Cod.exe的小程序可以直接轉(zhuǎn)換。)
◆在JDE中編譯程序:無論你是用BlackBerry API或者Java ME/midp API來開發(fā)Java ME程序,都可以在JDE上編譯。最終他會(huì)自動(dòng)打包成cod文件。
◆在其IDE中編譯打包:因?yàn)槲沂怯肗etBeans來開發(fā)的,所以本人只能提供NetBeans開發(fā)BlackBerry程序的見解。而本人是在NetBeans中用Java ME polish來整合開發(fā)的。下邊介紹Java ME polish中開發(fā)BlackBerry程序
(可以參考http://www.j2mepolish.org/docs/platform-blackberry.html)
一、在Java ME polish安裝目錄里找到platforms.xml,在里邊的BlackBerry部分中,加上<capability name="build.Finalizer" value="jar2cod" />(我用的是Preview 2.0版本,里邊這一句是注釋掉,所以要把它activate,也可以在devices.xml中在你想用的emulator 屬性里加上這一句。如果沒有這一句編譯時(shí)就不會(huì)自動(dòng)把jar轉(zhuǎn)換為cod文件的.)
polish里支持的版本***系4.2.0,如果你安裝BlackBerry版本***的如4.2.1/4.3.0,哪么你要把${BlackBerry目錄}/lib/net_rim_API.jar copy到${Java MEpolish}/import里,在platforms.xml的BlackBerry中修改<capability name="build.BootClassPath" value="net_rim_API.jar" />
二、在工程的build.xml中添加blackberry.home屬性(你安裝的BlackBerry JDE目錄)
Java代碼
- <property name="blackberry.home"
- location="C:/Program Files/Research In Motion/BlackBerry JDE 4.2.1"
- />
三、如果你編譯后打包的jad文件中缺少M(fèi)icroEdition-Configuration和MicroEdition-Profile兩個(gè)屬性是不能成功轉(zhuǎn)成cod文件的。這可以在工程的build.xml中的<build>屬性里的<jad>元素中添加:
Java代碼
- <jad> <attribute target="jad" name="MicroEdition-Configuration" value="CLDC-1.1"
- if="polish.cldc11"/> <attribute target="jad" name="MicroEdition-Profile" value="MIDP-2.0"/>
- </jad>
四、如果你用了混淆器的(obfuscator),要把它unactivate,不要用它,因?yàn)锽lackBerry中的rapc轉(zhuǎn)換過程中會(huì)對(duì)程序混淆的。
Java代碼
- <obfuscator name="ProGuard" unless="test or polish.blackberry" >
- </obfuscator>
五、在工程的build.xml中的<Java MEpolish>屬性requirements用你想編譯的BlackBerryemulator,如:
Java代碼
- <deviceRequirements> <requirement name="Identifier" value="BlackBerry/8800" />
- </deviceRequirements>
如果你的程序是一般的Java ME程序,那么就可以編譯運(yùn)行了。但如果你是用BlackBerry API開發(fā)的,就要就把build.xml里<build>元素中的<midlet>,改為<main>,同時(shí)要添加polish.classes.midlet-1的variable。如:
Java代碼
- <!-- midlets definition --> <main class="com.protel.BlackBerryim.ui.BlackBerryIMMidlet" />
- <!-- project-wide variables - used for preprocessing --> <variables> <variable name="polish.classes.midlet-1" value=" " />
- </variables>
(注:polish.classes.midlet-1的value是" ",中間有一個(gè)空格的,我試過了,如果沒有這個(gè)定義變量或者這個(gè)值中間沒有空格,jar是不能轉(zhuǎn)為cod格式。)
這是我初接觸BlackBerry時(shí)的一點(diǎn)心得。我用BlackBerry API在NetBeans+Java ME polish的環(huán)境下寫過一個(gè)test app,是能成功運(yùn)行的,希望對(duì)初接觸BlackBerry的朋友有幫助。
【編輯推薦】