Eclipse与Antenna整合开发J2ME程序
最近一直在寻找一种简单的方式来给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 System.out.println("不是7610机型,自动屏蔽"); //#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打包》
Trackback from your site.
(2)条评论
口角度
| #
支持下
回复
zwwko@163.com
| #
牛!
回复