其实,Matrix的cleverpig早已完成了这个工作,并形成了文档。本人也是根据这篇文章进行试验的,但是在实践的过程中,遇到了不少的困难。故在此通过文字记录下自己的经历,一来是总结,二来是希望对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简介 Ant是apache发布的构建(Build)工具,用于控制程序的编译和打包。目前,最新版本为1.7.0。关于ant的相关配置,请仔细阅读Apache Ant 1.7.0 Manual
Wtk打包的步骤 J2me开发,都离不开wtk,虽然在开发过程中,可以与JBuilder,Eclipse等IDE合成,但在最终发布时,通常都很使用wtk来打包。首先,分析一下wtk打包的过程,值得注意的是,这也是编写ant脚本的重要参照。
1:编译src目录下的.java源代码
2:调用java工具preverify.exe对class文件进行验证
3:将验证后的class以及res目录下的资源文件打成jar包
4:调用混淆工具,如:progard对jar包进行混淆,并解压缩
5:将经过混淆、解压缩后的class、资源文件生成jar包,并根据jad模版生成相应的jad文件,按成J2me程序的部署。
Ant脚本build.xml注:这个脚本是在cleverpig提供的脚本基础进行略为改动。重点描述我在实现过程中,遇到问题的部分。 具体ant的Task命令说明,请参考Apache Ant 1.7.0 Manual
编译:
- <target name="complie" depends="init" description="编译">
- <echo message="编译程序"/>
- <javac srcdir="${src.dir}" destdir="${build.dir}">
- <bootclasspath path="${ midp.lib.dir }"/>
- <classpath>
- <fileset dir="${midp.lib.dir}" includes="*.jar"/>
- classpath>
- javac>
- target>
xml 代码
我在实践的过程中,由于实验的源代码中用到Midp2.0的方式,脚本在执行到编译这步时,始终抱错,无法编译像setScreenMode、platFormRequest等方法。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的呀,为何一直通不过呢?为此,我仔细阅读了相关文档,设置将JDK的javac命令再次温习一边。最终,发现问题出在bootclasspath与classpath的设置上面。以上脚本,bootclasspath设置在midp.lib.dir下,然后,classpath将midp.lib.dir中的所有*.jar文件导入。由于,javac在编译时,只会自动搜索bootclasspath下面的class和java文件,所以,无法将midpapi20.jar和cldcapi11.jar两个库包导入。此外,classpath是将midp.lib.dir目录下的所有jar导入作为库包。我的wtk\lib目录下,同时拥有midpapi10.jar和midpapi20.jar,以及cldcapi10.jar和cldcapi11.jar,所以在导入的时候,造成了库包的冲突,故无法编译midp2.0的方法。当然,这是本人之愚见,倘若哪天cleverpig大侠路过此处,可以解释一下这个问题。
正值高兴之余,以为能顺利编译通过时,编译又抱错,提示找不到StringBuilder类。Google之后,了解到StringBuilder属于JDK1.5的包,在”a”+b+”c”时,Java内部不再使用StringBuffer来重载String的’+’操作,而使用StringBuilder来代替。然而在J2me中,没有StringBuilder这个类,所以就问题就出现。解决办法,在编译时,指定JDK版本为1.4。
编译部分的脚步修改如下:Target都运行正常
xml 代码
- <target name="complie" depends="init" description="编译">
-
- <echo message="编译程序"/>
-
- <javac srcdir="${src.dir}" destdir="${build.dir}" source="1.4>
-
- <bootclasspath path="${ midp.lib.path}"/>
-
- javac>
-
- target>
剩余各Target都运行正常
源码下载 其他的配置文件请到http://www.matrix.org.cn/resource/article/43/43770_Ant_J2me.html下载
思考 从我个人的使用感受而言,使用Ant打包J2me比Wtk更自动化一些。当然,如果只是打一个包,体现不出什么优势,如果在发布J2me程序时,要求同时打多个版本的包,那Ant的优势就体现出来了。相信有过J2me开发的朋友都有这方面的经验,发布时,由于版本太多,而各版本之间的差异可能就是键值或屏幕大小等比较细小的地方,如果使用Wtk打包,慌乱之中难免出错。使用Ant在配合一些配置文件,这样打包的过程就方便多了。
当然,使用ant对J2me打包,脚本显得臃肿,很多配置需要设定。不过,没有关系,已经有人更进一步了,这就是antenna,一个基于ant的j2me专用打包工具。除此之外,大名鼎鼎的J2mepolish也是使用ant来打包,这也是其标榜的重要优势之一。
分享到:
相关推荐
- `build.xml`可能是Ant构建脚本,用于编译和打包JAR文件。 - `midlet.jad`和`midlet.jar`是最终的可部署文件,jad文件包含了应用程序元数据,jar文件包含了编译后的类和资源。 深入学习这两个示例项目,可以从以下...
为了构建和管理J2ME项目,开发者通常会使用特定的编译工具,其中"Antenna"就是一个针对J2ME应用的编译工具,它基于Apache Ant构建,为J2ME应用程序的打包和部署提供了便利。 **Apache Ant** Apache Ant是一个Java...
6. **Ant和Maven**: Ant和Maven是Java构建工具,用于自动化构建过程,包括编译、打包和部署J2ME应用。它们可以管理依赖项,创建可执行的JAR文件,并将应用程序发布到目标设备。 7. **JUnit和Eclipse Plug-in**: ...
同时,你可以选择是否启用Antenna JAR,它可以帮助你使用Ant脚本来自动化J2ME程序的打包过程。 接着,配置**设备管理**。在"Device Management"中,浏览并选择WTK安装目录下的"bin"文件夹,然后点击"Refresh",...
8. **Ant**:Apache Ant是一个Java构建工具,可以帮助自动化J2ME项目的构建过程,包括编译、打包和签名,尤其对于大型项目或团队开发来说,Ant可以大大提高效率。 9. **Maven**:Maven是另一个常用的Java项目管理...
在J2ME开发中,Ant可以用来自动化编译、打包应用程序和其它相关的构建任务。教程中展示了如何创建Ant脚本,定义构建路径,以及如何使用Ant脚本自动化执行编译和打包过程。 ### 移动应用开发的未来 尽管J2ME已不再...
在J2ME应用开发过程中,安全问题尤为重要,因为这些应用程序可能会暴露于恶意攻击或盗版。"J2ME混淆器"正是解决这一问题的重要工具,它通过对代码进行混淆处理,使得原始的Java源码难以被反编译和理解,从而增加破解...
Antenna的`midp-sign`任务可以使用指定的密钥对应用程序进行签名,确保其安全性和完整性。 6. **打包CAB文件**:对于Windows Mobile设备,你需要创建CAB文件。`midp-cab`任务可以帮助完成这个过程,它会将JAR文件和...
在J2ME中,应用程序通常被打包成JAR(Java Archive)文件,用户可以通过这个文件在支持J2ME的设备上运行或安装GVmaker模拟器。 4. **nbproject**: 这是NetBeans项目文件夹,其中包含了项目配置、构建信息、依赖关系...
- **构建系统**:项目可能使用Ant或Maven等构建工具,通过配置文件控制编译和打包过程。 - **测试框架**:源码可能包含单元测试和集成测试,用于验证各个组件和整体系统的功能。 - **文档**:源码包中可能有相关的...
- 在“Antenna JAR”项中,可选填入 Antenna JAR 的路径,这将允许使用 Ant 脚本来打包 J2ME 程序。 3. **设备管理**: - 在首选项中选择“设备管理”,点击“Import”,浏览并选择 WTK 的 bin 目录,然后点击...
- `build.xml`是Ant构建工具的配置文件,用于自动化编译、打包和部署J2ME应用。`nbproject`目录则是NetBeans IDE的项目配置,包含了项目的元数据和构建设置。 通过研究这个J2ME贪吃蛇源码,初学者可以了解如何将...
【J2ME浏览器(kxml解释实现)】是一个针对Java Micro Edition (J2ME) 平台的轻量级浏览器项目,它使用了kxml库来解析XML内容,从而实现对网页的显示。J2ME是一种Java平台,主要用于移动设备和嵌入式系统,它的资源...
编译和运行MIDlet,可以使用WTK提供的命令行工具,如`wtkrun`,或者通过集成开发环境(IDE),如Eclipse或NetBeans,它们通常内置了对J2ME的支持,提供了更友好的图形化界面和自动化的构建过程。 在测试和调试阶段...
4. 构建脚本和工具:可能包含Ant或Maven等构建工具的配置文件,用于编译和打包应用程序。 5. 文档:可能有开发者编写的README文件,介绍如何编译、运行和使用该项目。 总的来说,"基于J2ME的手机象棋源程序"是一个...
Antenna是基于ant的j2me开发工具。可以使用antenna对j2me程序进行 编译、校验、打包、混淆等,甚至可以通过antenna所定义的task,运行已经打包完成的jar;还可以将打包完成jad和jar部署到OTA服务器上。
- Antenna JAR:非必填项,但使用它可以方便地编写Ant文件,用于J2ME程序的打包。 **步骤3:设备管理** - 在“Device Management”中,点击“浏览”,选择WTK安装目录下的bin文件夹,然后点击“刷新”,插件会...
` TrapJ2ME.jad`是J2ME应用程序描述文件,它包含了应用程序的元数据,如作者、版本、所需的MIDP版本等,手机设备使用jad文件来下载和安装应用。 `.project`文件是Eclipse项目的配置文件,包含了项目的构建路径、...
1. **源代码文件**:如`.java`文件,这些文件包含了J2ME程序的类和方法,用于构建登录界面和处理用户输入。 2. **配置文件**:可能有`.mf`和`.jad`文件,它们定义了应用程序的配置信息,如MIDlet的元数据。 3. **...
5. **构建工具**:J2ME项目可能还会包含构建脚本(如Ant或Maven),用于将源代码编译、打包成可执行的JAR文件,这个文件可以被移动设备上的Java虚拟机运行。 6. **模拟器**:开发者通常会使用J2ME模拟器(如KJava或...