Polish 透過 XML 配置管理裝置特性、API 支援、廠商差異、CSS 樣式等。核心配置檔:
apis.xml:JCP 規範支援的 API 庫描述(如 MMAPI)custom-css-attributes.xml:自訂 GUI 元件 CSS 樣式屬性custom-devices.xml:補充官方未收錄的裝置定義devices.xml:所有已知裝置定義(可修改現有或新增)groups.xml:裝置群組(資源分類依據)vendors.xml:自訂廠商 J2ME 規範編輯 vendors.xml,複製既有廠商(如 moto)修改:
<vendor>
<name>3Geye</name>
<capability name="JavaConfiguration" value="CLDC/1.0"/>
<features>hasCommandKeyEvents</features>
<capability name="keys.CommandKeys" value="21, 22, 23"/>
<capability name="key.LeftSoftKey" value="21"/>
<capability name="key.RightSoftKey" value="22"/>
<capability name="key.MiddleSoftKey" value="23"/>
<capability name="key.ChangeInputModeKey" value="48"/>
<capability name="key.ChangeNumericalAlphaInputModeKey" value="35"/>
<capability name="TextField.charactersKeyStar" value=" "/>
</vendor>
編輯 devices.xml:
<device supportsPolishGui="true">
<identifier>3Geye/k700</identifier>
<features>isVirtual</features>
<groups>Series60</groups>
<capability name="OS" value="Symbian"/>
<capability name="JavaPackage" value="mmapi, wmapi, pdaapi"/>
<capability name="JavaPlatform" value="MIDP/2.0"/>
<capability name="JavaConfiguration" value="CLDC/1.0"/>
<capability name="VideoFormat" value="3gpp"/>
<capability name="SoundFormat" value="midi, amr"/>
<capability name="Bugs" value="dateFieldAcceptsNoNullDate"/>
</device>
pdaapi 對應 JSR 75 (PDA Optional Packages) 支援。
<deviceRequirements>
<requirement name="Identifier" value="3Geye/k700"/>
</deviceRequirements>
[j2mepolish] preprocessing for device [3Geye/k700]
[j2mepolish] compiling for device [3Geye/k700]
[j2mepolish-Javac-3Geye/k700] Compiling 3 source files...
[j2mepolish] obfuscating for device [3Geye/k700]...
[j2mepolish] preverifying for device [3Geye/k700]...
[j2mepolish] creating JAR file [.../sysinfo.jar]
[j2mepolish] creating JAD file [.../sysinfo.jad]
BUILD SUCCESSFUL
Total time: 14 seconds
每個 capability 會產生同名預處理符號,可在原始碼中用 //#if、//#= 條件編譯:
//#if polish.Vendor == Sagem
//#= int screenWidth = ${polish.ScreenWidth};
//#else
//#= int screenWidth = UNKNOWN_WIDTH;
//#endif