Eclipse与Antenna整合开发J2ME程序

作者:Wupei  |  发表时间:  |  所属分类: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>

说明:

  1. 直接把这个文件存为 Build.xml,放在工程的根目录上,eclipse的工程目录刷新一下,就OK了 
  2. 记得自己更改自己的WTK和Proguard路径,还有一些其他的JAD属性和Midlet属性 
  3. 还有就是当前这个版本,是不支持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

    |

    牛!

    回复

请在这里留言: