Antenna介绍
Antenna是基于ant的j2me开发工具。可以使用antenna对j2me程序进行 编译、校验、打包、混淆等,甚至可以通过antenna所定义的task,运行已经打包完成的jar;还可以将打包完成jad和jar部署到OTA服务器上。以上功能,只是对ant的扩展,在我以前的文章《使用Ant对j2me程序打包》也讨论。其实,以上所说的功能,直接使用ant也能实现,只是antenna对这些task进行了扩展,使得对j2me程序的打包过程更加的傻瓜话罢了。貌似,话说到这里有些自相矛盾了,既然这些功能ant都能实现,还介绍antenna干嘛呢?其实,本人最推崇antenna的,不仅是它对j2me打包过程的简化,而且特别赞赏它对预处理的支持。除此之外,antenna的预处理,结合了j2mepolish所提供的device.xml数据库,就是说,我们也可以像在j2mepolish中那样,对源程序进行相关的处理,以达到多机型时配的要求。
Antenna中的预处理
Antenna中的预处理原来与j2mepolish等支持预处理的软件一致,都是在编译之前,对代码中定义的预处理脚本进行处理,并生成符合脚本定义规则的代码。
Antenna常用功能
WtkJad 生成Jad文件
WtkBuild 编译j2me项目
WtkPackage 打包
WtkMakePrc 将Jad/Jar转换成可以PalmOS上可以运行的PRC文件格式
WtkRun 启动模拟器
WtkPreverify 预校验
WtkObfuscate 混淆,需要指定混淆器(proguard/retroguard)
WtkPreprocess 预处理
http://antenna.sourceforge.net/ 开源论坛可以有详细的文档说明。
准备开发工具
1. EclipseIDE
现在Eclipse都集成了Ant 工具,在Ant运行环境中导入 antenna.jar 包。
Eclipse windows -> Preference -> Ant -> Runtime ->
Classpath -> Ant Home Entries -> Add External Jars
导入 Antenna jar包。
2. Antenna 包 下载地址: http://antenna.sourceforge.net/
3. progurad 混淆器 下载地址: http://proguard.sourceforge.net/
配置好了环境后就可以使用antenna 进行打包了。
下面是完整一个bulid.xml 例子
<?xml version="1.0" encoding="UTF-8"?>
<project name="weibo" default="build">
<taskdef resource="antenna.properties" />
<target name="init" description="变量定义">
<echo message="---------------------Define variable---------------------" />
<!-- 机型 -->
<property name="mobile.vendor" value="LG/GD880" />
<!-- JAD与JAR -->
<property name="jad.filename" value="weibo_10101011" />
<property name="jad.midlet-name" value="Weibo" />
<property name="jad.midlet-vender" value="sina-cn" />
<property name="jad.midlet-version" value="1.0.0" />
<property name="jad.midlet-class" value="" />
<property name="jad.midlet-icon" value="/logo.png" />
<!-- WTK参数 -->
<property name="wtk.cldc.version" value="1.1" />
<property name="wtk.midp.version" value="2.0" />
<property name="wtk.all.enabled" value="true" />
<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="true" />
<!-- 系统参数 -->
<property name="basedir" value="." />
<property name="wtk.home" value="C:\WTK2.5.2" />
<property name="wtk.proguard.home" value="C:\proguard4.4" />
<!-- 不被修改的参数 -->
<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 encoding="utf-8" 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 encoding="utf-8"
srcdir="${dir.output.dist}" destdir="${dir.output.classes}"
debug="${wtk.debug}" >
</wtkbuild>
</target>
<target name="build" depends="clean,compile" description="生成">
<echo message="---------------------Packaging library---------------------" />
<copy todir="${dir.output.classes}">
<fileset dir="${dir.res}" />
</copy>
<mkdir dir="${dir.output.deployed}" />
<!-- 执行自己修改的wtkjad 添加jad的属性-->
<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-name}" 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-Pro
<attribute name="Manifest-Version" value="${jad.manifast.version}" />
</wtkjad>
<!-- 执行自己修改的wtkpackage -->
<wtkpackage encoding="utf-8" 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>
</target>
<target name="clean-build" depends="clean,build" description="cleanbuild">
<echo message="---------------------Clean Build---------------------" />
<delete dir="${dir.output}" />
</target>
<!--下面可以根据需要,可以增加run task
<target name="run" depends="build">
<wtkrun jadfile="${dir.output}/${jad.filename}.jad"
device="DefaultColorPhone" wait="true" >
</wtkrun>
</target>
-->
</project>