﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-御风而行</title><link>http://www.blogjava.net/halewang/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 07 May 2026 07:57:56 GMT</lastBuildDate><pubDate>Thu, 07 May 2026 07:57:56 GMT</pubDate><ttl>60</ttl><item><title>千辛万苦终于搞好个J2ME的ant用的build.xml（总体是和王森学得）</title><link>http://www.blogjava.net/halewang/archive/2007/10/24/155475.html</link><dc:creator>御风而行</dc:creator><author>御风而行</author><pubDate>Wed, 24 Oct 2007 02:15:00 GMT</pubDate><guid>http://www.blogjava.net/halewang/archive/2007/10/24/155475.html</guid><wfw:comment>http://www.blogjava.net/halewang/comments/155475.html</wfw:comment><comments>http://www.blogjava.net/halewang/archive/2007/10/24/155475.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/halewang/comments/commentRss/155475.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/halewang/services/trackbacks/155475.html</trackback:ping><description><![CDATA[<p>俺用的是JDK1.5，WTK2.5.2，apache-ant-1.7.0，retroguard-v2.3.1<br />
俺的目录结构是这样的<br />
<img height="315" alt="" src="http://www.blogjava.net/images/blogjava_net/halewang/midlet.JPG" width="775" border="0" /><br />
--下面是build.xml的内容<br />
&lt;?xml version="1.0" encoding="GB2312"?&gt;<br />
&lt;project name="第一个MIDP程序" default="all" basedir="."&gt;<br />
&nbsp; &lt;!-- 引入位于build.properties之中的常用属性--&gt;<br />
&nbsp; &lt;property file="build.properties"/&gt;<br />
&nbsp; <br />
&nbsp; &lt;target name="prepare" description="准备工作"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;mkdir dir="${build.dir}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;mkdir dir="${build.dir.classes}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;mkdir dir="${build.dir.obfused}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;mkdir dir="${build.dir.preverified}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;mkdir dir="${build.dir.bin}"/&gt;<br />
&nbsp; &lt;/target&gt;<br />
&nbsp; <br />
&nbsp; &lt;target name="cleandir" description="清除目录"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;delete dir="${build.dir}"/&gt;<br />
&nbsp; &lt;/target&gt;<br />
&nbsp; <br />
&nbsp; &lt;target name="compile" description="编译源代码" depends="prepare"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;javac debug="on"&nbsp; bootclasspath="${midp.api}" classpath="${midp.api};."<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; srcdir="${src.dir}" destdir="${build.dir.classes}"/&gt;<br />
&nbsp; &lt;/target&gt;</p>
<p>&nbsp; &lt;target name="beforeobfuse" description="混淆前先打包成JAR" depends="compile"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;jar basedir="${build.dir.classes}" jarfile="${build.dir.bin.jarunobfus}"/&gt;<br />
&nbsp; &lt;/target&gt;</p>
<p>&nbsp; &lt;target name="obfuscate" description="使用混淆器" depends="beforeobfuse"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;java fork="yes" classname="RetroGuard" classpath="${obfuscator.lib};${midp.api};."&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg line="${build.dir.bin.jarunobfus}"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg line="${build.dir.bin.jarobfused}"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg line="${obfuscator.script}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/java&gt;<br />
&nbsp; &lt;/target&gt;</p>
<p>&nbsp; &lt;target name="afterobfuse" description="混淆后再把JAR解包" depends="obfuscate"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;unzip src="${build.dir.bin.jarobfused}" dest="${build.dir.obfused}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;delete dir="${build.dir.obfused}/META-INF"/&gt;<br />
&nbsp; &lt;/target&gt;</p>
<p>&nbsp; &lt;target name="preverify" description="预先审核" depends="afterobfuse"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;exec executable="${midp.home}/bin/preverify1.1"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg line="-classpath ${midp.api};."/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg line="-d ${build.dir.preverified}"/&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg line="${build.dir.obfused}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/exec&gt;<br />
&nbsp; &lt;/target&gt;</p>
<p>&nbsp; &lt;target name="package" description="包装成JAR与JAD" depends="preverify"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;jar basedir="${build.dir.preverified}" jarfile="${build.dir.bin.jar}" manifest="MANIFEST.MF"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;fileset dir="${res.dir}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/jar&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;copy file="${jad}" tofile="${build.dir.bin}/${jad}"/&gt;<br />
&nbsp; &lt;/target&gt;<br />
&nbsp; <br />
&nbsp; &lt;target name="run" description="使用模拟器执行"&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;exec executable="${midp.home}/bin/emulator"&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;arg line="-Xdescriptor:${build.dir.bin}/${jad}"/&gt;<br />
&nbsp;&nbsp;&nbsp; &lt;/exec&gt;<br />
&nbsp; &lt;/target&gt;</p>
<p>&nbsp; &lt;target name="all" description="完成所有步骤" depends="cleandir,package,run"/&gt;<br />
&nbsp;&nbsp;&nbsp; <br />
&lt;/project&gt;<br />
<br />
--下面是build.properties的内容<br />
#此文件用来设定一些常用属性</p>
<p>#项目名称<br />
name=MyFirst</p>
<p>#JAD与JAR的文件名<br />
jar=${name}.jar<br />
jad=${name}.jad</p>
<p>#源文件所在路径<br />
src.dir=src</p>
<p>#资源文件所在路径<br />
res.dir=res</p>
<p>#建构产物放置位置<br />
build.dir=build</p>
<p>#编译后类文件的放置位置<br />
build.dir.classes=${build.dir}/classes<br />
#未经过混淆的JAR文件名<br />
build.dir.bin.jarunobfus=${build.dir.bin}/${name}-unobfus.jar<br />
#经过混淆的JAR文件名<br />
build.dir.bin.jarobfused=${build.dir.bin}/${name}-obfused.jar<br />
#混淆后类的放置位置<br />
build.dir.obfused=${build.dir}/obfused</p>
<p>#经过预先审核之后的类文件放置位置<br />
build.dir.preverified=${build.dir}/preverified</p>
<p>#JAD与JAR的放置位置<br />
build.dir.bin=${build.dir}/bin<br />
#最终的JAR文件名<br />
build.dir.bin.jar=${build.dir.bin}/${jar}</p>
<p>#J2ME Wireless Toolkit所在路径，这个路径前的/耽误我很长时间<br />
midp.home=D:/WTK252</p>
<p>#MIDP程序库所在路径<br />
midp.api=${midp.home}/lib/midpapi21.jar;${midp.home}/lib/cldcapi11.jar</p>
<p>#空白MIDP程序库所在路径<br />
midp.emptyapi=${midp.home}/wtklib/kenv.zip</p>
<p>#混淆器与控制文件<br />
obfuscator.lib=retroguard.jar<br />
obfuscator.script=script.rgs</p>
<br />
--下面是script.rgs文件内容<br />
.class my/DirstMIDlet<br />
<br />
--下面是MANIFEST.MF文件内容<br />
MIDlet-Name: HelloWorld<br />
MIDlet-Version: 1.0.0<br />
MIDlet-Vendor: Sun Microsystems,Inc.<br />
MIDlet-Description: Sample Hello World MIDlet<br />
MIDlet-Info-URL: http://java.sun.com/j2me/<br />
MIDlet-1: HelloWorld,, my.FirstMIDlet<br />
MicroEdition-Profile: MIDP-2.1<br />
MicroEdition-Configuration: CLDC-1.1<br />
<br />
--下面是MyFirst.jad文件内容<br />
MIDlet-Name: HelloWorld<br />
MIDlet-Version: 1.0.0<br />
MIDlet-Vendor: Sun Microsystems,Inc.<br />
MIDlet-Description: Sample Hello World MIDlet<br />
MIDlet-Info-URL: http://java.sun.com/j2me/<br />
MIDlet-Jar-URL: MyFirst.jar<br />
MIDlet-Jar-Size: 1020<br />
MIDlet-1: HelloWorld,, my.FirstMIDlet<br />
MicroEdition-Profile: MIDP-2.1<br />
MicroEdition-Configuration: CLDC-1.1<br />
<br />
<img src ="http://www.blogjava.net/halewang/aggbug/155475.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/halewang/" target="_blank">御风而行</a> 2007-10-24 10:15 <a href="http://www.blogjava.net/halewang/archive/2007/10/24/155475.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>