JAD/MANIFEST 中文欄位 (MIDlet-Name、MIDlet-Description、MIDlet-Vendor) 在手機/模擬器顯示亂碼、方塊字、甚至導致安裝失敗。
jadtool / Ant 任務生成的 JAD 亦常為平台預設編碼META-INF/MANIFEST.MFMETA-INF/ 覆蓋jadtool -jar MyGame.jar (會讀取 JAR 內 MANIFEST 自動生成)| 誤區 | 正確做法 |
|---|---|
| 直接用記事本修改 JAD 存檔 | 記事本存檔常帶 BOM 或非 UTF-8,必須用支援編碼轉換的編輯器 |
| JAD 與 MANIFEST 編碼不一致 | 兩者**必須同為 UTF-8 無 BOM** |
| 中文長度過長 | MIDlet-Name 建議 < 30 字元,超長會被截斷或換行 |
| 奇數/偶數字元長度影響 | 純屬謠言,UTF-8 無此問題 |
| JAR 內 MANIFEST 未同步更新 | JAD 僅供安裝參考,**手機實際讀取 JAR 內 MANIFEST**,兩者內容必須一致 |
<target name="build-jad" depends="jar">
<!-- 1. 確保 MANIFEST 為 UTF-8 -->
<copy file="src/META-INF/MANIFEST.MF" tofile="build/MANIFEST.MF" encoding="UTF-8"/>
<!-- 2. 更新 JAR 內 MANIFEST -->
<jar jarfile="build/MyGame.jar" update="true" manifest="build/MANIFEST.MF"/>
<!-- 3. 生成 JAD (WTK jadtool 需在 classpath) -->
<exec executable="jadtool" failonerror="true">
<arg value="-jar"/>
<arg value="build/MyGame.jar"/>
<arg value="-output"/>
<arg value="build/MyGame.jad"/>
</exec>
<!-- 4. 強制 JAD 為 UTF-8 -->
<copy file="build/MyGame.jad" tofile="build/MyGame.jad" encoding="UTF-8"/>
</target>
**核心鐵律:MANIFEST 與 JAD 均為 UTF-8 無 BOM**。工具鏈固化 (Ant/Maven/Gradle + 編輯器規範) 可徹底杜絕人為疏漏。遇到亂碼,先檢查兩檔案實際編碼 (Notepad++ 右下角顯示),再按流程修正。