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

J2ME Polish Build 功能深度應用指南

     編輯:J2ME

前言

J2ME Polish 是強大的 J2ME 構建與預處理框架,核心優勢在於:**Ant 擴充構建腳本**、**龐大裝置資料庫**、**預處理指令實現多版本構建**。本文聚焦 Build 功能,涵蓋安裝、Eclipse 整合、build.xml 核心配置、裝置資料庫應用與預處理實戰。

安裝與 Eclipse 整合 (Mepose 插件)

  • 官網下載 j2mepolish-2.x-installer.jar 執行安裝
  • 安裝向導勾選 Eclipse Integration (Mepose) 並指定 Eclipse 目錄,自動安裝插件
  • 驗證:File → New → Project 出現 J2ME Polish Project 即成功
  • 無插件亦可:專案目錄結構遵循範例,直接 Right-click build.xml → Run As → Ant Build

專案結構與 build.xml 核心目標

project/
├── build.xml          # Ant 構建腳本 (核心)
├── src/               # Java 源碼 (含預處理指令)
├── resources/         # 圖片、音效、資料檔
├── build/             # 輸出目錄 (自動生成)
│   ├── compiled/      # 編譯類別
│   ├── packaged/      # JAR/JAD
│   └── preprocessed/  # 預處理後源碼 (除錯用)
└── lib/               # 第三方庫

build.xml 關鍵區塊

區塊用途關鍵屬性/子元素
<j2me>MIDlet 元資訊name, version, vendor, mainClass, <jad> 自定屬性
<devices>目標裝置群引用裝置資料庫群組/識別碼,決定構建哪些版本
<build>構建控制usePolishGui="false" (未用 Polish UI 必關閉,否則增大 JAR)
<preprocess>預處理器定義符號、引入裝置能力、條件編譯邏輯

裝置資料庫:跨機型適配的核心資產

Polish 內建 230+ 裝置定義 (devices.xml),涵蓋:螢幕尺寸、Heap 大小、支援 API (MMAPI, JSR-82, Nokia UI...)、已知 Bug、字型大小、最大 JAR 限制等。

裝置定義範例 (Nokia 6600)

<device>
  <identifier>Nokia/6600</identifier>
  <groups>Series60</groups>
  <features>hasCamera</features>
  <capability name="ScreenSize" value="176x208"/>
  <capability name="HeapSize" value="3mb"/>
  <capability name="JavaPackage" value="mmapi, wmapi, btapi, jtwi"/>
  <capability name="JavaPlatform" value="MIDP/2.0"/>
  <capability name="Bugs" value="BluetoothRfcommInputStream"/>
  <capability name="Font.small" value="15"/>
  <capability name="Font.medium" value="16"/>
  <capability name="Font.large" value="21"/>
</device>
  • groups:繼承關係 (Series60 → Nokia-UI),決定預處理符號 #if nokia-ui 為真
  • capabilities:構建時可用 ${polish.ScreenSize} 等變數注入代碼/資源

預處理實戰:一碼多版本

build.xml 指定目標裝置

<devices>
  <requirement name="Identifier" value="Nokia/6600,Motorola/E680"/>
</devices>

源碼中條件編譯

public void drawClip(Graphics g, int x, int y, Image img, 
                     int clipX, int clipY, int clipW, int clipH, int mode) {
    //#if polish.api.nokia-ui
        // Nokia UI 專用裁切繪製
        DirectUtils.drawRegion(g, img, clipX, clipY, clipW, clipH, mode, x, y, 0);
    //#else
        // MIDP 2.0 標準裁切
        g.setClip(x, y, clipW, clipH);
        g.drawImage(img, x - clipX, y - clipY, Graphics.TOP | Graphics.LEFT);
    //#endif
}

// 取得裝置能力注入常數
//#= int HEAP_SIZE = ${polish.HeapSize}; // 預處理後 → int HEAP_SIZE = 3145728;
//#= String SCREEN = "${polish.ScreenSize}"; // → "176x208"

構建產出

執行 ant 後,build/preprocessed/ 下生成各裝置專屬源碼,build/packaged/ 下產出 App_Nokia_6600.jar/jad、App_Motorola_E680.jar/jad 等差異化封裝。

優缺點深度思考

優點缺點/限制
裝置資料庫極其豐富,消除手工收集規格痛苦構建邏輯集中在單一 build.xml,多資源目錄/多 JAD 屬性差異化配置較繁瑣
預處理指令直觀,條件編譯零學習成本依賴 Polish 自帶庫 (midp2.0.jar 等),升級不便
Ant 生態相容,CI/CD 整合無縫學習曲線:進階功能 (資源預處理、混淆整合) 需深入文檔
支援資源預處理 (圖片自動縮放、音訊轉碼)社群活躍度下降,新機型資料庫更新滯後

替代方案對比

  • Antenna:純 Ant 任務庫,支援預處理、混淆、簽章、上傳。無裝置資料庫,但可整合 Polish 資料庫。輕量、活躍。
  • J2ME Device DB:專注裝置資料庫與預處理,獨立於構建工具。
  • Maven + j2me-maven-plugin:現代化構建,依賴管理優越,但 J2ME 生態庫較少。

總結

J2ME Polish Build 將「裝置碎片化」轉化為「構建時參數化」,配合預處理實現 單一代碼庫 → 多優化版本。核心價值在於裝置資料庫與預處理器的結合。對於維護舊版 J2ME 專案或需支援大量機型的團隊,仍是極具性價比的選擇。新專案建議評估 Ant/Maven + Antenna 組合,獲得更現代的構建體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved