MIDlet-Install-NotifyやMIDlet-Delete-Notifyで「905 Attribute Mismatch」エラー
NetBeansは便利で、MIDP(S!アプリ等)開発で面倒なJADファイルやマニュフェストの編集を簡単にできます。プロジェクトのプロパティを開き、アプリケーション記述子(Application Descriptor)を選択すると下記のような画面が出ます。
ここでMIDlet-Install-NotifyやMIDlet-Delete-Notifyなんかも簡単に設定できるのですが、S!アプリに限ってはここが曲者になります。この画面でMIDlet-Install-NotifyやMIDlet-Delete-Notifyを設定すると、ビルド時に値がJADとマニュフェストの両方に書き込まれます。
これはMIDPの仕様上、下記のドキュメントにもある通り正しい動作であり、MEXAエミュレータでは問題ないのですが、実機ではS!アプリのインストール時に「905 Attribute Mismatch」というエラーが発生します。
The manifest MAY contain the following:(※訳:マニュフェストは下記を含んでも良い)
・ MIDlet-Description
・ MIDlet-Icon
・ MIDlet-Info-URL
・ MIDlet-Data-Size
・ MIDlet-Permissions
・ MIDlet-Permissions-Opt
・ MIDlet-Push-
・ MIDlet-Install-Notify
・ MIDlet-Delete-Notify
・ MIDlet-Delete-Confirm
・ Any application-specific attributes that do not begin with MIDlet- or MicroEdition-The application descriptor MAY contain:(※訳:アプリケーション記述子は下記を含んでも良い)
・ MIDlet-
Overview Package javax.microedition.midletfor each MIDlet
・ MicroEdition-Profile
・ MicroEdition-Configuration
・ MIDlet-Description
・ MIDlet-Icon
・ MIDlet-Info-URL
・ MIDlet-Data-Size
・ MIDlet-Permissions
・ MIDlet-Permissions-Opt
・ MIDlet-Push-
・ MIDlet-Install-Notify
・ MIDlet-Delete-Notify
・ MIDlet-Delete-Confirm
・ Any application-specific attributes that do not begin with MIDlet- or MicroEdition-
原因は不明ですが、どうもS!アプリではマニュフェストからMIDlet-Install-NotifyやMIDlet-Delete-Notifyの記載を削除しなければエラーを回避できないようです。
しかし、NetBeans上の画面ではMIDlet-Install-NotifyやMIDlet-Delete-Notifyを「JADのみに記載する」という設定ができません。代わりにプロジェクトのプロパティファイルを直接書き換える必要があります。どこかの設定ファイルを変更すればNetBeans上の画面でも同じようなことができるんでしょうが、そこまではわかりませんでした。誰か知っていれば教えてください。
詳細は以下の通りです。
書き換えるファイル
(プロジェクトホーム)\nbproject\project.properties
書き換える場所
「manifest.jad」と「manifest.others」の行
書き換え方法
「manifest.others」の行に記載されているMIDlet-Install-NotifyやMIDlet-Delete-Notifyから「\n」までを「manifest.jad」の行に移す。