白桦的天空

第一次的心动,永远的心痛!
  首页  :: 新随笔  :: 联系 :: 管理

netbeans+j2mepolish 环境下开发黑莓(BlackBerry) 程序

Posted on 2009-04-28 17:51  白桦的天空  阅读(731)  评论(0编辑  收藏  举报
近日公司要求把之前做的一个 j2mepolish 项目在 BB 上运行。我是一个新手,所以一星期了,还是有小部分bug, 没能成功运行。下边是我对 BB 应用程序开发的一些见解: 

BlackBerry 的介绍我不说了,想了解的朋友可以在网上搜索。在开发之前准备的开发工具:Java JDK, BB JDE, BB emulator. 其中BB JDE/emulator 可以到BB主站下载:www.blackberry.com, 但本人在公司的机上下载不了,显示IP不允许(=.=),所以找到一个国内网站可以下载:http://down.maxpda.com/download/category-86-1.html 

第一次使用 BB 模拟器的可以浏览下http://hi.baidu.com/ay_digitalbaby/blog/item/fa3520384b7213f3b211c7f8.html里边是使用 BB 模拟器的教程。 

在网上广为流传的一份 BlackBerry 应用程序开发者指南:http://www.36sign.com/blog/blackberry/the-guide-of-blackberry-development.html里边详细介绍如何用BB api开发BB application 的各方面内容。 

但是我们一般都是用j2me开发,开发出来的程序是 jar 格式,可以运行在大部分型号的手机上。可是 BB 是不支持 jar 的,它支持的是 cod 格式。所以如果你想你开发的 j2me 程序运行在 BB 上,就必须先把它转为 cod 格式。 
要把一般 j2me 程序转为 cod 可以在程序开发编译过程序中转,也可以对打包好的jar 转。 

1) 对已经打包好的 jar 文件转为 BB cod 格式: 进入 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 的小程序可以直接转换。) 

2) 在JDE中编译程序: 无论你是用 BB api 或者 j2me/midp api 来开发j2me程序,都可以在 JDE 上编译。最终他会自动打包成 cod 文件。 

3) 在其 IDE 中编译打包:因为我是用 netbeans 来开发的,所以本人只能提供用 netbeans 开发 BB 程序的见解。http://gceclub.sun.com.cn/NetBeans/tutorials/mobility/blackberry.html 这里有介绍如何整合netbean 来开发 BB 程序。 
而本人是在 netbean 中用 j2mepolish 来整合开发的。下边介绍j2mepolish 中开发 BB 程序(可以参考http://www.j2mepolish.org/docs/platform-blackberry.html): 

一)、在 j2mepolish 安装目录里找到 platforms.xml, 在里边的 BlackBerry 部分中,加上 <capability name="build.Finalizer" value="jar2cod" />(我用的是Preview 2.0版本,里边这一句是注释掉,所以要把它 activate , 也可以在 devices.xml 中在你想用的 emulator 属性里加上这一句。如果没有这一句编译时就不会自动把 jar 转换为 cod 文件的.) 
polish里支持的版本最新系4.2.0, 如果你安装噶 BB 版本最新的如4.2.1/4.3.0,哪么你要把${BB目录}/lib/net_rim_api.jar copy 到 ${j2mepolish}/import 里,在platforms.xml 的 BlackBerry 中修改<capability name="build.BootClassPath" value="net_rim_api.jar" /> 

二)、在工程的 build.xml 中添加 blackberry.home 属性(你安装的BB JDE目录) 
Java代码 
  1. <property   
  2.     name="blackberry.home"   
  3.     location="C:/Program Files/Research In Motion/BlackBerry JDE 4.2.1"   
  4. />  

三)、如果你编译后打包的 jad 文件中缺少 MicroEdition-Configuration 和 MicroEdition-Profile 两个属性是不能成功转成 cod 文件的。这可以在工程的 build.xml 中的<build>属性里的<jad>元素中添加: 
Java代码 
  1. <jad>  
  2.   <attribute target="jad" name="MicroEdition-Configuration" value="CLDC-1.1" if="polish.cldc11"/>  
  3.   <attribute target="jad" name="MicroEdition-Profile" value="MIDP-2.0"/>  
  4. </jad>  

四)、如果你用了混淆器的(obfuscator),要把它 unactivate, 不要用它,因为 BB 中的 rapc 转换过程中会对程序混淆的。 
Java代码 
  1. <obfuscator name="ProGuard" unless="test or polish.blackberry" >  
  2. </obfuscator>  

五)、在工程的 build.xml 中的<j2mepolish>属性 requirements 用你想编译的 BB emulator,如: 
Java代码 
  1. <deviceRequirements>  
  2.    <requirement name="Identifier" value="BlackBerry/8800" />             
  3. </deviceRequirements>  

如果你的程序是一般的j2me程序,那么就可以编译运行了。但如果你是用 BB api 开发的,就要就把build.xml里<build>元素中的<midlet>,改为<main>,同时要添加 polish.classes.midlet-1 的variable, 如: 
Java代码 
  1. <!-- midlets definition -->  
  2. <main class="com.protel.bbim.ui.BBIMMidlet" />  
  3.                   
  4. <!-- project-wide variables - used for preprocessing  -->  
  5. <variables>  
  6.    <variable name="polish.classes.midlet-1" value=" " />  
  7. </variables>  

(注:polish.classes.midlet-1 的 value 是" ",中间有一个空格的,我试过了,如果没有这个定义变量或者这个值中间没有空格,jar 是不能转为 cod 格式。) 

这是我初接触 BB 时的一点心得。我用BB api 在netbeans+j2mepolish的环境下写过一个test app,是能成功运行的,希望对初接触 BB 的朋友有帮助。 

  • build.rar (3.1 KB)
  • 描述: 我用 BB api 写程序时的build.xml
  • 下载次数: 42