首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

在 Eclipse 中使用 Ant 自動化編譯 J2ME 專案完整指南

     編輯:J2ME

緣起:Eclipse 的「罷工」與 Ant 的救贖

某天不小心刪除了 Eclipse J2ME 專案 verifIEd/classes 目錄下的內容,結果 Eclipse 再也不在該目錄生成 class 檔案——徹底罷工了。與 NetBeans 內建 Ant 建構不同,Eclipse 對 J2ME 的原生支援較弱。正好近期在研究 Ant,花了兩小時編寫了一個功能完整的 Ant 建構腳本,現分享給大家參考。

建構腳本功能清單

  1. 建立基礎目錄結構
  2. 編譯 src 目錄下的原始碼
  3. 調用 preverify.exe 對 class 檔案進行預驗證
  4. 打包生成 JAR 檔案
  5. 調用 ProGuard 進行混淆與壓縮
  6. 將混淆後的 class 與資源檔重新打包,複製 JAD 檔案,完成部署準備
  7. 調用模擬器運行程式

使用說明

核心配置文件:CONF.properties

只需修改以下屬性:

  • midp.lib.dir:WTK lib 目錄路徑
  • midp.lib.path:依需求擴展的 JAR 路徑
  • programName:生成的 JAR/JAD 檔案名稱

preverify.exe 與 emulator.exe 的具體參數可在腳本中自行調整。

目錄結構要求

  • src 目錄需包含 MANIFEST.MF 和 ${programName}.jar(用於打包與部署)
  • res 目錄存放 PNG 圖片資源

第三方庫

  • 混淆器 ProGuard:置於 lib 目錄

關鍵檔案說明

檔案用途
CONF.properties建構配置屬性檔
GEN.properties生成 MANIFEST.MF 與 JAD 的替換屬性檔
JAD.tmpJAD 生成模板
MANIFEST.tmpMANIFEST.MF 生成模板

建構腳本核心目標流程

<target name="init">           <!-- 初始化環境,清理並建立目錄 -->
<target name="compile">        <!-- 編譯原始碼 -->
<target name="verifyForNoObfuscate"> <!-- 預驗證未混淆 class -->
<target name="genManifest">    <!-- 依模板生成 MANIFEST.MF -->
<target name="package">        <!-- 打包未混淆 JAR -->
<target name="obfuscate">      <!-- ProGuard 混淆並解壓 -->
<target name="verifyForObfuscate"> <!-- 預驗證混淆後 class -->
<target name="deploy">         <!-- 打包最終部署 JAR -->
<target name="genJad">         <!-- 生成 JAD 檔案 -->
<target name="recoveryGenProperties"> <!-- 還原被修改的 GEN.properties -->
<target name="run">            <!-- 模擬器運行 -->
<target name="end" depends="compile,verifyForNoObfuscate,genManifest,package,obfuscate,verifyForObfuscate,deploy,genJad,recoveryGenProperties,run"/>

範例配置檔內容

CONF.properties

wtk.home.dir=D:\WTK2.2
midp.lib.dir=${wtk.home.dir}\lib
midp.lib.path=${midp.lib.dir}\cldcapi11.jar;${midp.lib.dir}\midpapi20.jar

GEN.properties(含變數替換標記)

MIDLET_NAME=@PROGRAMNAME@
MIDLET_VERSION=1.0.0
MIDLET_VENDOR=kevin
MIDLET_01_NAME=MainMidlet
MIDLET_01_LOGO=
MIDLET_01_CLASS=com.gamecollege.work.menu.MainMidlet
MIDLET_JAR_URL=@PROGRAMNAME@.jar
MIDLET_JAR_SIZE=@JARSIZE@
ME_PROFILE=MIDP-2.0
ME_CONF=CLDC-1.1

MANIFEST.tmp

MIDlet-Name: @MIDLET_NAME@
MIDlet-Version: @MIDLET_VERSION@
MIDlet-Vendor: @MIDLET_VENDOR@
MIDlet-1: @MIDLET_01_NAME@,@MIDLET_01_LOGO@,@MIDLET_01_CLASS@
MicroEdition-Profile: @ME_PROFILE@
MicroEdition-Configuration: @ME_CONF@

JAD.tmp

MIDlet-Name: @MIDLET_NAME@
MIDlet-Version: @MIDLET_VERSION@
MIDlet-Vendor: @MIDLET_VENDOR@
MIDlet-Jar-URL: @MIDLET_JAR_URL@
MIDlet-Jar-Size: @MIDLET_JAR_SIZE@
MIDlet-1: @MIDLET_01_NAME@,@MIDLET_01_LOGO@,@MIDLET_01_CLASS@
MicroEdition-Profile: @ME_PROFILE@
MicroEdition-Configuration: @ME_CONF@

腳本亮點解析

  • 雙階段預驗證:混淆前後各驗證一次,確保類檔案合規
  • 模板驅動生成:透過 <filterset> 替換標記,維護性極佳
  • 自動還原配置:建構結束自動還原 GEN.properties 中的動態替換值,支援重複建構
  • ProGuard 保留 MIDlet 入口類:-keep 'public class * extends javax.microedition.midlet.MIDlet'
這套腳本可直接套用於中小型 J2ME 專案,適當修改路徑與參數即可投入生產環境。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved