很多人喜歡用 ant 來編譯打包 Java 應用程序,可以很方便的生成 war 包在 J2EE 容器中運行,我在 sun 的網站上也看到了一篇
用 ant 打包 J2ME 程序的教程:http://wireless.Java.sun.com/midp/articles/ant/
測試了一下,還不錯,但美中不足的是,需要自己事先寫好 manifest.mf 和 jad 文件,於是心有不甘,繼續在 google 上搜速,
終於找了一個很強大的 ant 擴充包,專門打包 J2ME 程序,很實用:http://antenna.sourceforge.Net/
一次性可以自動編譯,預編譯,生成 jar,jad,prc(palm 的運行程序),甚至包括攪亂代碼.你所需要做的只是改少少build.XML
裡的參數.
下面以 UIDemo 為例子,給大家 share 一下打包的過程.(本文適用於有ant使用經驗的用戶)
首先,假定你已經使用過ant,ant_home環境變量已經設置好了,把上述網站下載的antenna-bin.jar加入classpath
我在D:\My Folder\projects\j2me\下建立了一個 UIDemo 目錄,把J2MEWTK\aPPS\UIDemo下的 res,src 兩個目錄 copy 到這裡來,
同級目錄下建立一個 build.xml 文件,build.XML 內容如下,只有做出了中文注釋的幾個地方需要修改:
<?XML version="1.0"?>
<project name="UIdemo" default="build" basedir=".">
<!-- Define the Wireless Toolkit home directory. Needed by the tasks. -->
<!-- 設置 J2MEWTK 路徑. -->
<property name="wtk.home" value="c:\J2MEwtk"/>
<!-- Define some additional propertIEs for this project. Not required. -->
<!-- 設置 midlet 名稱和根路徑. -->
<property name="midlet.name" value="UIDemo"/>
<property name="midlet.home" value="."/>
<!-- Define the tasks. -->
<taskdef name="wtkjad" classname="de.pleumann.antenna.WtkJad"/>
<taskdef name="wtkbuild" classname="de.pleumann.antenna.WtkBuild"/>
<taskdef name="wtkpackage" classname="de.pleumann.antenna.WtkPackage"/>
<taskdef name="wtkmakeprc" classname="de.pleumann.antenna.WtkMakePrc"/>
<taskdef name="wtkrun" classname="de.pleumann.antenna.WtkRun"/>
<taskdef name="wtkpreverify" classname="de.pleumann.antenna.WtkPreverify"/>
<taskdef name="wtkobfuscate" classname="de.pleumann.antenna.WtkObfuscate"/>
<target name="clean">
Java手機網[www.cnjm.Net] <delete failonerror="false" dir="classes"/>
<delete failonerror="false">
<fileset dir=".">
<exclude name="build.XML"/>
</fileset>
</delete>
Java手機網[www.cnjm.Net] </target>
<target name="build">
<!-- Creat a new jad -->
<!-- 指定midlet的類和圖標. -->
<wtkjad jadfile="${midlet.name}.jad"
name="Sun Samples - Demos"
vendor="Sun Microsystems"
version="1.0.3">
<midlet name="UIDemo"
Java手機網[www.cnjm.Net] icon="/res/midp/uidemo/icon.png"
class="midp.uidemo.UIDemo"/>
Java手機網[www.cnjm.Net] </wtkjad>
<mkdir dir="classes"/>
<!-- Compile everything, but don't preverify (yet). -->
<wtkbuild srcdir="${midlet.home}/src"
destdir="classes"
Java手機網[www.cnjm.Net] preverify="false"/>
<!-- Package everything. Most of the necessary information is
contained in the JAD file. Also preverify the result this
time. To obfuscate everything, set the corresponding
parameter to "true" (requires RetroGuard or ProGuard). The
version parameter increments the MIDlet-Version by one. -->
Java手機網[www.cnjm.Net] <!-- 設置是否需要攪亂,是否要預編譯,是否自動識別版本 -->
<wtkpackage jarfile="${midlet.name}.jar"
jadfile="${midlet.name}.jad"
Java手機網[www.cnjm.Net] obfuscate="false"
preverify="true"
autoversion="true">
<!-- Package our newly compiled classes and the
Java手機網[www.cnjm.Net] resources from the WTK's demo application. -->
<fileset dir="classes"/>
<fileset dir="${midlet.home}/res"/>
</wtkpackage>
<!-- Convert the JAR file into a MIDP for PalmOS PRC file. -->
<wtkmakeprc jadfile="${midlet.name}.jad"
prcfile="${midlet.name}.prc"/>
<!-- Start the MIDlet suite -->
<wtkrun jadfile="${midlet.name}.jad" device="DefaultColorPhone"/>
</target>
</project>
最後在命令行下運行ant,一切就是這麼簡單
最後附帶說一下ant的安裝,也非常簡單,下載回來後設置環境變量ANT_HOME到安裝目錄,將%ANT_HOME%\bin加入path就可以了