原文: j2megame.org站长博客
最近一直在寻找一种简单的方式来给J2ME程序打包,包括预处理,生成JAD,JAR的一系列自动化处理
Antenna就可以实现这一系列功能,个人觉得比polish相对要简单一些,也傻瓜一些,可以说是专门为j2me开发的一套ant的扩展
Antenna官方下载: http://sourceforge.net/project/showfiles.php?group_id=67420
Antenna文档首页: http://antenna.sourceforge.net/
写下本文时的,相关程序的版本:
Eclipse 3.3.2 + EclipseMe 1.7.7 + antenna 1.0.2
下面就开始配置:
1. 下载:
去下载首页,下载 antenna-bin-1.0.2.jar (Antenna的执行包)
2. 安装:
Eclipse 3.3 本身就自带了Ant 1.7版本,所以Ant就不必下了,把那个JAR包,添加过来就可以了
打开eclipse
菜单 Window -> Preferences -> Ant -> Runtime -> Classpath -> Ant home Entries
随便选择一个JAR包,然后点击右边的 Add External JARs, 将下载的包,加入到Eclipse库中
这样就可以了,不必安装什么插件什么的
3. 添加 build.xml
也不用在工程项目点击邮件,自动生成XML,这样我个人认为也不好用
OK,自己书写一个XML就可以了
我的一个示例(需要存储为UTF-8格式文件) (6月15日更新):
-
<?xml version="1.0" encoding="UTF-8"?>
-
-
<project name="brick" default="build">
-
-
<taskdef resource="antenna.properties" />
-
-
<target name="init" description="变量定义">
-
<echo message="Define variable" />
-
-
<!-- 机型 -->
-
<property name="mobile.vendor" value="Nokia/7610" />
-
-
<!-- JAD与JAR -->
-
<property name="jad.filename" value="brick" />
-
<property name="jad.midlet-name" value="brick" />
-
<property name="jad.midlet-vender" value="wp" />
-
<property name="jad.midlet-version" value="1.0.0" />
-
<property name="jad.midlet-class" value="brick.BrickMidlet" />
-
<property name="jad.midlet-icon" value="/icon.png" />
-
-
<!-- WTK参数 -->
-
<property name="wtk.cldc.version" value="1.0" />
-
<property name="wtk.midp.version" value="2.0" />
-
<property name="wtk.obfuscate" value="true" />
-
<property name="wtk.debug" value="false" />
-
<property name="jad.manifast.version" value="1.0"/>
-
-
-
<!-- 预处理信息显示 -->
-
<property name="mobile.show" value="false" />
-
<property name="dist.show" value="false" />
-
-
<!-- 系统参数 -->
-
<property name="basedir" value="." />
-
<property name="wtk.home" value="D:\WTK2.5.1" />
-
<property name="wtk.proguard.home" value="D:\proguard4.2" />
-
-
<!-- 不被修改的参数 -->
-
<property name="jar.filename" value="${jad.filename}" />
-
-
<!-- 目录定义 -->
-
<property name="dir.src" value="${basedir}\src" />
-
<property name="dir.res" value="${basedir}\res" />
-
<property name="dir.output" value="${basedir}\build" />
-
-
<property name="dir.output.dist" value="${dir.output}\dist" />
-
<property name="dir.output.classes" value="${dir.output}\classes" />
-
<property name="dir.output.deployed" value="${dir.output}\deployed" />
-
</target>
-
-
<target name="clean" depends="init" description="初始化环境">
-
<echo message="Clean dir" />
-
-
<delete dir="${dir.output}" />
-
</target>
-
-
<target name="preprocess" depends="init,clean" description="预处理">
-
<echo message="preprocess" />
-
-
<mkdir dir="${dir.output.dist}" />
-
-
<wtkpreprocess srcdir="${dir.src}" destdir="${dir.output.dist}"
-
device="${mobile.vendor}" verbose="${mobile.show}"
-
printsymbols="${dist.show}" />
-
</target>
-
-
<target name="compile" depends="preprocess" description="编译">
-
<echo message="Starting compile" />
-
-
<mkdir dir="${dir.output.classes}" />
-
-
<echo>build from all the ${dir.src} to ${dir.output.classes}</echo>
-
-
<wtkbuild srcdir="${dir.output.dist}" destdir="${dir.output.classes}"
-
debug="${wtk.debug}" >
-
</wtkbuild>
-
</target>
-
-
<target name="build" depends="compile" description="生成">
-
<echo message="Packaging library" />
-
-
<copy todir="${dir.output.classes}">
-
<fileset dir="${dir.res}" />
-
</copy>
-
-
<mkdir dir="${dir.output.deployed}" />
-
-
<!-- 执行自己修改的wtkjad -->
-
<wtkjad jadfile="${dir.output.deployed}\${jad.filename}.jad"
-
name="${jad.midlet-name}" vendor="${jad.midlet-vender}"
-
version="${jad.midlet-version}" encoding="UTF-8">
-
-
<midlet name="${jad.midlet-class}" icon="${jad.midlet-icon}"
-
class="${jad.midlet-class}" />
-
-
<attribute name="MIDlet-Icon" value="${jad.midlet-icon}" />
-
<attribute name="MicroEdition-Configuration" value="CLDC-${wtk.cldc.version}" />
-
<attribute name="MicroEdition-Profile" value="MIDP-${wtk.midp.version}" />
-
<attribute name="Manifest-Version" value="${jad.manifast.version}" />
-
</wtkjad>
-
-
<!-- 执行自己修改的wtkpackage -->
-
<wtkpackage jarfile="${dir.output.deployed}\${jar.filename}.jar"
-
jadfile="${dir.output.deployed}\${jad.filename}.jad"
-
obfuscate="${wtk.obfuscate}" preverify="true"
-
keepManifestOrder="true">
-
-
<fileset dir="${dir.output.classes}" />
-
</wtkpackage>
-
-
<!-- 用winrar 更新 MF 文件 本块已经无作用,请参考本博客关于Antenna乱码的文章
-
<exec dir="${dir.output}" executable="cmd.exe" os="Windows XP" >
-
<arg line="/c ${winrar.home}\WinRAR.exe A -apMETA-INF ${dir.output.deployed}\${jar.filename}.jar MANIFEST.MF"/>
-
</exec>
-
-->
-
</target>
-
-
<!--下面可以根据需要,可以增加run task
-
<target name="run" depends="build">
-
<wtkrun jadfile="${dir.output}/${jad.filename}.jad"
-
device="DefaultColorPhone" wait="true" >
-
</wtkrun>
-
</target>
-
-->
-
</project>
说明:
- 直接把这个文件存为 Build.xml,放在工程的根目录上,eclipse的工程目录刷新一下,就OK了
- 记得自己更改自己的WTK和Proguard路径,还有一些其他的JAD属性和Midlet属性
- 还有就是当前这个版本,是不支持JAD和MANIFEST.MF中文名字的,也就是暂时不支持UTF-8格式,就会造成中文乱码,是因为Antenna包的问题, 我认为是BUG,但是看到官方说明上,也已经提醒了,以后会支持UTF-8格式,我个人已经发现这个问题的一个解决方法,可以看一下这篇文章 《Antenna生成JAD和MANIFEST.MF中文乱码一种解决方法(UTF-8)》
4. 添加预处理
-
//#ifdef Nokia/7610
-
//# System.out.println("如果是7610机型,会自动生成");
-
//#else
-
//#endif
预处理以后,会自动处理,很方便吧,以后移植起来就很方便了,而且还支持XML的参数,也可以控制J2ME程序不同版本,相当的强大!更多的预处理功能,参考官方文档就可以了
6. 运行
在左边的工程区,找到Build.xml,右键 Ant Build, OK, 运行完毕,生成
5. 我写的XML,生成目录结构
-工程目录
-bin
-src
-res
-build
(Antenna打包路径)
-classes (存放class文件和资源文件)
-deployed
(生成的jad和jar文件)
-dest (预编译后,生成的java文件)
-deployed
参考文章: 《Antenna与j2me打包》