`
pandonix
  • 浏览: 401352 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Ant对J2me程序打包

    博客分类:
  • J2ME
阅读更多
 

 

其实,Matrixcleverpig早已完成了这个工作,并形成了文档。本人也是根据这篇文章进行试验的,但是在实践的过程中,遇到了不少的困难。故在此通过文字记录下自己的经历,一来是总结,二来是希望对Ant感兴趣的朋友们有所帮助或启发。

版本

Ant1.7.0 ,Wtk2.5,JDK1.5

参考文章

http://www.matrix.org.cn/resource/article/43/43770_Ant_J2me.html 作者:cleverpig

http://dev.yesky.com/251/2264751.shtml 作者 mingjava

http://blog.csdn.net/Mailbomb/archive/2006/05/07/711332.aspx 作者 陈跃峰

Ant简介

Antapache发布的构建(Build)工具,用于控制程序的编译和打包。目前,最新版本为1.7.0。关于ant的相关配置,请仔细阅读Apache Ant 1.7.0 Manual 

Wtk打包的步骤

J2me开发,都离不开wtk,虽然在开发过程中,可以与JBuilderEclipseIDE合成,但在最终发布时,通常都很使用wtk来打包。首先,分析一下wtk打包的过程,值得注意的是,这也是编写ant脚本的重要参照。

1:编译src目录下的.java源代码

2:调用java工具preverify.execlass文件进行验证

3:将验证后的class以及res目录下的资源文件打成jar

4:调用混淆工具,如:progardjar包进行混淆,并解压缩

5:将经过混淆、解压缩后的class、资源文件生成jar包,并根据jad模版生成相应的jad文件,按成J2me程序的部署。

 

Ant脚本build.xml注:这个脚本是在cleverpig提供的脚本基础进行略为改动。重点描述我在实现过程中,遇到问题的部分。

具体antTask命令说明,请参考Apache Ant 1.7.0 Manual

编译:

  1. <target name="complie" depends="init" description="编译">                   
  2. <echo message="编译程序"/>                   
  3. <javac srcdir="${src.dir}" destdir="${build.dir}">                           
  4.     <bootclasspath path="${ midp.lib.dir }"/>                           
  5.     <classpath>                                   
  6.         <fileset dir="${midp.lib.dir}" includes="*.jar"/>                                    
  7.     classpath>                   
  8. javac>           
  9. target>  
xml 代码

我在实践的过程中,由于实验的源代码中用到Midp2.0的方式,脚本在执行到编译这步时,始终抱错,无法编译像setScreenModeplatFormRequest等方法。Wtk相关的路径设置如下:

wtk.home.dir=E:\\Develpment\\SDK\\WTK25

programName=U2Browser

midp.lib.dir=${wtk.home.dir}\\lib

midp.lib.path=${midp.lib.dir}\\cldcapi11.jar;${midp.lib.dir}\\midpapi20.jar 

 

 

指定的库包是midpapi20.jar就是MIDP2.0的呀,为何一直通不过呢?为此,我仔细阅读了相关文档,设置将JDKjavac命令再次温习一边。最终,发现问题出在bootclasspathclasspath的设置上面。以上脚本,bootclasspath设置在midp.lib.dir下,然后,classpathmidp.lib.dir中的所有*.jar文件导入。由于,javac在编译时,只会自动搜索bootclasspath下面的classjava文件,所以,无法将midpapi20.jarcldcapi11.jar两个库包导入。此外,classpath是将midp.lib.dir目录下的所有jar导入作为库包。我的wtk\lib目录下,同时拥有midpapi10.jarmidpapi20.jar,以及cldcapi10.jarcldcapi11.jar,所以在导入的时候,造成了库包的冲突,故无法编译midp2.0的方法。当然,这是本人之愚见,倘若哪天cleverpig大侠路过此处,可以解释一下这个问题。

正值高兴之余,以为能顺利编译通过时,编译又抱错,提示找不到StringBuilder类。Google之后,了解到StringBuilder属于JDK1.5的包,在”a”+b+”c”时,Java内部不再使用StringBuffer来重载String’+’操作,而使用StringBuilder来代替。然而在J2me中,没有StringBuilder这个类,所以就问题就出现。解决办法,在编译时,指定JDK版本为1.4

编译部分的脚步修改如下:Target都运行正常

xml 代码
  1. <target name="complie" depends="init" description="编译">                   
  2.   
  3. <echo message="编译程序"/>                   
  4.   
  5. <javac srcdir="${src.dir}" destdir="${build.dir}" source="1.4>                           
  6.   
  7.        <bootclasspath path="${ midp.lib.path}"/>                                         
  8.   
  9. javac>           
  10.   
  11. target>  

 

剩余各Target都运行正常

源码下载

其他的配置文件请到http://www.matrix.org.cn/resource/article/43/43770_Ant_J2me.html下载

思考

从我个人的使用感受而言,使用Ant打包J2meWtk更自动化一些。当然,如果只是打一个包,体现不出什么优势,如果在发布J2me程序时,要求同时打多个版本的包,那Ant的优势就体现出来了。相信有过J2me开发的朋友都有这方面的经验,发布时,由于版本太多,而各版本之间的差异可能就是键值或屏幕大小等比较细小的地方,如果使用Wtk打包,慌乱之中难免出错。使用Ant在配合一些配置文件,这样打包的过程就方便多了。

当然,使用antJ2me打包,脚本显得臃肿,很多配置需要设定。不过,没有关系,已经有人更进一步了,这就是antenna,一个基于antj2me专用打包工具。除此之外,大名鼎鼎的J2mepolish也是使用ant来打包,这也是其标榜的重要优势之一。

分享到:
评论
3 楼 Samanoseky 2012-02-23  
感谢~~~! 折腾了2天,看到你的帖子才发现确实是因为包冲突.midpapi10.jar和midpapi20.jar,以及cldcapi10.jar和cldcapi11.jar 哈哈... 
2 楼 freedomray 2011-03-26  
Ant打包的确方便。我使用ant编译j2me工程时,能够正常编译,做出来的jar也可以在电脑上使用模拟器正常运行。但放到手机上却无法安装,提示“程序与手机不兼容”,简直让人抓狂。。。。
1 楼 pandonix 2007-08-10  
在javaeye的第一篇文章,帖上费了好大的劲啊,不容易,Mark一下:)

相关推荐

    j2me小程序

    - `build.xml`可能是Ant构建脚本,用于编译和打包JAR文件。 - `midlet.jad`和`midlet.jar`是最终的可部署文件,jad文件包含了应用程序元数据,jar文件包含了编译后的类和资源。 深入学习这两个示例项目,可以从以下...

    J2ME的编译工具

    为了构建和管理J2ME项目,开发者通常会使用特定的编译工具,其中"Antenna"就是一个针对J2ME应用的编译工具,它基于Apache Ant构建,为J2ME应用程序的打包和部署提供了便利。 **Apache Ant** Apache Ant是一个Java...

    j2me 开发工具的使用

    6. **Ant和Maven**: Ant和Maven是Java构建工具,用于自动化构建过程,包括编译、打包和部署J2ME应用。它们可以管理依赖项,创建可执行的JAR文件,并将应用程序发布到目标设备。 7. **JUnit和Eclipse Plug-in**: ...

    j2me开发环境配置

    同时,你可以选择是否启用Antenna JAR,它可以帮助你使用Ant脚本来自动化J2ME程序的打包过程。 接着,配置**设备管理**。在"Device Management"中,浏览并选择WTK安装目录下的"bin"文件夹,然后点击"Refresh",...

    J2ME工具篇.rar

    8. **Ant**:Apache Ant是一个Java构建工具,可以帮助自动化J2ME项目的构建过程,包括编译、打包和签名,尤其对于大型项目或团队开发来说,Ant可以大大提高效率。 9. **Maven**:Maven是另一个常用的Java项目管理...

    J2ME开发教程

    在J2ME开发中,Ant可以用来自动化编译、打包应用程序和其它相关的构建任务。教程中展示了如何创建Ant脚本,定义构建路径,以及如何使用Ant脚本自动化执行编译和打包过程。 ### 移动应用开发的未来 尽管J2ME已不再...

    J2ME混淆器下载)

    在J2ME应用开发过程中,安全问题尤为重要,因为这些应用程序可能会暴露于恶意攻击或盗版。"J2ME混淆器"正是解决这一问题的重要工具,它通过对代码进行混淆处理,使得原始的Java源码难以被反编译和理解,从而增加破解...

    使用Ant和Antenna开发MIDP应用程序

    Antenna的`midp-sign`任务可以使用指定的密钥对应用程序进行签名,确保其安全性和完整性。 6. **打包CAB文件**:对于Windows Mobile设备,你需要创建CAB文件。`midp-cab`任务可以帮助完成这个过程,它会将JAR文件和...

    J2ME版的GVmaker模拟器

    在J2ME中,应用程序通常被打包成JAR(Java Archive)文件,用户可以通过这个文件在支持J2ME的设备上运行或安装GVmaker模拟器。 4. **nbproject**: 这是NetBeans项目文件夹,其中包含了项目配置、构建信息、依赖关系...

    j2me polish v212源码

    - **构建系统**:项目可能使用Ant或Maven等构建工具,通过配置文件控制编译和打包过程。 - **测试框架**:源码可能包含单元测试和集成测试,用于验证各个组件和整体系统的功能。 - **文档**:源码包中可能有相关的...

    Eclipse+EclipseME+WTK搭建J2ME开发环境

    - 在“Antenna JAR”项中,可选填入 Antenna JAR 的路径,这将允许使用 Ant 脚本来打包 J2ME 程序。 3. **设备管理**: - 在首选项中选择“设备管理”,点击“Import”,浏览并选择 WTK 的 bin 目录,然后点击...

    J2ME贪吃蛇源程序 面向对象设计思想

    - `build.xml`是Ant构建工具的配置文件,用于自动化编译、打包和部署J2ME应用。`nbproject`目录则是NetBeans IDE的项目配置,包含了项目的元数据和构建设置。 通过研究这个J2ME贪吃蛇源码,初学者可以了解如何将...

    J2me浏览器(kxml解释实现)

    【J2ME浏览器(kxml解释实现)】是一个针对Java Micro Edition (J2ME) 平台的轻量级浏览器项目,它使用了kxml库来解析XML内容,从而实现对网页的显示。J2ME是一种Java平台,主要用于移动设备和嵌入式系统,它的资源...

    j2me 环境配置视频教程

    编译和运行MIDlet,可以使用WTK提供的命令行工具,如`wtkrun`,或者通过集成开发环境(IDE),如Eclipse或NetBeans,它们通常内置了对J2ME的支持,提供了更友好的图形化界面和自动化的构建过程。 在测试和调试阶段...

    基于J2ME的手机象棋源程序

    4. 构建脚本和工具:可能包含Ant或Maven等构建工具的配置文件,用于编译和打包应用程序。 5. 文档:可能有开发者编写的README文件,介绍如何编译、运行和使用该项目。 总的来说,"基于J2ME的手机象棋源程序"是一个...

    antenna-bin-1.0.2.jar

    Antenna是基于ant的j2me开发工具。可以使用antenna对j2me程序进行 编译、校验、打包、混淆等,甚至可以通过antenna所定义的task,运行已经打包完成的jar;还可以将打包完成jad和jar部署到OTA服务器上。

    Eclipse3.1.1+EclipseME1.5+WTK2.2搭建J2ME开发环境

    - Antenna JAR:非必填项,但使用它可以方便地编写Ant文件,用于J2ME程序的打包。 **步骤3:设备管理** - 在“Device Management”中,点击“浏览”,选择WTK安装目录下的bin文件夹,然后点击“刷新”,插件会...

    扫雷J2ME版 源码

    ` TrapJ2ME.jad`是J2ME应用程序描述文件,它包含了应用程序的元数据,如作者、版本、所需的MIDP版本等,手机设备使用jad文件来下载和安装应用。 `.project`文件是Eclipse项目的配置文件,包含了项目的构建路径、...

    j2me登陆小例子

    1. **源代码文件**:如`.java`文件,这些文件包含了J2ME程序的类和方法,用于构建登录界面和处理用户输入。 2. **配置文件**:可能有`.mf`和`.jad`文件,它们定义了应用程序的配置信息,如MIDlet的元数据。 3. **...

    J2me 游戏源代码

    5. **构建工具**:J2ME项目可能还会包含构建脚本(如Ant或Maven),用于将源代码编译、打包成可执行的JAR文件,这个文件可以被移动设备上的Java虚拟机运行。 6. **模拟器**:开发者通常会使用J2ME模拟器(如KJava或...

Global site tag (gtag.js) - Google Analytics