Eclipse下使用Antenna进行J2me打包

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-Profile" value="MIDP-${wtk.midp.version}" />
                        <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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值