国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

在Eclipse中使用Ant來自動(dòng)編譯J2me程序

2019-11-18 12:53:44
字體:
供稿:網(wǎng)友

  今天是比較郁悶的一天,一不小心把eclipse的一個(gè)j2me項(xiàng)目中的verified/classes目錄中的東東刪除了。之后才發(fā)現(xiàn)eclipse是如何懲罰我的:它再也不會(huì)在這個(gè)目錄中生成class了,呵呵,罷工了我的工。
  
  為什么eclipse不是想netbeans那樣用ant來編譯、運(yùn)行j2me項(xiàng)目那??好在本人目前正在研究ant,呵呵,小試牛刀地用了2小時(shí)做了個(gè)比較完善的ant腳本可以來彌補(bǔ)一下eclipse對(duì)我心情的打擊了。
  
  下面我把這個(gè)腳本和源程序(含demo)貢獻(xiàn)出來,大家一起研究探討。
  
  完成以下功能:
  1.建立基本目錄框架
  2.編譯src目錄中的源文件
  3.調(diào)用PReverify.exe對(duì)類文件進(jìn)行驗(yàn)證
  4.將類文件生成jar包
  5.調(diào)用proguard類對(duì)jar包進(jìn)行混淆,并解壓縮
  6.將經(jīng)過混淆、解壓縮后的類、資源文件生成jar包,復(fù)制src目錄中的jad文件,完成程序部署
  7.調(diào)用emulator運(yùn)行程序
  
  用法:
  只需要修改一下CONF.properties文件中的屬性:
  1.midp.lib.dir-WTK的lib目錄路徑(位于CONF.properties文件中)
  2.midp.lib.path-根據(jù)需要擴(kuò)展使用的jar(位于CONF.properties文件中)
  3.programName-生成jar/jad文件的名字
  在本腳本中可修改的地方:
  preverify.exe和emulator.exe的具體參數(shù)可以根據(jù)需要修改。
  
  注重:
  1.src目錄中需要有MANIFEST.MF和${programName}.jar文件,這些將用在生成jar和部署程序時(shí).
  2.res目錄中放置使用的png圖片文件.
  
  附加類庫:
  混淆器類Proguard-位于lib中。
  
  文件說明:
  CONF.properties:配置屬性文件
  GEN.properties:生成MANIFEST.MF和${programName}.jad文件的替換屬性文件
  JAD.tmp:生成jad文件用到的替換模板文件
  MANIFEST.tmp:生成MANIFEST.MF文件用到的替換模板文件
  
  <?XML version="1.0" encoding="GBK"?>
  <project name="automake" default="end" basedir=".">
  <property file="CONF.properties"/>
  <property name="src.dir" value="${basedir}/src"/>
  <property name="res.dir" value="${basedir}/res"/>
  <property name="build.dir" value="${basedir}/build"/>
  <property name="deploy.dir" value="${basedir}/deploy"/>
  <property name="package.dir" value="${basedir}/package"/>
  <property name="package.extract.dir" value="${package.dir}/extract"/>
  <property name="preverified.dir" value="${basedir}/preverified"/>
  <property name="preverified.noObfusedClass.dir" value="${preverified.dir}/noObfused/classes"/>
  <property name="preverified.obfusedClass.dir" value="${preverified.dir}/obfused/classes"/>
  <property name="preverify.bin" value="${wtk.home.dir}/bin/preverify.exe"/>
  <property name="emulator.bin" value="${wtk.home.dir}/bin/emulator.exe"/>
  <property name="proguard.lib.dir" value="${basedir}/lib"/>
  <property name="jad.file" value="${programName}.jad"/>
  <target name="init" description="初始化環(huán)境">
  <echo message="初始化目錄"/>
  <delete dir="${build.dir}"/>
  <delete dir="${deploy.dir}"/>
  <delete dir="${package.dir}"/>
  <delete dir="${preverified.dir}"/>
  <mkdir dir="${build.dir}"/>
  <mkdir dir="${deploy.dir}"/>
  <mkdir dir="${package.dir}"/>
  <mkdir dir="${package.extract.dir}"/>
  <mkdir dir="${preverified.dir}"/>
  <mkdir dir="${preverified.noObfusedClass.dir}"/>
  <mkdir dir="${preverified.obfusedClass.dir}"/>
  </target>
  <target name="complie" depends="init" description="編譯">
  <echo message="編譯程序"/>
  <Javac srcdir="${src.dir}" destdir="${build.dir}">
  <bootclasspath path="${midp.lib.dir}"/>
  <classpath>
  <fileset dir="${midp.lib.dir}" includes="*.jar"/>
  </classpath>
  </javac>
  </target>
  <target name="verifyForNoObfuscate" description="驗(yàn)證j2me的class,將驗(yàn)證后的class輸出到${preverified.noObfusedClass.dir}">
  <echo message="驗(yàn)證生成的class,將驗(yàn)證后的class輸出到${preverified.noObfusedClass.dir}"/>
  <exec executable="${preverify.bin}" searchpath="false">
  <arg line="-classpath ${midp.lib.path}"/>
  <arg line="-d ${preverified.noObfusedClass.dir}"/>
  <arg line="${build.dir}"/>
  </exec>
  </target>
  <target name="genManifest" description="根據(jù)模板屬性文件的值生成Manifest文件">
  <echo message="根據(jù)模板屬性文件的值生成Manifest文件"/>
  <!--
  使用${programName}替換掉屬性文件GEN.properties中的@PROGRAMNAME@
  -->
  <replace file="GEN.properties"
  token="@PROGRAMNAME@"
  value="${programName}"
  />
  <!--
  使用GEN.properties文件中的屬性值替換掉模板文件MANIFEST.tmp中的對(duì)應(yīng)屬性值,
  將替換后的數(shù)據(jù)復(fù)制到${src.dir}/MANIFEST.MF
  -->
  <copy file="MANIFEST.tmp"
  tofile="${src.dir}/MANIFEST.MF">
  <filterset begintoken="@" endtoken="@">
  <filtersfile file="GEN.properties"/>
  </filterset>
  </copy>
  </target>
  <target name="package" description="將class打包,輸出到${package.dir}">
  <echo message="將class打包,輸出到${package.dir}"/>
  <jar basedir="${preverified.noObfusedClass.dir}"
  jarfile="${package.dir}/${programName}-noObfused.jar"
  manifest="${src.dir}/MANIFEST.MF"   >
  <fileset dir="${res.dir}" includes="**/*.png"/>
  </jar>
  </target>
  <target name="obfuscate" description="對(duì)打包后的jar文件進(jìn)行混淆,然后解壓縮至${package.extract.dir}">   <echo message="對(duì)打包后的jar文件進(jìn)行混淆,然后解壓縮至${package.extract.dir}"/>
  <java fork="true" classname="proguard.ProGuard">
  <classpath path="${proguard.lib.dir}/proguard.jar"/>
  <arg line="-libraryjars ${midp.lib.path}"/>
  <arg line="-injar ${package.dir}/${programName}-noObfused.jar"/>
  <arg line="-outjar ${package.dir}/${programName}-obfused.jar"/>
  <!--保留MIDlet的類聲明不被混淆-->
  <arg line="-keep 'public class * extends javax.microedition.midlet.MIDlet'"/>
  <!--打印被保留的類名-->
  <arg line="-printseeds"/>
  </java>
  <unjar src="${package.dir}/${programName}-obfused.jar"
  dest="${package.extract.dir}"   />
  </target>
  <target name="verifyForObfuscate" description="驗(yàn)證被混淆的class,輸出到${preverified.obfusedClass.dir}">
  <echo message="驗(yàn)證被混淆的class,輸出到${preverified.obfusedClass.dir}"/>   <exec executable="${preverify.bin}" searchpath="false">
  <arg line="-classpath ${midp.lib.path}"/>
  <arg line="-d ${preverified.obfusedClass.dir}"/>
  <arg line="${package.extract.dir}"/>
  </exec>
  <copy todir="${preverified.obfusedClass.dir}">
  <fileset dir="${package.extract.dir}" includes="**/*.png"/>
  </copy>
  </target>
  <target name="deploy" description="將經(jīng)過驗(yàn)證的混淆后的class打包,部署在delpoy目錄">
  <echo message="將經(jīng)過驗(yàn)證的混淆后的class打包,部署在${deploy.dir}目錄"/>
  <jar basedir="${preverified.obfusedClass.dir}"
  jarfile="${deploy.dir}/${programName}.jar"
  manifest="${src.dir}/MANIFEST.MF"
  >
  <fileset dir="${preverified.obfusedClass.dir}" includes="**/*.class;*.png"/>
  </jar>
  </target>
  <target name="genJad" description="在${deploy.dir}目錄生成JAD文件">
  <echo message="在${deploy.dir}目錄生成JAD文件"/>
  <length file="${deploy.dir}/${programName}.jar" property="jarsize"/>
  <echo message="獲得jar文件長(zhǎng)度:${jarsize}"/>
  <replace file="GEN.properties"
  token="@JARSIZE@"
  value="${jarsize}"
  />
  <replace file="GEN.properties"
  token="@PROGRAMNAME@"
  value="${programName}"
  />
  <copy file="JAD.tmp" tofile="${deploy.dir}/${programName}.jad">
  <filterset begintoken="@" endtoken="@">
  <filtersfile file="GEN.properties"/>
  </filterset>
  </copy>
  </target>

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 明水县| 肃北| 罗田县| 光山县| 衡东县| 靖州| 墨竹工卡县| 义乌市| 威信县| 杭锦后旗| 凤冈县| 平遥县| 游戏| 青州市| 镇坪县| 兴仁县| 维西| 呼玛县| 桑植县| 连山| 阳泉市| 五河县| 保定市| 西昌市| 额尔古纳市| 陆河县| 军事| 海口市| 比如县| 合阳县| 宜川县| 马鞍山市| 广水市| 鄂尔多斯市| 汕头市| 大丰市| 襄城县| 营山县| 水富县| 织金县| 株洲县|