今天是比較郁悶的一天
一不小心把eclipse的一個j
me項目中的verified/classes目錄中的東東刪除了
之後才發現eclipse是如何懲罰我的
它再也不會在這個目錄中生成class了
呵呵
罷工了我的工
為什麼eclipse不是想netbeans那樣用ant來編譯
運行j
me項目那??好在本人目前正在研究ant
呵呵
小試牛刀地用了
小時做了個比較完善的ant腳本可以來彌補一下eclipse對我心情的打擊了
下面我把這個腳本和源程序(含demo)貢獻出來
大家一起研究探討
完成以下功能:
建立基本目錄框架
編譯src目錄中的源文件
調用preverify
exe對類文件進行驗證
將類文件生成jar包
調用proguard類對jar包進行混淆
並解壓縮
將經過混淆
解壓縮後的類
資源文件生成jar包
復制src目錄中的jad文件
完成程序部署
調用emulator運行程序
用法
只需要修改一下CONF
properties文件中的屬性
midp
lib
dir
WTK的lib目錄路徑(位於CONF
properties文件中)
midp
lib
path
根據需要擴展使用的jar(位於CONF
properties文件中)
programName
生成jar/jad文件的名字
在本腳本中可修改的地方:
preverify
exe和emulator
exe的具體參數可以根據需要修改
注意:
src目錄中需要有MANIFEST
MF和${programName}
jar文件
這些將用在生成jar和部署程序時
res目錄中放置使用的png圖片文件
附加類庫
混淆器類Proguard
位於lib中
文件說明:
CONF
properties:配置屬性文件
GEN
properties:生成MANIFEST
MF和${programName}
jad文件的替換屬性文件
JAD
tmp:生成jad文件用到的替換模板文件
MANIFEST
tmp:生成MANIFEST
MF文件用到的替換模板文件
<?xml version=
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=
驗證j
me的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>
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28151.html