• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    在Eclipse中使用Ant來自動編譯J2me程序

    發布: 2007-6-22 07:38 | 作者:   | 來源:   | 查看: 25次 | 進入軟件測試論壇討論

    領測軟件測試網

       
      今天是比較郁悶的一天,一不小心把eclipse的一個j2me項目中的verified/classes目錄中的東東刪除了。之后才發現eclipse是如何懲罰我的:它再也不會在這個目錄中生成class了,呵呵,罷工了我的工。
      

      為什么eclipse不是.netbeans那樣用ant來編譯、運行j2me項目那??好在本人目前正在研究ant,呵呵,小試牛刀地用了2小時做了個比較完善的ant腳本可以來彌補一下eclipse對我心情的打擊了。
      
      下面我把這個腳本和源程序(含demo)貢獻出來,大家一起研究探討。
      
      完成以下功能:
      1.建立基本目錄框架
      2.編譯src目錄中的源文件
      3.調用preverify.exe對類文件進行驗證
      4.將類文件生成jar包
      5.調用proguard類對jar包進行混淆,并解壓縮
      6.將經過混淆、解壓縮后的類、資源文件生成jar包,復制src目錄中的jad文件,完成程序部署
      7.調用emulator運行程序
      
      用法:
      只需要修改一下CONF.properties文件中的屬性:
      1.midp.lib.dir-WTK的lib目錄路徑(位于CONF.properties文件中)
      2.midp.lib.path-根據需要擴展使用的jar(位于CONF.properties文件中)
      3.programName-生成jar/jad文件的名字
      在本腳本中可修改的地方:
      preverify.exe和emulator.exe的具體參數可以根據需要修改。
      
      注意:
      1.src目錄中需要有MANIFEST.MF和${programName}.jar文件,這些將用在生成jar和部署程序時.
      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="初始化環境">
      <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="驗證j2me的class,將驗證后的class輸出到${preverified.noObfusedClass.dir}">
      <echo message="驗證生成的class,將驗證后的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="根據模板屬性文件的值生成Manifest文件">
      <echo message="根據模板屬性文件的值生成Manifest文件"/>
      <!--
      使用${programName}替換掉屬性文件GEN.properties中的@PROGRAMNAME@
      -->
      <replace file="GEN.properties"
      token="@PROGRAMNAME@"
      value="${programName}"
      />
      <!--
      使用GEN.properties文件中的屬性值替換掉模板文件MANIFEST.tmp中的對應屬性值,
      將替換后的數據復制到${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="對打包后的jar文件進行混淆,然后解壓縮至${package.extract.dir}">   <echo message="對打包后的jar文件進行混淆,然后解壓縮至${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="驗證被混淆的class,輸出到${preverified.obfusedClass.dir}">
      <echo message="驗證被混淆的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="將經過驗證的混淆后的class打包,部署在delpoy目錄">
      <echo message="將經過驗證的混淆后的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文件長度:${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>

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>