Java ME 設備屏幕尺寸、按鍵映射、 API 支援度差異巨大,導致多終端移植成本極高。預處理器在編譯前根據目標設備屬性裁剪代碼,實現「一碼多端」,是解決碎片化的利器。
Mobility Pack 引入的「配置」概念,為每個目標設備定義獨立的構建環境,包含:
//# 開頭,嵌入註釋中#ifdef、#ifndef、#else、#endif、#define、#undefinescreen.width=240、api.mmapi=true)//#ifdef screen.width==240 // 240x320 專用佈局代碼 //#else // 176x208 兼容代碼 //#endif
修改 nbproject/build-impl.xml,在 pre-init target 中添加排除規則:
<target name="pre-init"> <defaultexcludes add="**/*.db"/> <defaultexcludes add="**/*.tmp"/> </target>
防止版本控制、臨時文件打包進 JAR。
| 優點 | 缺點/風險 |
|---|---|
| 單一代碼庫維護多版本 大幅降低移植成本 編譯期裁剪,運行時零開銷 | 代碼可讀性下降(大量條件編譯) 重構風險大:修改可能波及所有版本 調試困難:運行代碼非源碼原貌 |
//#+ //#- 精細裁剪工具方法//#ifdef DEBUG 包裹,發布版自動剔除NetBeans Mobility Pack 預處理器以 IDE 原生集成優勢,成為中小團隊應對 Java ME 碎片化的首選方案。合理架構配合規範使用,可最大化收益、最小化風險。