Jadファイルの設定方法

  • 基本事項
    • 文字エンコードは「UTF-8」で記述する必要があります。
    • jadファイルサイズを、MIDP1.0は3KB未満、MIDP2.0は6KB未満に収める必要があります。
    • 2つのプログラムで、MIDlet-NameとMIDlet-Vendorが同一である場合、この2つのプログラムは同一のものとみなされます。


  • 必須MIDlet属性
    • MIDlet-Name
    • MIDlet-Version
    • MIDlet-Vendor
    • MIDlet-Jar-URL
    • MIDlet-Jar-Size
    • MIDlet-OCL(MIDP1.0のみ)
    • MIDxlet-API(MIDP2.0かつ、MEXA/JSCLの機能を使用する場合のみ)
    • MIDlet-1(一応条件必須属性だが、必須属性とほぼ変わらない)



★ 各属性の説明

  • MIDlet-Name
    • S!アプリ名を記述します。この項目はMIDP1.0なら16Byte以内、MIDP2.0なら32Byte以内に収める必要があります。
  • MIDlet-Version
    • S!アプリのバージョンを記述します。この項目はMIDP1.0なら16Byte以内の文字列、MIDP2.0なら数値である必要があります。
  • MIDlet-Vendor
    • S!アプリのベンダー名を記述します。この項目はMIDP1.0なら16Byte以内、MIDP2.0なら32Byte以内に収める必要があります。
  • MIDlet-Jar-URL
    • Jarファイル名を指定します。1024Byte以内に収める必要があります。
  • MIDlet-Jar-Size
    • Jarファイルのバイト数を指定します。80KByte以内に収める必要があるらしいですが、Jadファイルを3KB以内に収めなければいけないのに、この値が80KBまで使用できるというのはなぞです。
  • MIDlet-OCL
    • JSCLのライブラリを指定します。64KByte以内に収める必要があるらしいですが、こちらもJadファイルを3KB以内に収めなければいけないのに、この値が64KBまで使用できるというのはなぞです。
  • MIDxlet-API
    • MEXA/JSCLのライブラリを指定します。MEXAの機能を使用している場合、JSCL-1.4.2もしくは、MEXAと記載する必要があります。



では次に、以下の条件のときの、実際のJadファイルの記述を出します。

  • ファイル名および、メインクラス名が「sample」
  • 24x24の大きさののアイコンの画像ファイル「icon.png」がresフォルダに入っている。
  • アプリ名が「サンプル」。
  • ベンダー名が「Unknown」。
  • アプリバージョンが「1.0.0」。
  • jarファイルの名前が「sample.jar」。
  • jarファイルのサイズが「24,573byte」。
  • JSCLのバージョンが1.2.1
  • HttpConnectionを使用する。
  • レコードストアのサイズが「1024byte」。
  • 著作権を主張する。
  • 画面サイズを240x260固定にする。(QCIF端末やVGA端末でも、同一画面サイズにするため)
  • SDカードにアプリを保存することを許可する。
  • データフォルダ操作を行う



★ P5、P6、P7端末の場合


MIDlet-1: sample,icon.png,sample
MIDlet-Name: サンプル
MIDlet-Version: 1.0.0
MIDlet-Vendor: Unknown
MIDlet-Jar-URL: sample.jar
MIDlet-Jar-Size: 24573
MIDlet-OCL: JSCL-1.2.1
MIDlet-Network: Y
MIDlet-Icon: icon.png
MIDlet-Data-Size: 1024
MIDlet-Copyright: Y
MIDlet-Application-Range: 0,0
MIDlet-Save: Y
MIDlet-Application-Security: Y
★ 3GC端末の場合

MIDlet-1: sample,icon.png,sample
MIDlet-Name: サンプル
MIDlet-Version: 1.0.0
MIDlet-Vendor: Unknown
MIDlet-Jar-URL: sample.jar
MIDlet-Jar-Size: 24573
MIDxlet-API: JSCL-1.2.2
MIDlet-Permissions: javax.microedition.io.Connector.http,com.j_phone.io.Connector.StorageConnection.read,com.j_phone.io.Connector.StorageConnection.write
MIDlet-Icon: icon.png
MIDlet-Data-Size: 1024
MIDxlet-ScreenSize: 240,260
上記はそのままコピペで使用できるものです。


では解説に行ってみましょう。
まず、「:」と各項目の間にスペースがありますが、これは見易さのためです。
jadファイルは、「MIDlet-xxx:」から各項目までの間スペースは、無視される仕様になっています。


★ P5、P6、P7端末の場合

