在Eclipse里调用ant执行编译、打包、混淆

虽然在eclipse里通过wtk可以进行一键式的编译,打包,混淆,但有时我们需要针对具体过程进行具体参数的设置,这时使用ant就很方便了。

首先要学习ant的基本知识,参考文章:

Apache_Ant——使_Java_项目生成易如反掌,作者Matt Chapman

实际上常用是 Antenna,它 是基于 ant 的 j2me 开发工具。可以参考文章:

Antenna与j2me打包http://www.iteye.com/topic/117568

Antenna的官方文档http://antenna.sourceforge.net/index.php#synopsis

我在eclipse里面打开的Project是LWUITDemo,ant代码是基于网上一个build.xml文件修改的:

《 j2me build.xml 例子》 作者: Peter http://hi.baidu.com/wapeter/blog/item/3beb9f2268f571f2d6cae2d2.html

 遇到的问题:

调用proguard混淆会出错,因为是wtkpackage里面的obfuscate设置为true,但是又没有在下面加上具体的混淆参数。解决办法为单独用wtkobfuscate进行混淆,代码如下:

<target name="obfuscation" depends="build">
          <echo>Starting obfucate</echo>
  <!--mkdir dir="${dir.output}/Obf"/-->
  <copy file="${dir.output}/${jar.filename}.jar" todir="${dir.output}/Obf"/>
  <copy file="${dir.output}/${jar.filename}.jad" todir="${dir.output}/Obf"/>
  <wtkobfuscate jarfile="${dir.output}/Obf/${jar.filename}.jar"
            jadfile="${dir.output}/Obf/${jar.filename}.jad"  
                    >
          <preserve class="${jad.midlet-class}"/>
          <!--argument value="-injars C:\Java_ME_platform_SDK_3.0\lib\LWUIT.jar"/-->
                 
          <argument value="-libraryjars C:\Java_ME_platform_SDK_3.0\lib\LWUIT.jar;C:\WTK2.5.2\lib\midpapi21.jar;C:\WTK2.5.2\lib\cldcapi11.jar;C:\WTK2.5.2\lib\wma20.jar;C:\WTK2.5.2\lib\mmapi.jar;C:\WTK2.5.2\lib\j2me-ws.jar;C:\WTK2.5.2\lib\j2me-xmlrpc.jar;C:\WTK2.5.2\lib\jsr75.jar;C:\WTK2.5.2\lib\jsr082.jar;C:\WTK2.5.2\lib\jsr184.jar;C:\WTK2.5.2\lib\jsr179.jar;C:\WTK2.5.2\lib\satsa-apdu.jar;C:\WTK2.5.2\lib\satsa-jcrmi.jar;C:\WTK2.5.2\lib\satsa-pki.jar;C:\WTK2.5.2\lib\satsa-crypto.jar;C:\WTK2.5.2\lib\jsr211.jar;C:\WTK2.5.2\lib\jsr238.jar;C:\WTK2.5.2\lib\jsr229.jar;C:\WTK2.5.2\lib\jsr180.jar;C:\WTK2.5.2\lib\jsr234.jar;C:\WTK2.5.2\lib\jsr226.jar;C:\WTK2.5.2\lib\jsr239.jar"/>             
          <argument value="-dontusemixedcaseclassnames"/>
          <argument value="-microedition "/>
          <argument value="-dontnote"/>
          <argument value="-defaultpackage ''"/>
                        
  </wtkobfuscate> 
  </target> 

另外要注意的问题就是preverify。wtkbuild,wtkpackage,wtkobfuscate里面过程都要preverify。如果将wtkbuild的preverify设置为false,wtkpackage打包出来的jar是不能执行的。但将wtkpackage的preverify设置为false,打包出来还是可以运行的。wtkobfuscate需要加上="-microedition"参数,使其针对midp设备进行preverify,否则混淆后的jar也是不能运行的。

你可能感兴趣的:(java,eclipse,ant,jar,开发工具,j2me)