本文轉自一位正在做Java ME polish在BlackBerry上運行的項目網友的博客,詳解了在NetBeans Java ME polish環境下開發BlackBerry應用。
以下為轉發的全文:
近日公司要求把之前做的一個Java ME polish項目在BlackBerry上運行。我是一個新手,所以一星期了,還是有小部分bug沒能成功運行。下邊是我對BlackBerry應用程序開發的一些見解:BlackBerry的介紹我不說了,想了解的朋友可以在網上搜索。在開發之前准備的開發工具:Java JDK,BlackBerry JDE,BlackBerry emulator. 其中BlackBerry JDE/emulator 可以到BlackBerry主站下載:www.blackberry.com。
在網上廣為流傳的一份BlackBerry應用程序開發者指南裡邊詳細介紹如何用BlackBerry API開發BlackBerry application的各方面內容。
但是我們一般都是用Java ME開發,開發出來的程序是jar格式,可以運行在大部分型號的手機上。可是BlackBerry是不支持jar的,它支持的是cod格式。所以如果你想你開發的Java ME程序運行在BlackBerry上,就必須先把它轉為cod格式。
要把一般Java ME程序轉為cod可以在程序開發編譯過程序中轉,也可以對打包好的jar轉。
◆對已經打包好的jar文件轉為BlackBerrycod格式:進入jar文件所在目錄,在cmd(命令行)中進入相應目錄,輸入下邊命令就可以了:引用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, 如果環境變量沒有設置,這裡就要用絕對路徑:C:\Program Files\Research In Motion\BlackBerry JDE 4.2.1\bin\rapc, 當然你可以把它寫成一個.bat文件來執行。而網上你可以搜索到一個名為Java2Cod.exe的小程序可以直接轉換。)
◆在JDE中編譯程序:無論你是用BlackBerry API或者Java ME/midp API來開發Java ME程序,都可以在JDE上編譯。最終他會自動打包成cod文件。
◆在其IDE中編譯打包:因為我是用NetBeans來開發的,所以本人只能提供NetBeans開發BlackBerry程序的見解。而本人是在NetBeans中用Java ME polish來整合開發的。下邊介紹Java ME polish中開發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 屬性裡加上這一句。如果沒有這一句編譯時就不會自動把jar轉換為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文件中缺少MicroEdition-Configuration和MicroEdition-Profile兩個屬性是不能成功轉成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,不要用它,因為BlackBerry中的rapc轉換過程中會對程序混淆的。
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程序,那麼就可以編譯運行了。但如果你是用BlackBerry API開發的,就要就把build.XML裡<build>元素中的<midlet>,改為<main>,同時要添加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是" ",中間有一個空格的,我試過了,如果沒有這個定義變量或者這個值中間沒有空格,jar是不能轉為cod格式。)
這是我初接觸BlackBerry時的一點心得。我用BlackBerry API在NetBeans+Java ME polish的環境下寫過一個test app,是能成功運行的,希望對初接觸BlackBerry的朋友有幫助。