MIDlet-1: sample,icon.png,sample # 名前,アイコンファイル名,メインクラス名を「,」区切りかつ、スペースなしで記述します。
MIDlet-Name: サンプル # アプリ名を記述します。
MIDlet-Version: 1.0.0 # バージョンを記述します。
MIDlet-Vendor: Unknown # ベンダー名を記述します。
MIDlet-Jar-URL: sample.jar # jarファイル名を記述します。
MIDlet-Jar-Size: 24573 # jarファイルサイズを記述します。
MIDlet-OCL: JSCL-1.2.1 # JSCLのバージョンを記述します。 P5は「1.2.1」、P6は「1.2.2」、P7は「1.3.2」になります。
上位互換はあるので、JSCL1.2.1のAPIしか使用していない場合、P6、P7端末で「1.2.1」と記述しても問題ありません。
MIDlet-Network: Y # HttpConnection通信の利用の有無を記述します。
「Y」は利用する、「N」は利用しないことを表します。この属性が無い場合は「N」を指定したのと同じ扱いになります。
MIDlet-Icon: icon.png # アイコンのパスを記述します。
MIDlet-Data-Size: 1024 # レコードストアのサイズを記述します。
MIDlet-Copyright: Y # 著作権の有無を指定します。「Y」は著作権の有り、「N」は著作権の無しを表します。この属性が無い場合は「N」を指定したのと同じ扱いになります。
MIDlet-Application-Range: 0,0 # 高精細モードの指定です。この項目を入れると、画面サイズを240x260と認識します。この属性を入れないと画面サイズは120x130となってしまいます。
MIDlet-Save: Y # 外部機器への保存許可の有無を指定します。
「Y」は利用する、「N」は利用しないことを表します。この属性が無い場合は「N」を指定したのと同じ扱いになります。
MIDlet-Application-Security: Y # 内部情報取得機能の使用の有無を指定します。
「Y」は利用する、「N」は利用しないことを表します。この属性が無い場合は「N」を指定したのと同じ扱いになります。
内部情報とは、位置情報(緯度、経緯、地名)の取得、メール着信情報の取得、音声着信情報の取得、メールの送信、アドレス帳やメールボックスの操作、データフォルダ操作のことです。
★ 3GC端末の場合

MIDlet-1: sample,icon.png,sample # 名前,アイコンファイル名,メインクラス名を「,」区切りかつ、スペースなしで記述します。
MIDlet-Name: サンプル # アプリ名を記述します。
MIDlet-Version: 1.0.0 # バージョンを記述します。
MIDlet-Vendor: Unknown # ベンダー名を記述します。
MIDlet-Jar-URL: sample.jar # jarファイル名を記述します。
MIDlet-Jar-Size: 24573 # jarファイルサイズを記述します。
MIDxlet-API: JSCL-1.2.2 # MEXA/JSCLのバージョンを記述します。3GCの最下位端末のJSCLのバージョンは1.2.2なので
ここでは「JSCL-1.2.2」としていますが、MEXAに対応している端末をしようするのであれば「MEXA」と記述して問題ありません。

# MIDlet-Permissionsの説明は長くなるので、後に別途記述します。
MIDlet-Permissions: javax.microedition.io.Connector.http,com.j_phone.io.Connector.StorageConnection.read,com.j_phone.io.Connector.StorageConnection.write
MIDlet-Icon: icon.png # アイコンのパスを記述します。
MIDlet-Data-Size: 1024 # レコードストアのサイズを記述します。
MIDxlet-ScreenSize: 240,260 # 高精細モードの指定です。この項目を入れると、画面サイズを240x260と認識します。一部の端末はこの属性を入れないと画面サイズがVGAサイズになってしまいます。

まず、MIDP1.0からMIDP2.0で変更になった属性は以下となります。

・MIDlet-OCL → MIDxlet-API
・MIDlet-Application-Range → MIDxlet-ScreenSize


次に、MIDP1.0からMIDP2.0になって変更し、そしてSoftBankのMIDP2.0端末では無視されるようになった属性は以下となります。

・MIDlet-Network → MIDxlet-Network
・MIDlet-Save → MIDxlet-Save # MIDP2.0の端末は常に外部機器に保存できるようになった。
・MIDlet-Application-Security → MIDxlet-Application-Security


★ MIDlet-Permissionsについて
MIDP2.0になって一部のAPIを使用する場合、警告ダイアログが出るようになりました。
MIDlet-Permissionsは、その警告ダイアログが出るAPIをアプリ内部で使用している場合
そのAPIに適したパーミッションを記述する必要があります。
数が多すぎるため、この場で全てのパーミッションを挙げることはしませんが、主に使用するパーミッションは以下となります。

  • javax.microedition.io.Connector.http
    • HttpConnectionを使用する場合に、このパーミッションを設定してやる必要があります。
    • また、例外としてMIDP1.0/CLDC1.0のみを利用したアプリを、MIDP2.0対応端末向けに提供する場合もこのパーミッションを設定しなければなりません。
  • com.j_phone.io.Connector.StorageConnection.read
    • データフォルダからデータを読み込む場合に、このパーミッションを設定してやる必要があります。
  • com.j_phone.io.Connector.StorageConnection.write
    • データフォルダにデータを書き込む場合、フォルダを作成する場合に、このパーミッションを設定してやる必要があります。

APIに対応するパーミッション開発ガイドMIDP2.0対応端末編
[2.3.2. セキュリティ]内の表2.3.2-2.「セキュリティダイアログ表示対象API一覧」を確認してください。